You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2017/03/30 17:24:30 UTC

[01/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Repository: lucene-solr
Updated Branches:
  refs/heads/jira/solr-6203 2cd3f71d1 -> caed03da4


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/snappy-java-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/snappy-java-LICENSE-ASL.txt b/solr/licenses/snappy-java-LICENSE-ASL.txt
deleted file mode 100644
index 261eeb9..0000000
--- a/solr/licenses/snappy-java-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/snappy-java-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/snappy-java-NOTICE.txt b/solr/licenses/snappy-java-NOTICE.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/server/scripts/map-reduce/set-map-reduce-classpath.sh
----------------------------------------------------------------------
diff --git a/solr/server/scripts/map-reduce/set-map-reduce-classpath.sh b/solr/server/scripts/map-reduce/set-map-reduce-classpath.sh
deleted file mode 100755
index 0d22f63..0000000
--- a/solr/server/scripts/map-reduce/set-map-reduce-classpath.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env bash
-
-######################################################################
-#
-# Running this script will set two environment variables:
-# HADOOP_CLASSPATH
-# HADOOP_LIBJAR: pass this to the -libjar MapReduceIndexBuilder option
-#
-######################################################################
-
-# return absolute path
-function absPath {
-  echo $(cd $(dirname "$1"); pwd)/$(basename "$1")
-}
-
-
-# Find location of this script
-
-sdir="`cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd`"
-
-solr_distrib="$sdir/../../.."
-
-echo `absPath $solr_distrib`
-
-# Setup env variables for MapReduceIndexerTool
-
-# Setup HADOOP_CLASSPATH
-
-dir1=`absPath "$solr_distrib/dist"`
-dir2=`absPath "$solr_distrib/dist/solrj-lib"`
-dir3=`absPath "$solr_distrib/contrib/map-reduce/lib"`
-dir4=`absPath "$solr_distrib/contrib/morphlines-core/lib"`
-dir5=`absPath "$solr_distrib/contrib/morphlines-cell/lib"`
-dir6=`absPath "$solr_distrib/contrib/extraction/lib"`
-dir7=`absPath "$solr_distrib/server/solr-webapp/webapp/WEB-INF/lib"`
-
-# Setup -libjar
-
-lib1=`ls -m $dir1/*.jar | tr -d ' \n'`
-lib2=`ls -m $dir2/*.jar | tr -d ' \n' | sed 's/\,[^\,]*\(log4j\|slf4j\)[^\,]*//g'`
-lib3=`ls -m $dir3/*.jar | tr -d ' \n'`
-lib4=`ls -m $dir4/*.jar | tr -d ' \n'`
-lib5=`ls -m $dir5/*.jar | tr -d ' \n'`
-lib6=`ls -m $dir6/*.jar | tr -d ' \n'`
-lib7=`ls -m $dir7/*.jar | tr -d ' \n'`
-
-export HADOOP_CLASSPATH="$dir1/*:$dir2/*:$dir3/*:$dir4/*:$dir5/*:$dir6/*:$dir7/*"
-export HADOOP_LIBJAR="$lib1,$lib2,$lib3,$lib4,$lib5,$lib6,$lib7"
-
-#echo $HADOOP_CLASSPATH
-#echo $HADOOP_LIBJAR
-


[22/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ro.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ro.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ro.txt
deleted file mode 100644
index 4fdee90..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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\u0103
-aceea
-acei
-aceia
-acel
-acela
-acele
-acelea
-acest
-acesta
-aceste
-acestea
-ace\u015fti
-ace\u015ftia
-acolo
-acum
-ai
-aia
-aib\u0103
-aici
-al
-\u0103la
-ale
-alea
-\u0103lea
-altceva
-altcineva
-am
-ar
-are
-a\u015f
-a\u015fadar
-asemenea
-asta
-\u0103sta
-ast\u0103zi
-astea
-\u0103stea
-\u0103\u015ftia
-asupra
-a\u0163i
-au
-avea
-avem
-ave\u0163i
-azi
-bine
-bucur
-bun\u0103
-ca
-c\u0103
-c\u0103ci
-c�nd
-care
-c\u0103rei
-c\u0103ror
-c\u0103rui
-c�t
-c�te
-c�\u0163i
-c\u0103tre
-c�tva
-ce
-cel
-ceva
-chiar
-c�nd
-cine
-cineva
-c�t
-c�te
-c�\u0163i
-c�tva
-contra
-cu
-cum
-cumva
-cur�nd
-cur�nd
-da
-d\u0103
-dac\u0103
-dar
-datorit\u0103
-de
-deci
-deja
-deoarece
-departe
-de\u015fi
-din
-dinaintea
-dintr
-dintre
-drept
-dup\u0103
-ea
-ei
-el
-ele
-eram
-este
-e\u015fti
-eu
-face
-f\u0103r\u0103
-fi
-fie
-fiecare
-fii
-fim
-fi\u0163i
-iar
-ieri
-�i
-�l
-�mi
-�mpotriva
-�n 
-�nainte
-�naintea
-�nc�t
-�nc�t
-�ncotro
-�ntre
-�ntruc�t
-�ntruc�t
-�\u0163i
-la
-l�ng\u0103
-le
-li
-l�ng\u0103
-lor
-lui
-m\u0103
-m�ine
-mea
-mei
-mele
-mereu
-meu
-mi
-mine
-mult
-mult\u0103
-mul\u0163i
-ne
-nic\u0103ieri
-nici
-nimeni
-ni\u015fte
-noastr\u0103
-noastre
-noi
-no\u015ftri
-nostru
-nu
-ori
-oric�nd
-oricare
-oric�t
-orice
-oric�nd
-oricine
-oric�t
-oricum
-oriunde
-p�n\u0103
-pe
-pentru
-peste
-p�n\u0103
-poate
-pot
-prea
-prima
-primul
-prin
-printr
-sa
-s\u0103
-s\u0103i
-sale
-sau
-s\u0103u
-se
-\u015fi
-s�nt
-s�ntem
-s�nte\u0163i
-spre
-sub
-sunt
-suntem
-sunte\u0163i
-ta
-t\u0103i
-tale
-t\u0103u
-te
-\u0163i
-\u0163ie
-tine
-toat\u0103
-toate
-tot
-to\u0163i
-totu\u015fi
-tu
-un
-una
-unde
-undeva
-unei
-unele
-uneori
-unor
-v\u0103
-vi
-voastr\u0103
-voastre
-voi
-vo\u015ftri
-vostru
-vou\u0103
-vreo
-vreun

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ru.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ru.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ru.txt
deleted file mode 100644
index 6430769..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ru.txt
+++ /dev/null
@@ -1,241 +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.
-
- | 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 `\u0451' is translated to `\u0435'.
-
-\u0438              | and
-\u0432              | in/into
-\u0432\u043e             | alternative form
-\u043d\u0435             | not
-\u0447\u0442\u043e            | what/that
-\u043e\u043d             | he
-\u043d\u0430             | on/onto
-\u044f              | i
-\u0441              | from
-\u0441\u043e             | alternative form
-\u043a\u0430\u043a            | how
-\u0430              | milder form of `no' (but)
-\u0442\u043e             | conjunction and form of `that'
-\u0432\u0441\u0435            | all
-\u043e\u043d\u0430            | she
-\u0442\u0430\u043a            | so, thus
-\u0435\u0433\u043e            | him
-\u043d\u043e             | but
-\u0434\u0430             | yes/and
-\u0442\u044b             | thou
-\u043a              | towards, by
-\u0443              | around, chez
-\u0436\u0435             | intensifier particle
-\u0432\u044b             | you
-\u0437\u0430             | beyond, behind
-\u0431\u044b             | conditional/subj. particle
-\u043f\u043e             | up to, along
-\u0442\u043e\u043b\u044c\u043a\u043e         | only
-\u0435\u0435             | her
-\u043c\u043d\u0435            | to me
-\u0431\u044b\u043b\u043e           | it was
-\u0432\u043e\u0442            | here is/are, particle
-\u043e\u0442             | away from
-\u043c\u0435\u043d\u044f           | me
-\u0435\u0449\u0435            | still, yet, more
-\u043d\u0435\u0442            | no, there isnt/arent
-\u043e              | about
-\u0438\u0437             | out of
-\u0435\u043c\u0443            | to him
-\u0442\u0435\u043f\u0435\u0440\u044c         | now
-\u043a\u043e\u0433\u0434\u0430          | when
-\u0434\u0430\u0436\u0435           | even
-\u043d\u0443             | so, well
-\u0432\u0434\u0440\u0443\u0433          | suddenly
-\u043b\u0438             | interrogative particle
-\u0435\u0441\u043b\u0438           | if
-\u0443\u0436\u0435            | already, but homonym of `narrower'
-\u0438\u043b\u0438            | or
-\u043d\u0438             | neither
-\u0431\u044b\u0442\u044c           | to be
-\u0431\u044b\u043b            | he was
-\u043d\u0435\u0433\u043e           | prepositional form of \u0435\u0433\u043e
-\u0434\u043e             | up to
-\u0432\u0430\u0441            | you accusative
-\u043d\u0438\u0431\u0443\u0434\u044c         | indef. suffix preceded by hyphen
-\u043e\u043f\u044f\u0442\u044c          | again
-\u0443\u0436             | already, but homonym of `adder'
-\u0432\u0430\u043c            | to you
-\u0441\u043a\u0430\u0437\u0430\u043b         | he said
-\u0432\u0435\u0434\u044c           | particle `after all'
-\u0442\u0430\u043c            | there
-\u043f\u043e\u0442\u043e\u043c          | then
-\u0441\u0435\u0431\u044f           | oneself
-\u043d\u0438\u0447\u0435\u0433\u043e         | nothing
-\u0435\u0439             | to her
-\u043c\u043e\u0436\u0435\u0442          | usually with `\u0431\u044b\u0442\u044c' as `maybe'
-\u043e\u043d\u0438            | they
-\u0442\u0443\u0442            | here
-\u0433\u0434\u0435            | where
-\u0435\u0441\u0442\u044c           | there is/are
-\u043d\u0430\u0434\u043e           | got to, must
-\u043d\u0435\u0439            | prepositional form of  \u0435\u0439
-\u0434\u043b\u044f            | for
-\u043c\u044b             | we
-\u0442\u0435\u0431\u044f           | thee
-\u0438\u0445             | them, their
-\u0447\u0435\u043c            | than
-\u0431\u044b\u043b\u0430           | she was
-\u0441\u0430\u043c            | self
-\u0447\u0442\u043e\u0431           | in order to
-\u0431\u0435\u0437            | without
-\u0431\u0443\u0434\u0442\u043e          | as if
-\u0447\u0435\u043b\u043e\u0432\u0435\u043a        | man, person, one
-\u0447\u0435\u0433\u043e           | genitive form of `what'
-\u0440\u0430\u0437            | once
-\u0442\u043e\u0436\u0435           | also
-\u0441\u0435\u0431\u0435           | to oneself
-\u043f\u043e\u0434            | beneath
-\u0436\u0438\u0437\u043d\u044c          | life
-\u0431\u0443\u0434\u0435\u0442          | will be
-\u0436              | short form of intensifer particle `\u0436\u0435'
-\u0442\u043e\u0433\u0434\u0430          | then
-\u043a\u0442\u043e            | who
-\u044d\u0442\u043e\u0442           | this
-\u0433\u043e\u0432\u043e\u0440\u0438\u043b        | was saying
-\u0442\u043e\u0433\u043e           | genitive form of `that'
-\u043f\u043e\u0442\u043e\u043c\u0443         | for that reason
-\u044d\u0442\u043e\u0433\u043e          | genitive form of `this'
-\u043a\u0430\u043a\u043e\u0439          | which
-\u0441\u043e\u0432\u0441\u0435\u043c         | altogether
-\u043d\u0438\u043c            | prepositional form of `\u0435\u0433\u043e', `\u043e\u043d\u0438'
-\u0437\u0434\u0435\u0441\u044c          | here
-\u044d\u0442\u043e\u043c           | prepositional form of `\u044d\u0442\u043e\u0442'
-\u043e\u0434\u0438\u043d           | one
-\u043f\u043e\u0447\u0442\u0438          | almost
-\u043c\u043e\u0439            | my
-\u0442\u0435\u043c            | instrumental/dative plural of `\u0442\u043e\u0442', `\u0442\u043e'
-\u0447\u0442\u043e\u0431\u044b          | full form of `in order that'
-\u043d\u0435\u0435            | her (acc.)
-\u043a\u0430\u0436\u0435\u0442\u0441\u044f        | it seems
-\u0441\u0435\u0439\u0447\u0430\u0441         | now
-\u0431\u044b\u043b\u0438           | they were
-\u043a\u0443\u0434\u0430           | where to
-\u0437\u0430\u0447\u0435\u043c          | why
-\u0441\u043a\u0430\u0437\u0430\u0442\u044c        | to say
-\u0432\u0441\u0435\u0445           | all (acc., gen. preposn. plural)
-\u043d\u0438\u043a\u043e\u0433\u0434\u0430        | never
-\u0441\u0435\u0433\u043e\u0434\u043d\u044f        | today
-\u043c\u043e\u0436\u043d\u043e          | possible, one can
-\u043f\u0440\u0438            | by
-\u043d\u0430\u043a\u043e\u043d\u0435\u0446        | finally
-\u0434\u0432\u0430            | two
-\u043e\u0431             | alternative form of `\u043e', about
-\u0434\u0440\u0443\u0433\u043e\u0439         | another
-\u0445\u043e\u0442\u044c           | even
-\u043f\u043e\u0441\u043b\u0435          | after
-\u043d\u0430\u0434            | above
-\u0431\u043e\u043b\u044c\u0448\u0435         | more
-\u0442\u043e\u0442            | that one (masc.)
-\u0447\u0435\u0440\u0435\u0437          | across, in
-\u044d\u0442\u0438            | these
-\u043d\u0430\u0441            | us
-\u043f\u0440\u043e            | about
-\u0432\u0441\u0435\u0433\u043e          | in all, only, of all
-\u043d\u0438\u0445            | prepositional form of `\u043e\u043d\u0438' (they)
-\u043a\u0430\u043a\u0430\u044f          | which, feminine
-\u043c\u043d\u043e\u0433\u043e          | lots
-\u0440\u0430\u0437\u0432\u0435          | interrogative particle
-\u0441\u043a\u0430\u0437\u0430\u043b\u0430        | she said
-\u0442\u0440\u0438            | three
-\u044d\u0442\u0443            | this, acc. fem. sing.
-\u043c\u043e\u044f            | my, feminine
-\u0432\u043f\u0440\u043e\u0447\u0435\u043c        | moreover, besides
-\u0445\u043e\u0440\u043e\u0448\u043e         | good
-\u0441\u0432\u043e\u044e           | ones own, acc. fem. sing.
-\u044d\u0442\u043e\u0439           | oblique form of `\u044d\u0442\u0430', fem. `this'
-\u043f\u0435\u0440\u0435\u0434          | in front of
-\u0438\u043d\u043e\u0433\u0434\u0430         | sometimes
-\u043b\u0443\u0447\u0448\u0435          | better
-\u0447\u0443\u0442\u044c           | a little
-\u0442\u043e\u043c            | preposn. form of `that one'
-\u043d\u0435\u043b\u044c\u0437\u044f         | one must not
-\u0442\u0430\u043a\u043e\u0439          | such a one
-\u0438\u043c             | to them
-\u0431\u043e\u043b\u0435\u0435          | more
-\u0432\u0441\u0435\u0433\u0434\u0430         | always
-\u043a\u043e\u043d\u0435\u0447\u043d\u043e        | of course
-\u0432\u0441\u044e            | acc. fem. sing of `all'
-\u043c\u0435\u0436\u0434\u0443          | between
-
-
-  | b: some paradigms
-  |
-  | personal pronouns
-  |
-  | \u044f  \u043c\u0435\u043d\u044f  \u043c\u043d\u0435  \u043c\u043d\u043e\u0439  [\u043c\u043d\u043e\u044e]
-  | \u0442\u044b  \u0442\u0435\u0431\u044f  \u0442\u0435\u0431\u0435  \u0442\u043e\u0431\u043e\u0439  [\u0442\u043e\u0431\u043e\u044e]
-  | \u043e\u043d  \u0435\u0433\u043e  \u0435\u043c\u0443  \u0438\u043c  [\u043d\u0435\u0433\u043e, \u043d\u0435\u043c\u0443, \u043d\u0438\u043c]
-  | \u043e\u043d\u0430  \u0435\u0435  \u044d\u0438  \u0435\u044e  [\u043d\u0435\u0435, \u043d\u044d\u0438, \u043d\u0435\u044e]
-  | \u043e\u043d\u043e  \u0435\u0433\u043e  \u0435\u043c\u0443  \u0438\u043c  [\u043d\u0435\u0433\u043e, \u043d\u0435\u043c\u0443, \u043d\u0438\u043c]
-  |
-  | \u043c\u044b  \u043d\u0430\u0441  \u043d\u0430\u043c  \u043d\u0430\u043c\u0438
-  | \u0432\u044b  \u0432\u0430\u0441  \u0432\u0430\u043c  \u0432\u0430\u043c\u0438
-  | \u043e\u043d\u0438  \u0438\u0445  \u0438\u043c  \u0438\u043c\u0438  [\u043d\u0438\u0445, \u043d\u0438\u043c, \u043d\u0438\u043c\u0438]
-  |
-  |   \u0441\u0435\u0431\u044f  \u0441\u0435\u0431\u0435  \u0441\u043e\u0431\u043e\u0439   [\u0441\u043e\u0431\u043e\u044e]
-  |
-  | demonstrative pronouns: \u044d\u0442\u043e\u0442 (this), \u0442\u043e\u0442 (that)
-  |
-  | \u044d\u0442\u043e\u0442  \u044d\u0442\u0430  \u044d\u0442\u043e  \u044d\u0442\u0438
-  | \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u044b  \u044d\u0442\u043e  \u044d\u0442\u0438
-  | \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u0438\u0445
-  | \u044d\u0442\u043e\u043c\u0443  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u043c\u0443  \u044d\u0442\u0438\u043c
-  | \u044d\u0442\u0438\u043c  \u044d\u0442\u043e\u0439  \u044d\u0442\u0438\u043c  [\u044d\u0442\u043e\u044e]  \u044d\u0442\u0438\u043c\u0438
-  | \u044d\u0442\u043e\u043c  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u043c  \u044d\u0442\u0438\u0445
-  |
-  | \u0442\u043e\u0442  \u0442\u0430  \u0442\u043e  \u0442\u0435
-  | \u0442\u043e\u0433\u043e  \u0442\u0443  \u0442\u043e  \u0442\u0435
-  | \u0442\u043e\u0433\u043e  \u0442\u043e\u0439  \u0442\u043e\u0433\u043e  \u0442\u0435\u0445
-  | \u0442\u043e\u043c\u0443  \u0442\u043e\u0439  \u0442\u043e\u043c\u0443  \u0442\u0435\u043c
-  | \u0442\u0435\u043c  \u0442\u043e\u0439  \u0442\u0435\u043c  [\u0442\u043e\u044e]  \u0442\u0435\u043c\u0438
-  | \u0442\u043e\u043c  \u0442\u043e\u0439  \u0442\u043e\u043c  \u0442\u0435\u0445
-  |
-  | determinative pronouns
-  |
-  | (a) \u0432\u0435\u0441\u044c (all)
-  |
-  | \u0432\u0435\u0441\u044c  \u0432\u0441\u044f  \u0432\u0441\u0435  \u0432\u0441\u0435
-  | \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u044e  \u0432\u0441\u0435  \u0432\u0441\u0435
-  | \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u0435\u0445
-  | \u0432\u0441\u0435\u043c\u0443  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c\u0443  \u0432\u0441\u0435\u043c
-  | \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c  [\u0432\u0441\u0435\u044e]  \u0432\u0441\u0435\u043c\u0438
-  | \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0445
-  |
-  | (b) \u0441\u0430\u043c (himself etc)
-  |
-  | \u0441\u0430\u043c  \u0441\u0430\u043c\u0430  \u0441\u0430\u043c\u043e  \u0441\u0430\u043c\u0438
-  | \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0430\u043c\u0443  \u0441\u0430\u043c\u043e  \u0441\u0430\u043c\u0438\u0445
-  | \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u0433\u043e  \u0441\u0430\u043c\u0438\u0445
-  | \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u043c\u0443  \u0441\u0430\u043c\u0438\u043c
-  | \u0441\u0430\u043c\u0438\u043c  \u0441\u0430\u043c\u043e\u0439  \u0441\u0430\u043c\u0438\u043c  [\u0441\u0430\u043c\u043e\u044e]  \u0441\u0430\u043c\u0438\u043c\u0438
-  | \u0441\u0430\u043c\u043e\u043c \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u043c  \u0441\u0430\u043c\u0438\u0445
-  |
-  | stems of verbs `to be', `to have', `to do' and modal
-  |
-  | \u0431\u044b\u0442\u044c  \u0431\u044b  \u0431\u0443\u0434  \u0431\u044b\u0432  \u0435\u0441\u0442\u044c  \u0441\u0443\u0442\u044c
-  | \u0438\u043c\u0435
-  | \u0434\u0435\u043b
-  | \u043c\u043e\u0433   \u043c\u043e\u0436  \u043c\u043e\u0447\u044c
-  | \u0443\u043c\u0435
-  | \u0445\u043e\u0447  \u0445\u043e\u0442
-  | \u0434\u043e\u043b\u0436
-  | \u043c\u043e\u0436\u043d
-  | \u043d\u0443\u0436\u043d
-  | \u043d\u0435\u043b\u044c\u0437\u044f
-

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_th.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_th.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_th.txt
deleted file mode 100644
index 07f0fab..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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
-\u0e44\u0e27\u0e49
-\u0e44\u0e21\u0e48
-\u0e44\u0e1b
-\u0e44\u0e14\u0e49
-\u0e43\u0e2b\u0e49
-\u0e43\u0e19
-\u0e42\u0e14\u0e22
-\u0e41\u0e2b\u0e48\u0e07
-\u0e41\u0e25\u0e49\u0e27
-\u0e41\u0e25\u0e30
-\u0e41\u0e23\u0e01
-\u0e41\u0e1a\u0e1a
-\u0e41\u0e15\u0e48
-\u0e40\u0e2d\u0e07
-\u0e40\u0e2b\u0e47\u0e19
-\u0e40\u0e25\u0e22
-\u0e40\u0e23\u0e34\u0e48\u0e21
-\u0e40\u0e23\u0e32
-\u0e40\u0e21\u0e37\u0e48\u0e2d
-\u0e40\u0e1e\u0e37\u0e48\u0e2d
-\u0e40\u0e1e\u0e23\u0e32\u0e30
-\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23
-\u0e40\u0e1b\u0e47\u0e19
-\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22
-\u0e40\u0e1b\u0e34\u0e14
-\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01
-\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19
-\u0e40\u0e14\u0e35\u0e22\u0e27
-\u0e40\u0e0a\u0e48\u0e19
-\u0e40\u0e09\u0e1e\u0e32\u0e30
-\u0e40\u0e04\u0e22
-\u0e40\u0e02\u0e49\u0e32
-\u0e40\u0e02\u0e32
-\u0e2d\u0e35\u0e01
-\u0e2d\u0e32\u0e08
-\u0e2d\u0e30\u0e44\u0e23
-\u0e2d\u0e2d\u0e01
-\u0e2d\u0e22\u0e48\u0e32\u0e07
-\u0e2d\u0e22\u0e39\u0e48
-\u0e2d\u0e22\u0e32\u0e01
-\u0e2b\u0e32\u0e01
-\u0e2b\u0e25\u0e32\u0e22
-\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01
-\u0e2b\u0e25\u0e31\u0e07
-\u0e2b\u0e23\u0e37\u0e2d
-\u0e2b\u0e19\u0e36\u0e48\u0e07
-\u0e2a\u0e48\u0e27\u0e19
-\u0e2a\u0e48\u0e07
-\u0e2a\u0e38\u0e14
-\u0e2a\u0e4d\u0e32\u0e2b\u0e23\u0e31\u0e1a
-\u0e27\u0e48\u0e32
-\u0e27\u0e31\u0e19
-\u0e25\u0e07
-\u0e23\u0e48\u0e27\u0e21
-\u0e23\u0e32\u0e22
-\u0e23\u0e31\u0e1a
-\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07
-\u0e23\u0e27\u0e21
-\u0e22\u0e31\u0e07
-\u0e21\u0e35
-\u0e21\u0e32\u0e01
-\u0e21\u0e32
-\u0e1e\u0e23\u0e49\u0e2d\u0e21
-\u0e1e\u0e1a
-\u0e1c\u0e48\u0e32\u0e19
-\u0e1c\u0e25
-\u0e1a\u0e32\u0e07
-\u0e19\u0e48\u0e32
-\u0e19\u0e35\u0e49
-\u0e19\u0e4d\u0e32
-\u0e19\u0e31\u0e49\u0e19
-\u0e19\u0e31\u0e01
-\u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01
-\u0e17\u0e38\u0e01
-\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14
-\u0e17\u0e35\u0e48
-\u0e17\u0e4d\u0e32\u0e43\u0e2b\u0e49
-\u0e17\u0e4d\u0e32
-\u0e17\u0e32\u0e07
-\u0e17\u0e31\u0e49\u0e07\u0e19\u0e35\u0e49
-\u0e17\u0e31\u0e49\u0e07
-\u0e16\u0e49\u0e32
-\u0e16\u0e39\u0e01
-\u0e16\u0e36\u0e07
-\u0e15\u0e49\u0e2d\u0e07
-\u0e15\u0e48\u0e32\u0e07\u0e46
-\u0e15\u0e48\u0e32\u0e07
-\u0e15\u0e48\u0e2d
-\u0e15\u0e32\u0e21
-\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48
-\u0e15\u0e31\u0e49\u0e07
-\u0e14\u0e49\u0e32\u0e19
-\u0e14\u0e49\u0e27\u0e22
-\u0e14\u0e31\u0e07
-\u0e0b\u0e36\u0e48\u0e07
-\u0e0a\u0e48\u0e27\u0e07
-\u0e08\u0e36\u0e07
-\u0e08\u0e32\u0e01
-\u0e08\u0e31\u0e14
-\u0e08\u0e30
-\u0e04\u0e37\u0e2d
-\u0e04\u0e27\u0e32\u0e21
-\u0e04\u0e23\u0e31\u0e49\u0e07
-\u0e04\u0e07
-\u0e02\u0e36\u0e49\u0e19
-\u0e02\u0e2d\u0e07
-\u0e02\u0e2d
-\u0e02\u0e13\u0e30
-\u0e01\u0e48\u0e2d\u0e19
-\u0e01\u0e47
-\u0e01\u0e32\u0e23
-\u0e01\u0e31\u0e1a
-\u0e01\u0e31\u0e19
-\u0e01\u0e27\u0e48\u0e32
-\u0e01\u0e25\u0e48\u0e32\u0e27

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_tr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_tr.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_tr.txt
deleted file mode 100644
index 84d9408..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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\u0131\u015f
-alt\u0131
-ama
-ancak
-arada
-asl\u0131nda
-ayr\u0131ca
-bana
-baz\u0131
-belki
-ben
-benden
-beni
-benim
-beri
-be\u015f
-bile
-bin
-bir
-bir�ok
-biri
-birka�
-birkez
-bir\u015fey
-bir\u015feyi
-biz
-bize
-bizden
-bizi
-bizim
-b�yle
-b�ylece
-bu
-buna
-bunda
-bundan
-bunlar
-bunlar\u0131
-bunlar\u0131n
-bunu
-bunun
-burada
-�ok
-��nk�
-da
-daha
-dahi
-de
-defa
-de\u011fil
-di\u011fer
-diye
-doksan
-dokuz
-dolay\u0131
-dolay\u0131s\u0131yla
-d�rt
-edecek
-eden
-ederek
-edilecek
-ediliyor
-edilmesi
-ediyor
-e\u011fer
-elli
-en
-etmesi
-etti
-etti\u011fi
-etti\u011fini
-gibi
-g�re
-halen
-hangi
-hatta
-hem
-hen�z
-hep
-hepsi
-her
-herhangi
-herkesin
-hi�
-hi�bir
-i�in
-iki
-ile
-ilgili
-ise
-i\u015fte
-itibaren
-itibariyle
-kadar
-kar\u015f\u0131n
-katrilyon
-kendi
-kendilerine
-kendini
-kendisi
-kendisine
-kendisini
-kez
-ki
-kim
-kimden
-kime
-kimi
-kimse
-k\u0131rk
-milyar
-milyon
-mu
-m�
-m\u0131
-nas\u0131l
-ne
-neden
-nedenle
-nerde
-nerede
-nereye
-niye
-ni�in
-o
-olan
-olarak
-oldu
-oldu\u011fu
-oldu\u011funu
-olduklar\u0131n\u0131
-olmad\u0131
-olmad\u0131\u011f\u0131
-olmak
-olmas\u0131
-olmayan
-olmaz
-olsa
-olsun
-olup
-olur
-olursa
-oluyor
-on
-ona
-ondan
-onlar
-onlardan
-onlar\u0131
-onlar\u0131n
-onu
-onun
-otuz
-oysa
-�yle
-pek
-ra\u011fmen
-sadece
-sanki
-sekiz
-seksen
-sen
-senden
-seni
-senin
-siz
-sizden
-sizi
-sizin
-\u015fey
-\u015feyden
-\u015feyi
-\u015feyler
-\u015f�yle
-\u015fu
-\u015funa
-\u015funda
-\u015fundan
-\u015funlar\u0131
-\u015funu
-taraf\u0131ndan
-trilyon
-t�m
-��
-�zere
-var
-vard\u0131
-ve
-veya
-ya
-yani
-yapacak
-yap\u0131lan
-yap\u0131lmas\u0131
-yap\u0131yor
-yapmak
-yapt\u0131
-yapt\u0131\u011f\u0131
-yapt\u0131\u011f\u0131n\u0131
-yapt\u0131klar\u0131
-yedi
-yerine
-yetmi\u015f
-yine
-yirmi
-yoksa
-y�z
-zaten

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/userdict_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/userdict_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/userdict_ja.txt
deleted file mode 100644
index 6f0368e..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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
-\u65e5\u672c\u7d4c\u6e08\u65b0\u805e,\u65e5\u672c \u7d4c\u6e08 \u65b0\u805e,\u30cb\u30db\u30f3 \u30b1\u30a4\u30b6\u30a4 \u30b7\u30f3\u30d6\u30f3,\u30ab\u30b9\u30bf\u30e0\u540d\u8a5e
-\u95a2\u897f\u56fd\u969b\u7a7a\u6e2f,\u95a2\u897f \u56fd\u969b \u7a7a\u6e2f,\u30ab\u30f3\u30b5\u30a4 \u30b3\u30af\u30b5\u30a4 \u30af\u30a6\u30b3\u30a6,\u30ab\u30b9\u30bf\u30e0\u540d\u8a5e
-
-# Custom segmentation for compound katakana
-\u30c8\u30fc\u30c8\u30d0\u30c3\u30b0,\u30c8\u30fc\u30c8 \u30d0\u30c3\u30b0,\u30c8\u30fc\u30c8 \u30d0\u30c3\u30b0,\u304b\u305a\u30ab\u30ca\u540d\u8a5e
-\u30b7\u30e7\u30eb\u30c0\u30fc\u30d0\u30c3\u30b0,\u30b7\u30e7\u30eb\u30c0\u30fc \u30d0\u30c3\u30b0,\u30b7\u30e7\u30eb\u30c0\u30fc \u30d0\u30c3\u30b0,\u304b\u305a\u30ab\u30ca\u540d\u8a5e
-
-# Custom reading for former sumo wrestler
-\u671d\u9752\u9f8d,\u671d\u9752\u9f8d,\u30a2\u30b5\u30b7\u30e7\u30a6\u30ea\u30e5\u30a6,\u30ab\u30b9\u30bf\u30e0\u4eba\u540d

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/protwords.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/protwords.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/protwords.txt
deleted file mode 100644
index 1dfc0ab..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/schema.xml b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/schema.xml
deleted file mode 100644
index 11c1f76..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/schema.xml
+++ /dev/null
@@ -1,927 +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.
--->
-
-<!--  
- This is the Solr schema file. This file should be named "schema.xml" and
- should be in the conf directory under the solr home
- (i.e. ./solr/conf/schema.xml by default) 
- or located where the classloader for the Solr webapp can find it.
-
- This example schema is the recommended starting point for users.
- It should be kept correct and concise, usable out-of-the-box.
-
- For more information, on how to customize this file, please see
- http://wiki.apache.org/solr/SchemaXml
-
- PERFORMANCE NOTE: this schema includes many optional features and should not
- be used for benchmarking.  To improve performance one could
-  - set stored="false" for all fields possible (esp large fields) when you
-    only need to search on the field but don't need to return the original
-    value.
-  - set indexed="false" if you don't need to search on the field, but only
-    return the field as a result of searching on other indexed fields.
-  - remove all unneeded copyField statements
-  - for best index size and searching performance, set "index" to false
-    for all general text fields, use copyField to copy them to the
-    catchall "text" field, and use that for searching.
-  - For maximum indexing performance, use the ConcurrentUpdateSolrServer
-    java client.
-  - Remember to run the JVM in server mode, and use a higher logging level
-    that avoids logging every request
--->
-
-<schema name="example" version="1.6">
-  <!-- attribute "name" is the name of this schema and is only used for display purposes.
-       version="x.y" is Solr's version number for the schema syntax and 
-       semantics.  It should not normally be changed by applications.
-
-       1.0: multiValued attribute did not exist, all fields are multiValued 
-            by nature
-       1.1: multiValued attribute introduced, false by default 
-       1.2: omitTermFreqAndPositions attribute introduced, true by default 
-            except for text fields.
-       1.3: removed optional field compress feature
-       1.4: autoGeneratePhraseQueries attribute introduced to drive QueryParser
-            behavior when a single string produces multiple tokens.  Defaults 
-            to off for version >= 1.4
-       1.5: omitNorms defaults to true for primitive field types 
-            (int, float, boolean, string...)
-       1.6: useDocValuesAsStored defaults to true.
-     -->
-
-
-  <!-- Valid attributes for fields:
-    name: mandatory - the name for the field
-    type: mandatory - the name of a field type from the 
-      fieldType section
-    indexed: true if this field should be indexed (searchable or sortable)
-    stored: true if this field should be retrievable
-    multiValued: true if this field may contain multiple values per document
-    omitNorms: (expert) set to true to omit the norms associated with
-      this field (this disables length normalization and index-time
-      boosting for the field, and saves some memory).  Only full-text
-      fields or fields that need an index-time boost need norms.
-      Norms are omitted for primitive (non-analyzed) types by default.
-    termVectors: [false] set to true to store the term vector for a
-      given field.
-      When using MoreLikeThis, fields used for similarity should be
-      stored for best performance.
-    termPositions: Store position information with the term vector.  
-      This will increase storage costs.
-    termOffsets: Store offset information with the term vector. This 
-      will increase storage costs.
-    required: The field is required.  It will throw an error if the
-      value does not exist
-    default: a value that should be used if no value is specified
-      when adding a document.
-  -->
-
-  <!-- field names should consist of alphanumeric or underscore characters only and
-     not start with a digit.  This is not currently strictly enforced,
-     but other field names will not have first class support from all components
-     and back compatibility is not guaranteed.  Names with both leading and
-     trailing underscores (e.g. _version_) are reserved.
-  -->
-
-  <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
-  <field name="user_friends_count" type="tint" indexed="true" stored="true"/>
-  <field name="user_location" type="lowercase" indexed="true" stored="true"/>
-  <field name="user_description" type="text_en" indexed="true" stored="false"/>
-  <field name="user_statuses_count" type="tint" indexed="true" stored="true"/>
-  <field name="user_followers_count" type="tint" indexed="true" stored="true"/>
-  <field name="user_name" type="text_en" indexed="true" stored="true"/>
-  <field name="user_screen_name" type="text_en" indexed="true" stored="true"/>
-  <field name="created_at" type="tdate" indexed="true" stored="true"/>
-  <field name="text" type="text_en" indexed="true" stored="true" multiValued="true"/>
-  <field name="retweet_count" type="tint" indexed="true" stored="true"/>
-  <field name="retweeted" type="boolean" indexed="true" stored="false"/>
-  <field name="in_reply_to_user_id" type="long" indexed="true" stored="true"/>
-  <field name="source" type="lowercase" indexed="true" stored="true"/>
-  <field name="in_reply_to_status_id" type="long" indexed="true" stored="true" multiValued="true"/>
-  <field name="media_url_https" type="string" indexed="false" stored="true"/>
-  <field name="expanded_url" type="string" indexed="false" stored="true"/>
-
-  <!-- file metadata -->
-  <field name="file_download_url" type="string" indexed="false" stored="true"/>
-  <field name="file_upload_url" type="string" indexed="false" stored="true"/>
-  <field name="file_scheme" type="string" indexed="true" stored="true"/>
-  <field name="file_host" type="string" indexed="true" stored="true"/>
-  <field name="file_port" type="int" indexed="true" stored="true"/>
-  <field name="file_path" type="string" indexed="true" stored="true"/>
-  <field name="file_name" type="string" indexed="true" stored="true"/>
-  <field name="file_length" type="tlong" indexed="true" stored="true"/>
-  <field name="file_last_modified" type="tlong" indexed="true" stored="true"/>
-  <field name="file_owner" type="string" indexed="true" stored="true"/>
-  <field name="file_group" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_user" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_group" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_other" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_stickybit" type="boolean" indexed="true" stored="true"/>
-
-  <!-- tika metadata -->
-  <field name="content_type" type="lowercase" indexed="true" stored="true"/>
-
-  <field name="_version_" type="long" indexed="true" stored="true"/>
-  <dynamicField name="ignored_*" type="ignored"/>
-
-
-  <!-- Field to use to determine and enforce document uniqueness. 
-       Unless this field is marked with required="false", it will be a required field
-    -->
-  <uniqueKey>id</uniqueKey>
-
-  <!-- DEPRECATED: The defaultSearchField is consulted by various query parsers when
-   parsing a query string that isn't explicit about the field.  Machine (non-user)
-   generated queries are best made explicit, or they can use the "df" request parameter
-   which takes precedence over this.
-   Note: Un-commenting defaultSearchField will be insufficient if your request handler
-   in solrconfig.xml defines "df", which takes precedence. That would need to be removed.
-  <defaultSearchField>text</defaultSearchField> -->
-
-  <!-- DEPRECATED: The defaultOperator (AND|OR) is consulted by various query parsers
-   when parsing a query string to determine if a clause of the query should be marked as
-   required or optional, assuming the clause isn't already marked by some operator.
-   The default is OR, which is generally assumed so it is not a good idea to change it
-   globally here.  The "q.op" request parameter takes precedence over this.
-  <solrQueryParser defaultOperator="OR"/> -->
-
-  <!-- copyField commands copy one field to another at the time a document
-        is added to the index.  It's used either to index the same field differently,
-        or to add multiple fields to the same field for easier/faster searching.  -->
-
-
-  <!-- field type definitions. The "name" attribute is
-     just a label to be used by field definitions.  The "class"
-     attribute and any other attributes determine the real
-     behavior of the fieldType.
-       Class names starting with "solr" refer to java classes in a
-     standard package such as org.apache.solr.analysis
-  -->
-
-  <!-- The StrField type is not analyzed, but indexed/stored verbatim. -->
-  <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
-
-  <!-- boolean type: "true" or "false" -->
-  <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
-
-  <!-- sortMissingLast and sortMissingFirst attributes are optional attributes are
-       currently supported on types that are sorted internally as strings
-       and on numeric types.
-     This includes "string","boolean", and, as of 3.5 (and 4.x),
-     int, float, long, date, double, including the "Trie" variants.
-     - If sortMissingLast="true", then a sort on this field will cause documents
-       without the field to come after documents with the field,
-       regardless of the requested sort order (asc or desc).
-     - If sortMissingFirst="true", then a sort on this field will cause documents
-       without the field to come before documents with the field,
-       regardless of the requested sort order.
-     - If sortMissingLast="false" and sortMissingFirst="false" (the default),
-       then default lucene sorting will be used which places docs without the
-       field first in an ascending sort and last in a descending sort.
-  -->
-
-  <!--
-    Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
-  -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!--
-   Numeric field types that index each value at various levels of precision
-   to accelerate range queries when the number of values between the range
-   endpoints is large. See the javadoc for LegacyNumericRangeQuery for internal
-   implementation details.
-
-   Smaller precisionStep values (specified in bits) will lead to more tokens
-   indexed per value, slightly larger index size, and faster range queries.
-   A precisionStep of 0 disables indexing at different precision levels.
-  -->
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
-
-  <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
-       is a more restricted form of the canonical representation of dateTime
-       http://www.w3.org/TR/xmlschema-2/#dateTime    
-       The trailing "Z" designates UTC time and is mandatory.
-       Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
-       All other components are mandatory.
-
-       Expressions can also be used to denote calculations that should be
-       performed relative to "NOW" to determine the value, ie...
-
-             NOW/HOUR
-                ... Round to the start of the current hour
-             NOW-1DAY
-                ... Exactly 1 day prior to now
-             NOW/DAY+6MONTHS+3DAYS
-                ... 6 months and 3 days in the future from the start of
-                    the current day
-                    
-       Consult the TrieDateField javadocs for more information.
-
-       Note: For faster range queries, consider the tdate type
-    -->
-  <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!-- A Trie based date field for faster date range queries and date faceting. -->
-  <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
-
-
-  <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
-  <fieldType name="binary" class="solr.BinaryField"/>
-
-  <!-- The "RandomSortField" is not used to store or search any
-       data.  You can declare fields of this type it in your schema
-       to generate pseudo-random orderings of your docs for sorting 
-       or function purposes.  The ordering is generated based on the field
-       name and the version of the index. As long as the index version
-       remains unchanged, and the same field name is reused,
-       the ordering of the docs will be consistent.  
-       If you want different psuedo-random orderings of documents,
-       for the same version of the index, use a dynamicField and
-       change the field name in the request.
-   -->
-  <fieldType name="random" class="solr.RandomSortField" indexed="true"/>
-
-  <!-- solr.TextField allows the specification of custom text analyzers
-       specified as a tokenizer and a list of token filters. Different
-       analyzers may be specified for indexing and querying.
-
-       The optional positionIncrementGap puts space between multiple fields of
-       this type on the same document, with the purpose of preventing false phrase
-       matching across fields.
-
-       For more info on customizing your analyzer chain, please see
-       http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
-   -->
-
-  <!-- One can also specify an existing Analyzer class that has a
-       default constructor via the class attribute on the analyzer element.
-       Example:
-  <fieldType name="text_greek" class="solr.TextField">
-    <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
-  </fieldType>
-  -->
-
-  <!-- A text field that only splits on whitespace for exact matching of words -->
-  <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A general text field that has reasonable, generic
-       cross-language defaults: it tokenizes with StandardTokenizer,
- removes stop words from case-insensitive "stopwords.txt"
- (empty by default), and down cases.  At query time only, it
- also applies synonyms. -->
-  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A text field with defaults appropriate for English: it
-       tokenizes with StandardTokenizer, removes English stop words
-       (lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
-       finally applies Porter's stemming.  The query time analyzer
-       also applies synonyms from synonyms.txt. -->
-  <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <!-- Case insensitive stop word removal. -->
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.EnglishPossessiveFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
-            <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      -->
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.EnglishPossessiveFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
-            <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      -->
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A text field with defaults appropriate for English, plus
- aggressive word-splitting and autophrase features enabled.
- This field is just like text_en, except it adds
- WordDelimiterFilter to enable splitting and matching of
- words on case-change, alpha numeric boundaries, and
- non-alphanumeric chars.  This means certain compound word
- cases will work, for example query "wi fi" will match
- document "WiFi" or "wi-fi".
-      -->
-  <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100"
-             autoGeneratePhraseQueries="true">
-    <analyzer type="index">
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <!-- Case insensitive stop word removal. -->
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
-              catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
-              catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
-       but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
-  <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100"
-             autoGeneratePhraseQueries="true">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
-              catenateNumbers="1" catenateAll="0"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-           possible with WordDelimiterFilter in conjuncton with stemming. -->
-      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Just like text_general except it reverses the characters of
- each token, to enable more efficient leading wildcard queries. -->
-  <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
-              maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- charFilter + WhitespaceTokenizer  -->
-  <!--
-  <fieldType name="text_char_norm" class="solr.TextField" positionIncrementGap="100" >
-    <analyzer>
-      <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-  -->
-
-  <!-- This is an example of using the KeywordTokenizer along
-       With various TokenFilterFactories to produce a sortable field
-       that does not include some properties of the source text
-    -->
-  <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
-    <analyzer>
-      <!-- KeywordTokenizer does no actual tokenizing, so the entire
-           input string is preserved as a single token
-        -->
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-      <!-- The LowerCase TokenFilter does what you expect, which can be
-           when you want your sorting to be case insensitive
-        -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <!-- The TrimFilter removes any leading or trailing whitespace -->
-      <filter class="solr.TrimFilterFactory"/>
-      <!-- The PatternReplaceFilter gives you the flexibility to use
-           Java Regular expression to replace any sequence of characters
-           matching a pattern with an arbitrary replacement string, 
-           which may include back references to portions of the original
-           string matched by the pattern.
-           
-           See the Java Regular Expression documentation for more
-           information on pattern and replacement string syntax.
-           
-           http://java.sun.com/j2se/1.6.0/docs/api/java/util/regex/package-summary.html
-        -->
-      <filter class="solr.PatternReplaceFilterFactory"
-              pattern="([^a-z])" replacement="" replace="all"
-      />
-    </analyzer>
-  </fieldType>
-
-  <!--    
-  <fieldType name="phonetic" stored="false" indexed="true" class="solr.TextField" >
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
-    </analyzer>
-  </fieldType>
-  -->
-
-  <fieldType name="payloads" stored="false" indexed="true" class="solr.TextField">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <!--
-      The DelimitedPayloadTokenFilter can put payloads on tokens... for example,
-      a token of "foo|1.4"  would be indexed as "foo" with a payload of 1.4f
-      Attributes of the DelimitedPayloadTokenFilterFactory : 
-       "delimiter" - a one character delimiter. Default is | (pipe)
- "encoder" - how to encode the following value into a playload
-    float -> org.apache.lucene.analysis.payloads.FloatEncoder,
-    integer -> o.a.l.a.p.IntegerEncoder
-    identity -> o.a.l.a.p.IdentityEncoder
-          Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor.
-       -->
-      <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- lowercases the entire field value, keeping it as a single token.  -->
-  <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- 
-    Example of using PathHierarchyTokenizerFactory at index time, so
-    queries for paths match documents at that path, or in descendent paths
-  -->
-  <fieldType name="descendent_path" class="solr.TextField">
-    <analyzer type="index">
-      <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-  <!-- 
-    Example of using PathHierarchyTokenizerFactory at query time, so
-    queries for paths match documents at that path, or in ancestor paths
-  -->
-  <fieldType name="ancestor_path" class="solr.TextField">
-    <analyzer type="index">
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- since fields of this type are by default not stored or indexed,
-       any data added to them will be ignored outright.  -->
-  <fieldType name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField"/>
-
-  <!-- This point type indexes the coordinates as separate fields (subFields)
-    If subFieldType is defined, it references a type, and a dynamic field
-    definition is created matching *___<typename>.  Alternately, if 
-    subFieldSuffix is defined, that is used to create the subFields.
-    Example: if subFieldType="double", then the coordinates would be
-      indexed in fields myloc_0___double,myloc_1___double.
-    Example: if subFieldSuffix="_d" then the coordinates would be indexed
-      in fields myloc_0_d,myloc_1_d
-    The subFields are an implementation detail of the fieldType, and end
-    users normally should not need to know about them.
-   -->
-  <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
-
-  <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
-  <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
-
-  <!--
-   A Geohash is a compact representation of a latitude longitude pair in a single field.
-   See http://wiki.apache.org/solr/SpatialSearch
-  -->
-  <fieldType name="geohash" class="solr.GeoHashField"/>
-
-  <!-- Money/currency field type. See http://wiki.apache.org/solr/MoneyFieldType
-       Parameters:
-         defaultCurrency: Specifies the default currency if none specified. Defaults to "USD"
-         precisionStep:   Specifies the precisionStep for the TrieLong field used for the amount
-         providerClass:   Lets you plug in other exchange provider backend:
-                          solr.FileExchangeRateProvider is the default and takes one parameter:
-                            currencyConfig: name of an xml file holding exhange rates
-                          solr.OpenExchangeRatesOrgProvider uses rates from openexchangerates.org:
-                            ratesFileLocation: URL or path to rates JSON file (default latest.json on the web)
-                            refreshInterval: Number of minutes between each rates fetch (default: 1440, min: 60)
-  -->
-  <fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD"
-             currencyConfig="currency.xml"/>
-
-
-  <!-- some examples for different languages (generally ordered by ISO code) -->
-
-  <!-- Arabic -->
-  <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- for any non-arabic -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt"/>
-      <!-- normalizes \ufeef to \ufef1, etc -->
-      <filter class="solr.ArabicNormalizationFilterFactory"/>
-      <filter class="solr.ArabicStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Bulgarian -->
-  <fieldType name="text_bg" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_bg.txt"/>
-      <filter class="solr.BulgarianStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Catalan -->
-  <fieldType name="text_ca" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ca.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ca.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Catalan"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- CJK bigram (see text_ja for a Japanese configuration using morphological analysis) -->
-  <fieldType name="text_cjk" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- normalize width before bigram, as e.g. half-width dakuten combine  -->
-      <filter class="solr.CJKWidthFilterFactory"/>
-      <!-- for any non-CJK -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.CJKBigramFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Czech -->
-  <fieldType name="text_cz" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_cz.txt"/>
-      <filter class="solr.CzechStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Danish -->
-  <fieldType name="text_da" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_da.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Danish"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- German -->
-  <fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" format="snowball"/>
-      <filter class="solr.GermanNormalizationFilterFactory"/>
-      <filter class="solr.GermanLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.GermanMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="German2"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Greek -->
-  <fieldType name="text_el" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- greek specific lowercase for sigma -->
-      <filter class="solr.GreekLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_el.txt"/>
-      <filter class="solr.GreekStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Spanish -->
-  <fieldType name="text_es" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_es.txt" format="snowball"/>
-      <filter class="solr.SpanishLightStemFilterFactory"/>
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Spanish"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Basque -->
-  <fieldType name="text_eu" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_eu.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Basque"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Persian -->
-  <fieldType name="text_fa" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <!-- for ZWNJ -->
-      <charFilter class="solr.PersianCharFilterFactory"/>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.ArabicNormalizationFilterFactory"/>
-      <filter class="solr.PersianNormalizationFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fa.txt"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Finnish -->
-  <fieldType name="text_fi" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fi.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Finnish"/>
-      <!-- less aggressive: <filter class="solr.FinnishLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- French -->
-  <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_fr.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fr.txt" format="snowball"/>
-      <filter class="solr.FrenchLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.FrenchMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="French"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Irish -->
-  <fieldType name="text_ga" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes d', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ga.txt"/>
-      <!-- removes n-, etc. position increments is intentionally false! -->
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/hyphenations_ga.txt"/>
-      <filter class="solr.IrishLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ga.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Irish"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Galician -->
-  <fieldType name="text_gl" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_gl.txt"/>
-      <filter class="solr.GalicianStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.GalicianMinimalStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Hindi -->
-  <fieldType name="text_hi" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <!-- normalizes unicode representation -->
-      <filter class="solr.IndicNormalizationFilterFactory"/>
-      <!-- normalizes variation in spelling -->
-      <filter class="solr.HindiNormalizationFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hi.txt"/>
-      <filter class="solr.HindiStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Hungarian -->
-  <fieldType name="text_hu" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hu.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Hungarian"/>
-      <!-- less aggressive: <filter class="solr.HungarianLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Armenian -->
-  <fieldType name="text_hy" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hy.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Armenian"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Indonesian -->
-  <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_id.txt"/>
-      <!-- for a less aggressive approach (only inflectional suffixes), set stemDerivational to false -->
-      <filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Italian -->
-  <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_it.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_it.txt" format="snowball"/>
-      <filter class="solr.ItalianLightStemFilterFactory"/>
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Italian"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Latvian -->
-  <fieldType name="text_lv" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_lv.txt"/>
-      <filter class="solr.LatvianStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Dutch -->
-  <fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_nl.txt" format="snowball"/>
-      <filter class="solr.StemmerOverrideFilterFactory" dictionary="lang/stemdict_nl.txt" ignoreCase="false"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Dutch"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Norwegian -->
-  <fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Norwegian"/>
-      <!-- less aggressive: <filter class="solr.NorwegianLightStemFilterFactory"/> -->
-      <!-- singular/plural: <filter class="solr.NorwegianMinimalStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Portuguese -->
-  <fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" format="snowball"/>
-      <filter class="solr.PortugueseLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.PortugueseMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Portuguese"/> -->
-      <!-- most aggressive: <filter class="solr.PortugueseStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Romanian -->
-  <fieldType name="text_ro" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ro.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Romanian"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Russian -->
-  <fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ru.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Russian"/>
-      <!-- less aggressive: <filter class="solr.RussianLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Swedish -->
-  <fieldType name="text_sv" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_sv.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Swedish"/>
-      <!-- less aggressive: <filter class="solr.SwedishLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Thai -->
-  <fieldType name="text_th" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.ThaiTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_th.txt"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Turkish -->
-  <fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.TurkishLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_tr.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Turkish"/>
-    </analyzer>
-  </fieldType>
-
-
-  <!-- Similarity is the scoring routine for each document vs. a query.
-       A custom Similarity or SimilarityFactory may be specified here, but 
-       the default is fine for most applications.  
-       For more info: http://wiki.apache.org/solr/SchemaXml#Similarity
-    -->
-  <!--
-     <similarity class="com.example.solr.CustomSimilarityFactory">
-       <str name="paramkey">param value</str>
-     </similarity>
-    -->
-
-</schema>


[51/73] [abbrv] lucene-solr:jira/solr-6203: LUCENE-7751: Avoid boxing primitives only to call compareTo.

Posted by cp...@apache.org.
LUCENE-7751: Avoid boxing primitives only to call compareTo.


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

Branch: refs/heads/jira/solr-6203
Commit: c189139e5222d2a8b6fba6bfc5c1194d68b46a77
Parents: 53064e4
Author: Adrien Grand <jp...@gmail.com>
Authored: Tue Mar 28 15:21:35 2017 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Tue Mar 28 15:35:04 2017 +0200

----------------------------------------------------------------------
 lucene/CHANGES.txt                                              | 3 +++
 lucene/core/src/java/org/apache/lucene/util/VirtualMethod.java  | 2 +-
 .../src/java/org/apache/solr/spelling/SpellCheckCollation.java  | 2 +-
 .../solr/handler/component/DistributedFacetPivotSmallTest.java  | 5 ++---
 solr/solrj/src/java/org/apache/solr/common/cloud/DocRouter.java | 4 ++--
 5 files changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c189139e/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index e6da586..a8f24c7 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -87,6 +87,9 @@ Other
 * LUCENE-7754: Inner classes should be static whenever possible.
   (Daniel Jelinski via Adrien Grand)
 
+* LUCENE-7751: Avoid boxing primitives only to call compareTo.
+  (Daniel Jelinski via Adrien Grand)
+
 ======================= Lucene 6.5.0 =======================
 
 API Changes

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c189139e/lucene/core/src/java/org/apache/lucene/util/VirtualMethod.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/util/VirtualMethod.java b/lucene/core/src/java/org/apache/lucene/util/VirtualMethod.java
index f21c16b..ea56862 100644
--- a/lucene/core/src/java/org/apache/lucene/util/VirtualMethod.java
+++ b/lucene/core/src/java/org/apache/lucene/util/VirtualMethod.java
@@ -143,7 +143,7 @@ public final class VirtualMethod<C> {
   public static <C> int compareImplementationDistance(final Class<? extends C> clazz,
     final VirtualMethod<C> m1, final VirtualMethod<C> m2)
   {
-    return Integer.valueOf(m1.getImplementationDistance(clazz)).compareTo(m2.getImplementationDistance(clazz));
+    return Integer.compare(m1.getImplementationDistance(clazz), m2.getImplementationDistance(clazz));
   }
   
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c189139e/solr/core/src/java/org/apache/solr/spelling/SpellCheckCollation.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/spelling/SpellCheckCollation.java b/solr/core/src/java/org/apache/solr/spelling/SpellCheckCollation.java
index bef3ec6..7f3bd95 100644
--- a/solr/core/src/java/org/apache/solr/spelling/SpellCheckCollation.java
+++ b/solr/core/src/java/org/apache/solr/spelling/SpellCheckCollation.java
@@ -26,7 +26,7 @@ public class SpellCheckCollation implements Comparable<SpellCheckCollation> {
 
   @Override
   public int compareTo(SpellCheckCollation scc) {
-    int c = new Integer(internalRank).compareTo(scc.internalRank);
+    int c = Integer.compare(internalRank, scc.internalRank);
     if (c == 0) {
       return collationQuery.compareTo(scc.collationQuery);
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c189139e/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
index fc7af80..d293e69 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedFacetPivotSmallTest.java
@@ -1636,8 +1636,7 @@ public class DistributedFacetPivotSmallTest extends BaseDistributedSearchTestCas
     
     @Override
     public int compare(PivotField o1, PivotField o2) {
-      Integer compare = (Integer.valueOf(o2.getCount())).compareTo(Integer
-          .valueOf(o1.getCount()));
+      int compare = Integer.compare(o2.getCount(), o1.getCount());
       if (compare == 0) {
         compare = ((String) o2.getValue()).compareTo((String) o1.getValue());
       }
@@ -1650,7 +1649,7 @@ public class DistributedFacetPivotSmallTest extends BaseDistributedSearchTestCas
           }
         }
         if (compare == 0) {
-          compare = Integer.valueOf(o1.getFacetQuery().size()).compareTo(
+          compare = Integer.compare(o1.getFacetQuery().size(),
               o2.getFacetQuery().size());
         }
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/c189139e/solr/solrj/src/java/org/apache/solr/common/cloud/DocRouter.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/DocRouter.java b/solr/solrj/src/java/org/apache/solr/common/cloud/DocRouter.java
index 6fffb3a..846c25e 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/DocRouter.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/DocRouter.java
@@ -134,8 +134,8 @@ public abstract class DocRouter {
 
     @Override
     public int compareTo(Range that) {
-      int mincomp = Integer.valueOf(this.min).compareTo(that.min);
-      return mincomp == 0 ? Integer.valueOf(this.max).compareTo(that.max) : mincomp;
+      int mincomp = Integer.compare(this.min, that.min);
+      return mincomp == 0 ? Integer.compare(this.max, that.max) : mincomp;
     }
   }
 


[23/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stoptags_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stoptags_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stoptags_ja.txt
deleted file mode 100644
index 71b7508..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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
-#\u540d\u8a5e
-#
-#  noun-common: Common nouns or nouns where the sub-classification is undefined
-#\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-proper: Proper nouns where the sub-classification is undefined 
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e
-#
-#  noun-proper-misc: miscellaneous proper nouns
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-proper-person: Personal names where the sub-classification is undefined
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d
-#
-#  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. \u304a\u5e02\u306e\u65b9
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u4e00\u822c
-#
-#  noun-proper-person-surname: Mainly Japanese surnames.
-#  e.g. \u5c71\u7530
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u59d3
-#
-#  noun-proper-person-given_name: Mainly Japanese given names.
-#  e.g. \u592a\u90ce
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u540d
-#
-#  noun-proper-organization: Names representing organizations.
-#  e.g. \u901a\u7523\u7701, NHK
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u7d44\u7e54
-#
-#  noun-proper-place: Place names where the sub-classification is undefined
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df
-#
-#  noun-proper-place-misc: Place names excluding countries.
-#  e.g. \u30a2\u30b8\u30a2, \u30d0\u30eb\u30bb\u30ed\u30ca, \u4eac\u90fd
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df-\u4e00\u822c
-#
-#  noun-proper-place-country: Country names. 
-#  e.g. \u65e5\u672c, \u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df-\u56fd
-#
-#  noun-pronoun: Pronouns where the sub-classification is undefined
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e
-#
-#  noun-pronoun-misc: miscellaneous pronouns: 
-#  e.g. \u305d\u308c, \u3053\u3053, \u3042\u3044\u3064, \u3042\u306a\u305f, \u3042\u3061\u3053\u3061, \u3044\u304f\u3064, \u3069\u3053\u304b, \u306a\u306b, \u307f\u306a\u3055\u3093, \u307f\u3093\u306a, \u308f\u305f\u304f\u3057, \u308f\u308c\u308f\u308c
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-pronoun-contraction: Spoken language contraction made by combining a 
-#  pronoun and the particle 'wa'.
-#  e.g. \u3042\u308a\u3083, \u3053\u308a\u3083, \u3053\u308a\u3083\u3042, \u305d\u308a\u3083, \u305d\u308a\u3083\u3042 
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e-\u7e2e\u7d04
-#
-#  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. \u91d1\u66dc, \u4e00\u6708, \u5348\u5f8c, \u5c11\u91cf
-#\u540d\u8a5e-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-verbal: Nouns that take arguments with case and can appear followed by 
-#  'suru' and related verbs (\u3059\u308b, \u3067\u304d\u308b, \u306a\u3055\u308b, \u304f\u3060\u3055\u308b)
-#  e.g. \u30a4\u30f3\u30d7\u30c3\u30c8, \u611b\u7740, \u60aa\u5316, \u60aa\u6226\u82e6\u95d8, \u4e00\u5b89\u5fc3, \u4e0b\u53d6\u308a
-#\u540d\u8a5e-\u30b5\u5909\u63a5\u7d9a
-#
-#  noun-adjective-base: The base form of adjectives, words that appear before \u306a ("na")
-#  e.g. \u5065\u5eb7, \u5b89\u6613, \u99c4\u76ee, \u3060\u3081
-#\u540d\u8a5e-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-numeric: Arabic numbers, Chinese numerals, and counters like \u4f55 (\u56de), \u6570.
-#  e.g. 0, 1, 2, \u4f55, \u6570, \u5e7e
-#\u540d\u8a5e-\u6570
-#
-#  noun-affix: noun affixes where the sub-classification is undefined
-#\u540d\u8a5e-\u975e\u81ea\u7acb
-#
-#  noun-affix-misc: Of adnominalizers, the case-marker \u306e ("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. \u3042\u304b\u3064\u304d, \u6681, \u304b\u3044, \u7532\u6590, \u6c17, \u304d\u3089\u3044, \u5acc\u3044, \u304f\u305b, \u7656, \u3053\u3068, \u4e8b, \u3054\u3068, \u6bce, \u3057\u3060\u3044, \u6b21\u7b2c, 
-#       \u9806, \u305b\u3044, \u6240\u70ba, \u3064\u3044\u3067, \u5e8f\u3067, \u3064\u3082\u308a, \u7a4d\u3082\u308a, \u70b9, \u3069\u3053\u308d, \u306e, \u306f\u305a, \u7b48, \u306f\u305a\u307f, \u5f3e\u307f, 
-#       \u62cd\u5b50, \u3075\u3046, \u3075\u308a, \u632f\u308a, \u307b\u3046, \u65b9, \u65e8, \u3082\u306e, \u7269, \u8005, \u3086\u3048, \u6545, \u3086\u3048\u3093, \u6240\u4ee5, \u308f\u3051, \u8a33,
-#       \u308f\u308a, \u5272\u308a, \u5272, \u3093-\u53e3\u8a9e/, \u3082\u3093-\u53e3\u8a9e/
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u4e00\u822c
-#
-#  noun-affix-adverbial: noun affixes that that can behave as adverbs.
-#  e.g. \u3042\u3044\u3060, \u9593, \u3042\u3052\u304f, \u6319\u3052\u53e5, \u3042\u3068, \u5f8c, \u4f59\u308a, \u4ee5\u5916, \u4ee5\u964d, \u4ee5\u5f8c, \u4ee5\u4e0a, \u4ee5\u524d, \u4e00\u65b9, \u3046\u3048, 
-#       \u4e0a, \u3046\u3061, \u5185, \u304a\u308a, \u6298\u308a, \u304b\u304e\u308a, \u9650\u308a, \u304d\u308a, \u3063\u304d\u308a, \u7d50\u679c, \u3053\u308d, \u9803, \u3055\u3044, \u969b, \u6700\u4e2d, \u3055\u306a\u304b, 
-#       \u6700\u4e2d, \u3058\u305f\u3044, \u81ea\u4f53, \u305f\u3073, \u5ea6, \u305f\u3081, \u70ba, \u3064\u3069, \u90fd\u5ea6, \u3068\u304a\u308a, \u901a\u308a, \u3068\u304d, \u6642, \u3068\u3053\u308d, \u6240, 
-#       \u3068\u305f\u3093, \u9014\u7aef, \u306a\u304b, \u4e2d, \u306e\u3061, \u5f8c, \u3070\u3042\u3044, \u5834\u5408, \u65e5, \u3076\u3093, \u5206, \u307b\u304b, \u4ed6, \u307e\u3048, \u524d, \u307e\u307e, 
-#       \u5118, \u4fad, \u307f\u304e\u308a, \u77e2\u5148
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-affix-aux: noun affixes treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars 
-#  with the stem \u3088\u3046(\u3060) ("you(da)").
-#  e.g.  \u3088\u3046, \u3084\u3046, \u69d8 (\u3088\u3046)
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#  
-#  noun-affix-adjective-base: noun affixes that can connect to the indeclinable
-#  connection form \u306a (aux "da").
-#  e.g. \u307f\u305f\u3044, \u3075\u3046
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-special: special nouns where the sub-classification is undefined.
-#\u540d\u8a5e-\u7279\u6b8a
-#
-#  noun-special-aux: The \u305d\u3046\u3060 ("souda") stem form that is used for reporting news, is 
-#  treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars, and attach to the base 
-#  form of inflectional words.
-#  e.g. \u305d\u3046
-#\u540d\u8a5e-\u7279\u6b8a-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix: noun suffixes where the sub-classification is undefined.
-#\u540d\u8a5e-\u63a5\u5c3e
-#
-#  noun-suffix-misc: Of the nouns or stem forms of other parts of speech that connect 
-#  to \u30ac\u30eb or \u30bf\u30a4 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 
-#  \u63a5\u5c3e\u8a9e ("suffix") and is usually the last element in a compound noun.
-#  e.g. \u304a\u304d, \u304b\u305f, \u65b9, \u7532\u6590 (\u304c\u3044), \u304c\u304b\u308a, \u304e\u307f, \u6c17\u5473, \u3050\u308b\u307f, (\uff5e\u3057\u305f) \u3055, \u6b21\u7b2c, \u6e08 (\u305a) \u307f,
-#       \u3088\u3046, (\u3067\u304d)\u3063\u3053, \u611f, \u89b3, \u6027, \u5b66, \u985e, \u9762, \u7528
-#\u540d\u8a5e-\u63a5\u5c3e-\u4e00\u822c
-#
-#  noun-suffix-person: Suffixes that form nouns and attach to person names more often
-#  than other nouns.
-#  e.g. \u541b, \u69d8, \u8457
-#\u540d\u8a5e-\u63a5\u5c3e-\u4eba\u540d
-#
-#  noun-suffix-place: Suffixes that form nouns and attach to place names more often 
-#  than other nouns.
-#  e.g. \u753a, \u5e02, \u770c
-#\u540d\u8a5e-\u63a5\u5c3e-\u5730\u57df
-#
-#  noun-suffix-verbal: Of the suffixes that attach to nouns and form nouns, those that 
-#  can appear before \u30b9\u30eb ("suru").
-#  e.g. \u5316, \u8996, \u5206\u3051, \u5165\u308a, \u843d\u3061, \u8cb7\u3044
-#\u540d\u8a5e-\u63a5\u5c3e-\u30b5\u5909\u63a5\u7d9a
-#
-#  noun-suffix-aux: The stem form of \u305d\u3046\u3060 (\u69d8\u614b) that is used to indicate conditions, 
-#  is treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars, and attach to the 
-#  conjunctive form of inflectional words.
-#  e.g. \u305d\u3046
-#\u540d\u8a5e-\u63a5\u5c3e-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix-adjective-base: Suffixes that attach to other nouns or the conjunctive 
-#  form of inflectional words and appear before the copula \u3060 ("da").
-#  e.g. \u7684, \u3052, \u304c\u3061
-#\u540d\u8a5e-\u63a5\u5c3e-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix-adverbial: Suffixes that attach to other nouns and can behave as adverbs.
-#  e.g. \u5f8c (\u3054), \u4ee5\u5f8c, \u4ee5\u964d, \u4ee5\u524d, \u524d\u5f8c, \u4e2d, \u672b, \u4e0a, \u6642 (\u3058)
-#\u540d\u8a5e-\u63a5\u5c3e-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-suffix-classifier: Suffixes that attach to numbers and form nouns. This category 
-#  is more inclusive than \u52a9\u6570\u8a5e ("classifier") and includes common nouns that attach 
-#  to numbers.
-#  e.g. \u500b, \u3064, \u672c, \u518a, \u30d1\u30fc\u30bb\u30f3\u30c8, cm, kg, \u30ab\u6708, \u304b\u56fd, \u533a\u753b, \u6642\u9593, \u6642\u534a
-#\u540d\u8a5e-\u63a5\u5c3e-\u52a9\u6570\u8a5e
-#
-#  noun-suffix-special: Special suffixes that mainly attach to inflecting words.
-#  e.g. (\u697d\u3057) \u3055, (\u8003\u3048) \u65b9
-#\u540d\u8a5e-\u63a5\u5c3e-\u7279\u6b8a
-#
-#  noun-suffix-conjunctive: Nouns that behave like conjunctions and join two words 
-#  together.
-#  e.g. (\u65e5\u672c) \u5bfe (\u30a2\u30e1\u30ea\u30ab), \u5bfe (\u30a2\u30e1\u30ea\u30ab), (3) \u5bfe (5), (\u5973\u512a) \u517c (\u4e3b\u5a66)
-#\u540d\u8a5e-\u63a5\u7d9a\u8a5e\u7684
-#
-#  noun-verbal_aux: Nouns that attach to the conjunctive particle \u3066 ("te") and are 
-#  semantically verb-like.
-#  e.g. \u3054\u3089\u3093, \u3054\u89a7, \u5fa1\u89a7, \u9802\u6234
-#\u540d\u8a5e-\u52d5\u8a5e\u975e\u81ea\u7acb\u7684
-#
-#  noun-quotation: text that cannot be segmented into words, proverbs, Chinese poetry, 
-#  dialects, English, etc. Currently, the only entry for \u540d\u8a5e \u5f15\u7528\u6587\u5b57\u5217 ("noun quotation") 
-#  is \u3044\u308f\u304f ("iwaku").
-#\u540d\u8a5e-\u5f15\u7528\u6587\u5b57\u5217
-#
-#  noun-nai_adjective: Words that appear before the auxiliary verb \u306a\u3044 ("nai") and
-#  behave like an adjective.
-#  e.g. \u7533\u3057\u8a33, \u4ed5\u65b9, \u3068\u3093\u3067\u3082, \u9055\u3044
-#\u540d\u8a5e-\u30ca\u30a4\u5f62\u5bb9\u8a5e\u8a9e\u5e79
-#
-#####
-#  prefix: unclassified prefixes
-#\u63a5\u982d\u8a5e
-#
-#  prefix-nominal: Prefixes that attach to nouns (including adjective stem forms) 
-#  excluding numerical expressions.
-#  e.g. \u304a (\u6c34), \u67d0 (\u6c0f), \u540c (\u793e), \u6545 (\uff5e\u6c0f), \u9ad8 (\u54c1\u8cea), \u304a (\u898b\u4e8b), \u3054 (\u7acb\u6d3e)
-#\u63a5\u982d\u8a5e-\u540d\u8a5e\u63a5\u7d9a
-#
-#  prefix-verbal: Prefixes that attach to the imperative form of a verb or a verb
-#  in conjunctive form followed by \u306a\u308b/\u306a\u3055\u308b/\u304f\u3060\u3055\u308b.
-#  e.g. \u304a (\u8aad\u307f\u306a\u3055\u3044), \u304a (\u5ea7\u308a)
-#\u63a5\u982d\u8a5e-\u52d5\u8a5e\u63a5\u7d9a
-#
-#  prefix-adjectival: Prefixes that attach to adjectives.
-#  e.g. \u304a (\u5bd2\u3044\u3067\u3059\u306d\u3048), \u30d0\u30ab (\u3067\u304b\u3044)
-#\u63a5\u982d\u8a5e-\u5f62\u5bb9\u8a5e\u63a5\u7d9a
-#
-#  prefix-numerical: Prefixes that attach to numerical expressions.
-#  e.g. \u7d04, \u304a\u3088\u305d, \u6bce\u6642
-#\u63a5\u982d\u8a5e-\u6570\u63a5\u7d9a
-#
-#####
-#  verb: unclassified verbs
-#\u52d5\u8a5e
-#
-#  verb-main:
-#\u52d5\u8a5e-\u81ea\u7acb
-#
-#  verb-auxiliary:
-#\u52d5\u8a5e-\u975e\u81ea\u7acb
-#
-#  verb-suffix:
-#\u52d5\u8a5e-\u63a5\u5c3e
-#
-#####
-#  adjective: unclassified adjectives
-#\u5f62\u5bb9\u8a5e
-#
-#  adjective-main:
-#\u5f62\u5bb9\u8a5e-\u81ea\u7acb
-#
-#  adjective-auxiliary:
-#\u5f62\u5bb9\u8a5e-\u975e\u81ea\u7acb
-#
-#  adjective-suffix:
-#\u5f62\u5bb9\u8a5e-\u63a5\u5c3e
-#
-#####
-#  adverb: unclassified adverbs
-#\u526f\u8a5e
-#
-#  adverb-misc: Words that can be segmented into one unit and where adnominal 
-#  modification is not possible.
-#  e.g. \u3042\u3044\u304b\u308f\u3089\u305a, \u591a\u5206
-#\u526f\u8a5e-\u4e00\u822c
-#
-#  adverb-particle_conjunction: Adverbs that can be followed by \u306e, \u306f, \u306b, 
-#  \u306a, \u3059\u308b, \u3060, etc.
-#  e.g. \u3053\u3093\u306a\u306b, \u305d\u3093\u306a\u306b, \u3042\u3093\u306a\u306b, \u306a\u306b\u304b, \u306a\u3093\u3067\u3082
-#\u526f\u8a5e-\u52a9\u8a5e\u985e\u63a5\u7d9a
-#
-#####
-#  adnominal: Words that only have noun-modifying forms.
-#  e.g. \u3053\u306e, \u305d\u306e, \u3042\u306e, \u3069\u306e, \u3044\u308f\u3086\u308b, \u306a\u3093\u3089\u304b\u306e, \u4f55\u3089\u304b\u306e, \u3044\u308d\u3093\u306a, \u3053\u3046\u3044\u3046, \u305d\u3046\u3044\u3046, \u3042\u3042\u3044\u3046, 
-#       \u3069\u3046\u3044\u3046, \u3053\u3093\u306a, \u305d\u3093\u306a, \u3042\u3093\u306a, \u3069\u3093\u306a, \u5927\u304d\u306a, \u5c0f\u3055\u306a, \u304a\u304b\u3057\u306a, \u307b\u3093\u306e, \u305f\u3044\u3057\u305f, 
-#       \u300c(, \u3082) \u3055\u308b (\u3053\u3068\u306a\u304c\u3089)\u300d, \u5fae\u3005\u305f\u308b, \u5802\u3005\u305f\u308b, \u5358\u306a\u308b, \u3044\u304b\u306a\u308b, \u6211\u304c\u300d\u300c\u540c\u3058, \u4ea1\u304d
-#\u9023\u4f53\u8a5e
-#
-#####
-#  conjunction: Conjunctions that can occur independently.
-#  e.g. \u304c, \u3051\u308c\u3069\u3082, \u305d\u3057\u3066, \u3058\u3083\u3042, \u305d\u308c\u3069\u3053\u308d\u304b
-\u63a5\u7d9a\u8a5e
-#
-#####
-#  particle: unclassified particles.
-\u52a9\u8a5e
-#
-#  particle-case: case particles where the subclassification is undefined.
-\u52a9\u8a5e-\u683c\u52a9\u8a5e
-#
-#  particle-case-misc: Case particles.
-#  e.g. \u304b\u3089, \u304c, \u3067, \u3068, \u306b, \u3078, \u3088\u308a, \u3092, \u306e, \u306b\u3066
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u4e00\u822c
-#
-#  particle-case-quote: the "to" that appears after nouns, a person\u2019s speech, 
-#  quotation marks, expressions of decisions from a meeting, reasons, judgements,
-#  conjectures, etc.
-#  e.g. ( \u3060) \u3068 (\u8ff0\u3079\u305f.), ( \u3067\u3042\u308b) \u3068 (\u3057\u3066\u57f7\u884c\u7336\u4e88...)
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u5f15\u7528
-#
-#  particle-case-compound: Compounds of particles and verbs that mainly behave 
-#  like case particles.
-#  e.g. \u3068\u3044\u3046, \u3068\u3044\u3063\u305f, \u3068\u304b\u3044\u3046, \u3068\u3057\u3066, \u3068\u3068\u3082\u306b, \u3068\u5171\u306b, \u3067\u3082\u3063\u3066, \u306b\u3042\u305f\u3063\u3066, \u306b\u5f53\u305f\u3063\u3066, \u306b\u5f53\u3063\u3066,
-#       \u306b\u3042\u305f\u308a, \u306b\u5f53\u305f\u308a, \u306b\u5f53\u308a, \u306b\u5f53\u305f\u308b, \u306b\u3042\u305f\u308b, \u306b\u304a\u3044\u3066, \u306b\u65bc\u3044\u3066,\u306b\u65bc\u3066, \u306b\u304a\u3051\u308b, \u306b\u65bc\u3051\u308b, 
-#       \u306b\u304b\u3051, \u306b\u304b\u3051\u3066, \u306b\u304b\u3093\u3057, \u306b\u95a2\u3057, \u306b\u304b\u3093\u3057\u3066, \u306b\u95a2\u3057\u3066, \u306b\u304b\u3093\u3059\u308b, \u306b\u95a2\u3059\u308b, \u306b\u969b\u3057, 
-#       \u306b\u969b\u3057\u3066, \u306b\u3057\u305f\u304c\u3044, \u306b\u5f93\u3044, \u306b\u5f93\u3046, \u306b\u3057\u305f\u304c\u3063\u3066, \u306b\u5f93\u3063\u3066, \u306b\u305f\u3044\u3057, \u306b\u5bfe\u3057, \u306b\u305f\u3044\u3057\u3066, 
-#       \u306b\u5bfe\u3057\u3066, \u306b\u305f\u3044\u3059\u308b, \u306b\u5bfe\u3059\u308b, \u306b\u3064\u3044\u3066, \u306b\u3064\u304d, \u306b\u3064\u3051, \u306b\u3064\u3051\u3066, \u306b\u3064\u308c, \u306b\u3064\u308c\u3066, \u306b\u3068\u3063\u3066,
-#       \u306b\u3068\u308a, \u306b\u307e\u3064\u308f\u308b, \u306b\u3088\u3063\u3066, \u306b\u4f9d\u3063\u3066, \u306b\u56e0\u3063\u3066, \u306b\u3088\u308a, \u306b\u4f9d\u308a, \u306b\u56e0\u308a, \u306b\u3088\u308b, \u306b\u4f9d\u308b, \u306b\u56e0\u308b, 
-#       \u306b\u308f\u305f\u3063\u3066, \u306b\u308f\u305f\u308b, \u3092\u3082\u3063\u3066, \u3092\u4ee5\u3063\u3066, \u3092\u901a\u3058, \u3092\u901a\u3058\u3066, \u3092\u901a\u3057\u3066, \u3092\u3081\u3050\u3063\u3066, \u3092\u3081\u3050\u308a, \u3092\u3081\u3050\u308b,
-#       \u3063\u3066-\u53e3\u8a9e/, \u3061\u3085\u3046-\u95a2\u897f\u5f01\u300c\u3068\u3044\u3046\u300d/, (\u4f55) \u3066\u3044\u3046 (\u4eba)-\u53e3\u8a9e/, \u3063\u3066\u3044\u3046-\u53e3\u8a9e/, \u3068\u3044\u3075, \u3068\u304b\u3044\u3075
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u9023\u8a9e
-#
-#  particle-conjunctive:
-#  e.g. \u304b\u3089, \u304b\u3089\u306b\u306f, \u304c, \u3051\u308c\u3069, \u3051\u308c\u3069\u3082, \u3051\u3069, \u3057, \u3064\u3064, \u3066, \u3067, \u3068, \u3068\u3053\u308d\u304c, \u3069\u3053\u308d\u304b, \u3068\u3082, \u3069\u3082, 
-#       \u306a\u304c\u3089, \u306a\u308a, \u306e\u3067, \u306e\u306b, \u3070, \u3082\u306e\u306e, \u3084 ( \u3057\u305f), \u3084\u3044\u306a\u3084, (\u3053\u308d\u3093) \u3058\u3083(\u3044\u3051\u306a\u3044)-\u53e3\u8a9e/, 
-#       (\u884c\u3063) \u3061\u3083(\u3044\u3051\u306a\u3044)-\u53e3\u8a9e/, (\u8a00\u3063) \u305f\u3063\u3066 (\u3057\u304b\u305f\u304c\u306a\u3044)-\u53e3\u8a9e/, (\u305d\u308c\u304c\u306a\u304f)\u3063\u305f\u3063\u3066 (\u5e73\u6c17)-\u53e3\u8a9e/
-\u52a9\u8a5e-\u63a5\u7d9a\u52a9\u8a5e
-#
-#  particle-dependency:
-#  e.g. \u3053\u305d, \u3055\u3048, \u3057\u304b, \u3059\u3089, \u306f, \u3082, \u305e
-\u52a9\u8a5e-\u4fc2\u52a9\u8a5e
-#
-#  particle-adverbial:
-#  e.g. \u304c\u3066\u3089, \u304b\u3082, \u304f\u3089\u3044, \u4f4d, \u3050\u3089\u3044, \u3057\u3082, (\u5b66\u6821) \u3058\u3083(\u3053\u308c\u304c\u6d41\u884c\u3063\u3066\u3044\u308b)-\u53e3\u8a9e/, 
-#       (\u305d\u308c)\u3058\u3083\u3042 (\u3088\u304f\u306a\u3044)-\u53e3\u8a9e/, \u305a\u3064, (\u79c1) \u306a\u305e, \u306a\u3069, (\u79c1) \u306a\u308a (\u306b), (\u5148\u751f) \u306a\u3093\u304b (\u5927\u5acc\u3044)-\u53e3\u8a9e/,
-#       (\u79c1) \u306a\u3093\u305e, (\u5148\u751f) \u306a\u3093\u3066 (\u5927\u5acc\u3044)-\u53e3\u8a9e/, \u306e\u307f, \u3060\u3051, (\u79c1) \u3060\u3063\u3066-\u53e3\u8a9e/, \u3060\u306b, 
-#       (\u5f7c)\u3063\u305f\u3089-\u53e3\u8a9e/, (\u304a\u8336) \u3067\u3082 (\u3044\u304b\u304c), \u7b49 (\u3068\u3046), (\u4eca\u5f8c) \u3068\u3082, \u3070\u304b\u308a, \u3070\u3063\u304b-\u53e3\u8a9e/, \u3070\u3063\u304b\u308a-\u53e3\u8a9e/,
-#       \u307b\u3069, \u7a0b, \u307e\u3067, \u8fc4, (\u8ab0) \u3082 (\u304c)([\u52a9\u8a5e-\u683c\u52a9\u8a5e] \u304a\u3088\u3073 [\u52a9\u8a5e-\u4fc2\u52a9\u8a5e] \u306e\u524d\u306b\u4f4d\u7f6e\u3059\u308b\u300c\u3082\u300d)
-\u52a9\u8a5e-\u526f\u52a9\u8a5e
-#
-#  particle-interjective: particles with interjective grammatical roles.
-#  e.g. (\u677e\u5cf6) \u3084
-\u52a9\u8a5e-\u9593\u6295\u52a9\u8a5e
-#
-#  particle-coordinate:
-#  e.g. \u3068, \u305f\u308a, \u3060\u306e, \u3060\u308a, \u3068\u304b, \u306a\u308a, \u3084, \u3084\u3089
-\u52a9\u8a5e-\u4e26\u7acb\u52a9\u8a5e
-#
-#  particle-final:
-#  e.g. \u304b\u3044, \u304b\u3057\u3089, \u3055, \u305c, (\u3060)\u3063\u3051-\u53e3\u8a9e/, (\u3068\u307e\u3063\u3066\u308b) \u3067-\u65b9\u8a00/, \u306a, \u30ca, \u306a\u3042-\u53e3\u8a9e/, \u305e, \u306d, \u30cd, 
-#       \u306d\u3047-\u53e3\u8a9e/, \u306d\u3048-\u53e3\u8a9e/, \u306d\u3093-\u65b9\u8a00/, \u306e, \u306e\u3046-\u53e3\u8a9e/, \u3084, \u3088, \u30e8, \u3088\u3049-\u53e3\u8a9e/, \u308f, \u308f\u3044-\u53e3\u8a9e/
-\u52a9\u8a5e-\u7d42\u52a9\u8a5e
-#
-#  particle-adverbial/conjunctive/final: The particle "ka" when unknown whether it is 
-#  adverbial, conjunctive, or sentence final. For example:
-#       (a) \u300cA \u304b B \u304b\u300d. Ex:\u300c(\u56fd\u5185\u3067\u904b\u7528\u3059\u308b) \u304b,(\u6d77\u5916\u3067\u904b\u7528\u3059\u308b) \u304b (.)\u300d
-#       (b) Inside an adverb phrase. Ex:\u300c(\u5e78\u3044\u3068\u3044\u3046) \u304b (, \u6b7b\u8005\u306f\u3044\u306a\u304b\u3063\u305f.)\u300d
-#           \u300c(\u7948\u308a\u304c\u5c4a\u3044\u305f\u305b\u3044) \u304b (, \u8a66\u9a13\u306b\u5408\u683c\u3057\u305f.)\u300d
-#       (c) \u300c\u304b\u306e\u3088\u3046\u306b\u300d. Ex:\u300c(\u4f55\u3082\u306a\u304b\u3063\u305f) \u304b (\u306e\u3088\u3046\u306b\u632f\u308b\u821e\u3063\u305f.)\u300d
-#  e.g. \u304b
-\u52a9\u8a5e-\u526f\u52a9\u8a5e\uff0f\u4e26\u7acb\u52a9\u8a5e\uff0f\u7d42\u52a9\u8a5e
-#
-#  particle-adnominalizer: The "no" that attaches to nouns and modifies 
-#  non-inflectional words.
-\u52a9\u8a5e-\u9023\u4f53\u5316
-#
-#  particle-adnominalizer: The "ni" and "to" that appear following nouns and adverbs 
-#  that are giongo, giseigo, or gitaigo.
-#  e.g. \u306b, \u3068
-\u52a9\u8a5e-\u526f\u8a5e\u5316
-#
-#  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. \u304b\u306a, \u3051\u3080, ( \u3057\u305f\u3060\u308d\u3046) \u306b, (\u3042\u3093\u305f) \u306b\u3083(\u308f\u304b\u3089\u3093), (\u4ffa) \u3093 (\u5bb6)
-\u52a9\u8a5e-\u7279\u6b8a
-#
-#####
-#  auxiliary-verb:
-\u52a9\u52d5\u8a5e
-#
-#####
-#  interjection: Greetings and other exclamations.
-#  e.g. \u304a\u306f\u3088\u3046, \u304a\u306f\u3088\u3046\u3054\u3056\u3044\u307e\u3059, \u3053\u3093\u306b\u3061\u306f, \u3053\u3093\u3070\u3093\u306f, \u3042\u308a\u304c\u3068\u3046, \u3069\u3046\u3082\u3042\u308a\u304c\u3068\u3046, \u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059, 
-#       \u3044\u305f\u3060\u304d\u307e\u3059, \u3054\u3061\u305d\u3046\u3055\u307e, \u3055\u3088\u306a\u3089, \u3055\u3088\u3046\u306a\u3089, \u306f\u3044, \u3044\u3044\u3048, \u3054\u3081\u3093, \u3054\u3081\u3093\u306a\u3055\u3044
-#\u611f\u52d5\u8a5e
-#
-#####
-#  symbol: unclassified Symbols.
-\u8a18\u53f7
-#
-#  symbol-misc: A general symbol not in one of the categories below.
-#  e.g. [\u25cb\u25ce@$\u3012\u2192+]
-\u8a18\u53f7-\u4e00\u822c
-#
-#  symbol-comma: Commas
-#  e.g. [,\u3001]
-\u8a18\u53f7-\u8aad\u70b9
-#
-#  symbol-period: Periods and full stops.
-#  e.g. [.\uff0e\u3002]
-\u8a18\u53f7-\u53e5\u70b9
-#
-#  symbol-space: Full-width whitespace.
-\u8a18\u53f7-\u7a7a\u767d
-#
-#  symbol-open_bracket:
-#  e.g. [({\u2018\u201c\u300e\u3010]
-\u8a18\u53f7-\u62ec\u5f27\u958b
-#
-#  symbol-close_bracket:
-#  e.g. [)}\u2019\u201d\u300f\u300d\u3011]
-\u8a18\u53f7-\u62ec\u5f27\u9589
-#
-#  symbol-alphabetic:
-#\u8a18\u53f7-\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8
-#
-#####
-#  other: unclassified other
-#\u305d\u306e\u4ed6
-#
-#  other-interjection: Words that are hard to classify as noun-suffixes or 
-#  sentence-final particles.
-#  e.g. (\u3060)\u30a1
-\u305d\u306e\u4ed6-\u9593\u6295
-#
-#####
-#  filler: Aizuchi that occurs during a conversation or sounds inserted as filler.
-#  e.g. \u3042\u306e, \u3046\u3093\u3068, \u3048\u3068
-\u30d5\u30a3\u30e9\u30fc
-#
-#####
-#  non-verbal: non-verbal sound.
-\u975e\u8a00\u8a9e\u97f3
-#
-#####
-#  fragment:
-#\u8a9e\u65ad\u7247
-#
-#####
-#  unknown: unknown part of speech.
-#\u672a\u77e5\u8a9e
-#
-##### End of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ar.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ar.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ar.txt
deleted file mode 100644
index 046829d..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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 \u0623 and \u0627
-\u0645\u0646
-\u0648\u0645\u0646
-\u0645\u0646\u0647\u0627
-\u0645\u0646\u0647
-\u0641\u064a
-\u0648\u0641\u064a
-\u0641\u064a\u0647\u0627
-\u0641\u064a\u0647
-\u0648
-\u0641
-\u062b\u0645
-\u0627\u0648
-\u0623\u0648
-\u0628
-\u0628\u0647\u0627
-\u0628\u0647
-\u0627
-\u0623
-\u0627\u0649
-\u0627\u064a
-\u0623\u064a
-\u0623\u0649
-\u0644\u0627
-\u0648\u0644\u0627
-\u0627\u0644\u0627
-\u0623\u0644\u0627
-\u0625\u0644\u0627
-\u0644\u0643\u0646
-\u0645\u0627
-\u0648\u0645\u0627
-\u0643\u0645\u0627
-\u0641\u0645\u0627
-\u0639\u0646
-\u0645\u0639
-\u0627\u0630\u0627
-\u0625\u0630\u0627
-\u0627\u0646
-\u0623\u0646
-\u0625\u0646
-\u0627\u0646\u0647\u0627
-\u0623\u0646\u0647\u0627
-\u0625\u0646\u0647\u0627
-\u0627\u0646\u0647
-\u0623\u0646\u0647
-\u0625\u0646\u0647
-\u0628\u0627\u0646
-\u0628\u0623\u0646
-\u0641\u0627\u0646
-\u0641\u0623\u0646
-\u0648\u0627\u0646
-\u0648\u0623\u0646
-\u0648\u0625\u0646
-\u0627\u0644\u062a\u0649
-\u0627\u0644\u062a\u064a
-\u0627\u0644\u0630\u0649
-\u0627\u0644\u0630\u064a
-\u0627\u0644\u0630\u064a\u0646
-\u0627\u0644\u0649
-\u0627\u0644\u064a
-\u0625\u0644\u0649
-\u0625\u0644\u064a
-\u0639\u0644\u0649
-\u0639\u0644\u064a\u0647\u0627
-\u0639\u0644\u064a\u0647
-\u0627\u0645\u0627
-\u0623\u0645\u0627
-\u0625\u0645\u0627
-\u0627\u064a\u0636\u0627
-\u0623\u064a\u0636\u0627
-\u0643\u0644
-\u0648\u0643\u0644
-\u0644\u0645
-\u0648\u0644\u0645
-\u0644\u0646
-\u0648\u0644\u0646
-\u0647\u0649
-\u0647\u064a
-\u0647\u0648
-\u0648\u0647\u0649
-\u0648\u0647\u064a
-\u0648\u0647\u0648
-\u0641\u0647\u0649
-\u0641\u0647\u064a
-\u0641\u0647\u0648
-\u0627\u0646\u062a
-\u0623\u0646\u062a
-\u0644\u0643
-\u0644\u0647\u0627
-\u0644\u0647
-\u0647\u0630\u0647
-\u0647\u0630\u0627
-\u062a\u0644\u0643
-\u0630\u0644\u0643
-\u0647\u0646\u0627\u0643
-\u0643\u0627\u0646\u062a
-\u0643\u0627\u0646
-\u064a\u0643\u0648\u0646
-\u062a\u0643\u0648\u0646
-\u0648\u0643\u0627\u0646\u062a
-\u0648\u0643\u0627\u0646
-\u063a\u064a\u0631
-\u0628\u0639\u0636
-\u0642\u062f
-\u0646\u062d\u0648
-\u0628\u064a\u0646
-\u0628\u064a\u0646\u0645\u0627
-\u0645\u0646\u0630
-\u0636\u0645\u0646
-\u062d\u064a\u062b
-\u0627\u0644\u0627\u0646
-\u0627\u0644\u0622\u0646
-\u062e\u0644\u0627\u0644
-\u0628\u0639\u062f
-\u0642\u0628\u0644
-\u062d\u062a\u0649
-\u0639\u0646\u062f
-\u0639\u0646\u062f\u0645\u0627
-\u0644\u062f\u0649
-\u062c\u0645\u064a\u0639

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_bg.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_bg.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_bg.txt
deleted file mode 100644
index 1ae4ba2..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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
-\u0430
-\u0430\u0437
-\u0430\u043a\u043e
-\u0430\u043b\u0430
-\u0431\u0435
-\u0431\u0435\u0437
-\u0431\u0435\u0448\u0435
-\u0431\u0438
-\u0431\u0438\u043b
-\u0431\u0438\u043b\u0430
-\u0431\u0438\u043b\u0438
-\u0431\u0438\u043b\u043e
-\u0431\u043b\u0438\u0437\u043e
-\u0431\u044a\u0434\u0430\u0442
-\u0431\u044a\u0434\u0435
-\u0431\u044f\u0445\u0430
-\u0432
-\u0432\u0430\u0441
-\u0432\u0430\u0448
-\u0432\u0430\u0448\u0430
-\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e
-\u0432\u0435\u0447\u0435
-\u0432\u0437\u0435\u043c\u0430
-\u0432\u0438
-\u0432\u0438\u0435
-\u0432\u0438\u043d\u0430\u0433\u0438
-\u0432\u0441\u0435
-\u0432\u0441\u0435\u043a\u0438
-\u0432\u0441\u0438\u0447\u043a\u0438
-\u0432\u0441\u0438\u0447\u043a\u043e
-\u0432\u0441\u044f\u043a\u0430
-\u0432\u044a\u0432
-\u0432\u044a\u043f\u0440\u0435\u043a\u0438
-\u0432\u044a\u0440\u0445\u0443
-\u0433
-\u0433\u0438
-\u0433\u043b\u0430\u0432\u043d\u043e
-\u0433\u043e
-\u0434
-\u0434\u0430
-\u0434\u0430\u043b\u0438
-\u0434\u043e
-\u0434\u043e\u043a\u0430\u0442\u043e
-\u0434\u043e\u043a\u043e\u0433\u0430
-\u0434\u043e\u0440\u0438
-\u0434\u043e\u0441\u0435\u0433\u0430
-\u0434\u043e\u0441\u0442\u0430
-\u0435
-\u0435\u0434\u0432\u0430
-\u0435\u0434\u0438\u043d
-\u0435\u0442\u043e
-\u0437\u0430
-\u0437\u0430\u0434
-\u0437\u0430\u0435\u0434\u043d\u043e
-\u0437\u0430\u0440\u0430\u0434\u0438
-\u0437\u0430\u0441\u0435\u0433\u0430
-\u0437\u0430\u0442\u043e\u0432\u0430
-\u0437\u0430\u0449\u043e
-\u0437\u0430\u0449\u043e\u0442\u043e
-\u0438
-\u0438\u0437
-\u0438\u043b\u0438
-\u0438\u043c
-\u0438\u043c\u0430
-\u0438\u043c\u0430\u0442
-\u0438\u0441\u043a\u0430
-\u0439
-\u043a\u0430\u0437\u0430
-\u043a\u0430\u043a
-\u043a\u0430\u043a\u0432\u0430
-\u043a\u0430\u043a\u0432\u043e
-\u043a\u0430\u043a\u0442\u043e
-\u043a\u0430\u043a\u044a\u0432
-\u043a\u0430\u0442\u043e
-\u043a\u043e\u0433\u0430
-\u043a\u043e\u0433\u0430\u0442\u043e
-\u043a\u043e\u0435\u0442\u043e
-\u043a\u043e\u0438\u0442\u043e
-\u043a\u043e\u0439
-\u043a\u043e\u0439\u0442\u043e
-\u043a\u043e\u043b\u043a\u043e
-\u043a\u043e\u044f\u0442\u043e
-\u043a\u044a\u0434\u0435
-\u043a\u044a\u0434\u0435\u0442\u043e
-\u043a\u044a\u043c
-\u043b\u0438
-\u043c
-\u043c\u0435
-\u043c\u0435\u0436\u0434\u0443
-\u043c\u0435\u043d
-\u043c\u0438
-\u043c\u043d\u043e\u0437\u0438\u043d\u0430
-\u043c\u043e\u0433\u0430
-\u043c\u043e\u0433\u0430\u0442
-\u043c\u043e\u0436\u0435
-\u043c\u043e\u043b\u044f
-\u043c\u043e\u043c\u0435\u043d\u0442\u0430
-\u043c\u0443
-\u043d
-\u043d\u0430
-\u043d\u0430\u0434
-\u043d\u0430\u0437\u0430\u0434
-\u043d\u0430\u0439
-\u043d\u0430\u043f\u0440\u0430\u0432\u0438
-\u043d\u0430\u043f\u0440\u0435\u0434
-\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440
-\u043d\u0430\u0441
-\u043d\u0435
-\u043d\u0435\u0433\u043e
-\u043d\u0435\u044f
-\u043d\u0438
-\u043d\u0438\u0435
-\u043d\u0438\u043a\u043e\u0439
-\u043d\u0438\u0442\u043e
-\u043d\u043e
-\u043d\u044f\u043a\u043e\u0438
-\u043d\u044f\u043a\u043e\u0439
-\u043d\u044f\u043c\u0430
-\u043e\u0431\u0430\u0447\u0435
-\u043e\u043a\u043e\u043b\u043e
-\u043e\u0441\u0432\u0435\u043d
-\u043e\u0441\u043e\u0431\u0435\u043d\u043e
-\u043e\u0442
-\u043e\u0442\u0433\u043e\u0440\u0435
-\u043e\u0442\u043d\u043e\u0432\u043e
-\u043e\u0449\u0435
-\u043f\u0430\u043a
-\u043f\u043e
-\u043f\u043e\u0432\u0435\u0447\u0435
-\u043f\u043e\u0432\u0435\u0447\u0435\u0442\u043e
-\u043f\u043e\u0434
-\u043f\u043e\u043d\u0435
-\u043f\u043e\u0440\u0430\u0434\u0438
-\u043f\u043e\u0441\u043b\u0435
-\u043f\u043e\u0447\u0442\u0438
-\u043f\u0440\u0430\u0432\u0438
-\u043f\u0440\u0435\u0434
-\u043f\u0440\u0435\u0434\u0438
-\u043f\u0440\u0435\u0437
-\u043f\u0440\u0438
-\u043f\u044a\u043a
-\u043f\u044a\u0440\u0432\u043e
-\u0441
-\u0441\u0430
-\u0441\u0430\u043c\u043e
-\u0441\u0435
-\u0441\u0435\u0433\u0430
-\u0441\u0438
-\u0441\u043a\u043e\u0440\u043e
-\u0441\u043b\u0435\u0434
-\u0441\u043c\u0435
-\u0441\u043f\u043e\u0440\u0435\u0434
-\u0441\u0440\u0435\u0434
-\u0441\u0440\u0435\u0449\u0443
-\u0441\u0442\u0435
-\u0441\u044a\u043c
-\u0441\u044a\u0441
-\u0441\u044a\u0449\u043e
-\u0442
-\u0442\u0430\u0437\u0438
-\u0442\u0430\u043a\u0430
-\u0442\u0430\u043a\u0438\u0432\u0430
-\u0442\u0430\u043a\u044a\u0432
-\u0442\u0430\u043c
-\u0442\u0432\u043e\u0439
-\u0442\u0435
-\u0442\u0435\u0437\u0438
-\u0442\u0438
-\u0442\u043d
-\u0442\u043e
-\u0442\u043e\u0432\u0430
-\u0442\u043e\u0433\u0430\u0432\u0430
-\u0442\u043e\u0437\u0438
-\u0442\u043e\u0439
-\u0442\u043e\u043b\u043a\u043e\u0432\u0430
-\u0442\u043e\u0447\u043d\u043e
-\u0442\u0440\u044f\u0431\u0432\u0430
-\u0442\u0443\u043a
-\u0442\u044a\u0439
-\u0442\u044f
-\u0442\u044f\u0445
-\u0443
-\u0445\u0430\u0440\u0435\u0441\u0432\u0430
-\u0447
-\u0447\u0435
-\u0447\u0435\u0441\u0442\u043e
-\u0447\u0440\u0435\u0437
-\u0449\u0435
-\u0449\u043e\u043c
-\u044f

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ca.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ca.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ca.txt
deleted file mode 100644
index 3da65de..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_cz.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_cz.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_cz.txt
deleted file mode 100644
index 53c6097..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_cz.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-a
-s
-k
-o
-i
-u
-v
-z
-dnes
-cz
-t�mto
-bude\u0161
-budem
-byli
-jse\u0161
-m\u016fj
-sv�m
-ta
-tomto
-tohle
-tuto
-tyto
-jej
-zda
-pro\u010d
-m�te
-tato
-kam
-tohoto
-kdo
-kte\u0159�
-mi
-n�m
-tom
-tomuto
-m�t
-nic
-proto
-kterou
-byla
-toho
-proto\u017ee
-asi
-ho
-na\u0161i
-napi\u0161te
-re
-co\u017e
-t�m
-tak\u017ee
-sv�ch
-jej�
-sv�mi
-jste
-aj
-tu
-tedy
-teto
-bylo
-kde
-ke
-prav�
-ji
-nad
-nejsou
-\u010di
-pod
-t�ma
-mezi
-p\u0159es
-ty
-pak
-v�m
-ani
-kdy\u017e
-v\u0161ak
-neg
-jsem
-tento
-\u010dl�nku
-\u010dl�nky
-aby
-jsme
-p\u0159ed
-pta
-jejich
-byl
-je\u0161t\u011b
-a\u017e
-bez
-tak�
-pouze
-prvn�
-va\u0161e
-kter�
-n�s
-nov�
-tipy
-pokud
-m\u016f\u017ee
-strana
-jeho
-sv�
-jin�
-zpr�vy
-nov�
-nen�
-v�s
-jen
-podle
-zde
-u\u017e
-b�t
-v�ce
-bude
-ji\u017e
-ne\u017e
-kter�
-by
-kter�
-co
-nebo
-ten
-tak
-m�
-p\u0159i
-od
-po
-jsou
-jak
-dal\u0161�
-ale
-si
-se
-ve
-to
-jako
-za
-zp\u011bt
-ze
-do
-pro
-je
-na
-atd
-atp
-jakmile
-p\u0159i\u010dem\u017e
-j�
-on
-ona
-ono
-oni
-ony
-my
-vy
-j�
-ji
-m\u011b
-mne
-jemu
-tomu
-t\u011bm
-t\u011bmu
-n\u011bmu
-n\u011bmu\u017e
-jeho\u017e
-j�\u017e
-jeliko\u017e
-je\u017e
-jako\u017e
-na\u010de\u017e

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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_el.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_el.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_el.txt
deleted file mode 100644
index 232681f..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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 '\u03c3' instead of '\u03c2' 
-\u03bf
-\u03b7
-\u03c4\u03bf
-\u03bf\u03b9
-\u03c4\u03b1
-\u03c4\u03bf\u03c5
-\u03c4\u03b7\u03c3
-\u03c4\u03c9\u03bd
-\u03c4\u03bf\u03bd
-\u03c4\u03b7\u03bd
-\u03ba\u03b1\u03b9 
-\u03ba\u03b9
-\u03ba
-\u03b5\u03b9\u03bc\u03b1\u03b9
-\u03b5\u03b9\u03c3\u03b1\u03b9
-\u03b5\u03b9\u03bd\u03b1\u03b9
-\u03b5\u03b9\u03bc\u03b1\u03c3\u03c4\u03b5
-\u03b5\u03b9\u03c3\u03c4\u03b5
-\u03c3\u03c4\u03bf
-\u03c3\u03c4\u03bf\u03bd
-\u03c3\u03c4\u03b7
-\u03c3\u03c4\u03b7\u03bd
-\u03bc\u03b1
-\u03b1\u03bb\u03bb\u03b1
-\u03b1\u03c0\u03bf
-\u03b3\u03b9\u03b1
-\u03c0\u03c1\u03bf\u03c3
-\u03bc\u03b5
-\u03c3\u03b5
-\u03c9\u03c3
-\u03c0\u03b1\u03c1\u03b1
-\u03b1\u03bd\u03c4\u03b9
-\u03ba\u03b1\u03c4\u03b1
-\u03bc\u03b5\u03c4\u03b1
-\u03b8\u03b1
-\u03bd\u03b1
-\u03b4\u03b5
-\u03b4\u03b5\u03bd
-\u03bc\u03b7
-\u03bc\u03b7\u03bd
-\u03b5\u03c0\u03b9
-\u03b5\u03bd\u03c9
-\u03b5\u03b1\u03bd
-\u03b1\u03bd
-\u03c4\u03bf\u03c4\u03b5
-\u03c0\u03bf\u03c5
-\u03c0\u03c9\u03c3
-\u03c0\u03bf\u03b9\u03bf\u03c3
-\u03c0\u03bf\u03b9\u03b1
-\u03c0\u03bf\u03b9\u03bf
-\u03c0\u03bf\u03b9\u03bf\u03b9
-\u03c0\u03bf\u03b9\u03b5\u03c3
-\u03c0\u03bf\u03b9\u03c9\u03bd
-\u03c0\u03bf\u03b9\u03bf\u03c5\u03c3
-\u03b1\u03c5\u03c4\u03bf\u03c3
-\u03b1\u03c5\u03c4\u03b7
-\u03b1\u03c5\u03c4\u03bf
-\u03b1\u03c5\u03c4\u03bf\u03b9
-\u03b1\u03c5\u03c4\u03c9\u03bd
-\u03b1\u03c5\u03c4\u03bf\u03c5\u03c3
-\u03b1\u03c5\u03c4\u03b5\u03c3
-\u03b1\u03c5\u03c4\u03b1
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03c3
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b7
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03b9
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b5\u03c3
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b1
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03c9\u03bd
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03c5\u03c3
-\u03bf\u03c0\u03c9\u03c3
-\u03bf\u03bc\u03c9\u03c3
-\u03b9\u03c3\u03c9\u03c3
-\u03bf\u03c3\u03bf
-\u03bf\u03c4\u03b9

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_en.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_en.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_en.txt
deleted file mode 100644
index 2c164c0..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_eu.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_eu.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_eu.txt
deleted file mode 100644
index 25f1db9..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_fa.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_fa.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_fa.txt
deleted file mode 100644
index 723641c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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 '\u064a' instead of '\u06cc'
-\u0627\u0646\u0627\u0646
-\u0646\u062f\u0627\u0634\u062a\u0647
-\u0633\u0631\u0627\u0633\u0631
-\u062e\u064a\u0627\u0647
-\u0627\u064a\u0634\u0627\u0646
-\u0648\u064a
-\u062a\u0627\u0643\u0646\u0648\u0646
-\u0628\u064a\u0634\u062a\u0631\u064a
-\u062f\u0648\u0645
-\u067e\u0633
-\u0646\u0627\u0634\u064a
-\u0648\u06af\u0648
-\u064a\u0627
-\u062f\u0627\u0634\u062a\u0646\u062f
-\u0633\u067e\u0633
-\u0647\u0646\u06af\u0627\u0645
-\u0647\u0631\u06af\u0632
-\u067e\u0646\u062c
-\u0646\u0634\u0627\u0646
-\u0627\u0645\u0633\u0627\u0644
-\u062f\u064a\u06af\u0631
-\u06af\u0631\u0648\u0647\u064a
-\u0634\u062f\u0646\u062f
-\u0686\u0637\u0648\u0631
-\u062f\u0647
-\u0648
-\u062f\u0648
-\u0646\u062e\u0633\u062a\u064a\u0646
-\u0648\u0644\u064a
-\u0686\u0631\u0627
-\u0686\u0647
-\u0648\u0633\u0637
-\u0647
-\u0643\u062f\u0627\u0645
-\u0642\u0627\u0628\u0644
-\u064a\u0643
-\u0631\u0641\u062a
-\u0647\u0641\u062a
-\u0647\u0645\u0686\u0646\u064a\u0646
-\u062f\u0631
-\u0647\u0632\u0627\u0631
-\u0628\u0644\u0647
-\u0628\u0644\u064a
-\u0634\u0627\u064a\u062f
-\u0627\u0645\u0627
-\u0634\u0646\u0627\u0633\u064a
-\u06af\u0631\u0641\u062a\u0647
-\u062f\u0647\u062f
-\u062f\u0627\u0634\u062a\u0647
-\u062f\u0627\u0646\u0633\u062a
-\u062f\u0627\u0634\u062a\u0646
-\u062e\u0648\u0627\u0647\u064a\u0645
-\u0645\u064a\u0644\u064a\u0627\u0631\u062f
-\u0648\u0642\u062a\u064a\u0643\u0647
-\u0627\u0645\u062f
-\u062e\u0648\u0627\u0647\u062f
-\u062c\u0632
-\u0627\u0648\u0631\u062f\u0647
-\u0634\u062f\u0647
-\u0628\u0644\u0643\u0647
-\u062e\u062f\u0645\u0627\u062a
-\u0634\u062f\u0646
-\u0628\u0631\u062e\u064a
-\u0646\u0628\u0648\u062f
-\u0628\u0633\u064a\u0627\u0631\u064a
-\u062c\u0644\u0648\u06af\u064a\u0631\u064a
-\u062d\u0642
-\u0643\u0631\u062f\u0646\u062f
-\u0646\u0648\u0639\u064a
-\u0628\u0639\u0631\u064a
-\u0646\u0643\u0631\u062f\u0647
-\u0646\u0638\u064a\u0631
-\u0646\u0628\u0627\u064a\u062f
-\u0628\u0648\u062f\u0647
-\u0628\u0648\u062f\u0646
-\u062f\u0627\u062f
-\u0627\u0648\u0631\u062f
-\u0647\u0633\u062a
-\u062c\u0627\u064a\u064a
-\u0634\u0648\u062f
-\u062f\u0646\u0628\u0627\u0644
-\u062f\u0627\u062f\u0647
-\u0628\u0627\u064a\u062f
-\u0633\u0627\u0628\u0642
-\u0647\u064a\u0686
-\u0647\u0645\u0627\u0646
-\u0627\u0646\u062c\u0627
-\u0643\u0645\u062a\u0631
-\u0643\u062c\u0627\u0633\u062a
-\u06af\u0631\u062f\u062f
-\u0643\u0633\u064a
-\u062a\u0631
-\u0645\u0631\u062f\u0645
-\u062a\u0627\u0646
-\u062f\u0627\u062f\u0646
-\u0628\u0648\u062f\u0646\u062f
-\u0633\u0631\u064a
-\u062c\u062f\u0627
-\u0646\u062f\u0627\u0631\u0646\u062f
-\u0645\u06af\u0631
-\u064a\u0643\u062f\u064a\u06af\u0631
-\u062f\u0627\u0631\u062f
-\u062f\u0647\u0646\u062f
-\u0628\u0646\u0627\u0628\u0631\u0627\u064a\u0646
-\u0647\u0646\u06af\u0627\u0645\u064a
-\u0633\u0645\u062a
-\u062c\u0627
-\u0627\u0646\u0686\u0647
-\u062e\u0648\u062f
-\u062f\u0627\u062f\u0646\u062f
-\u0632\u064a\u0627\u062f
-\u062f\u0627\u0631\u0646\u062f
-\u0627\u062b\u0631
-\u0628\u062f\u0648\u0646
-\u0628\u0647\u062a\u0631\u064a\u0646
-\u0628\u064a\u0634\u062a\u0631
-\u0627\u0644\u0628\u062a\u0647
-\u0628\u0647
-\u0628\u0631\u0627\u0633\u0627\u0633
-\u0628\u064a\u0631\u0648\u0646
-\u0643\u0631\u062f
-\u0628\u0639\u0636\u064a
-\u06af\u0631\u0641\u062a
-\u062a\u0648\u064a
-\u0627\u064a
-\u0645\u064a\u0644\u064a\u0648\u0646
-\u0627\u0648
-\u062c\u0631\u064a\u0627\u0646
-\u062a\u0648\u0644
-\u0628\u0631
-\u0645\u0627\u0646\u0646\u062f
-\u0628\u0631\u0627\u0628\u0631
-\u0628\u0627\u0634\u064a\u0645
-\u0645\u062f\u062a\u064a
-\u06af\u0648\u064a\u0646\u062f
-\u0627\u0643\u0646\u0648\u0646
-\u062a\u0627
-\u062a\u0646\u0647\u0627
-\u062c\u062f\u064a\u062f
-\u0686\u0646\u062f
-\u0628\u064a
-\u0646\u0634\u062f\u0647
-\u0643\u0631\u062f\u0646
-\u0643\u0631\u062f\u0645
-\u06af\u0648\u064a\u062f
-\u0643\u0631\u062f\u0647
-\u0643\u0646\u064a\u0645
-\u0646\u0645\u064a
-\u0646\u0632\u062f
-\u0631\u0648\u064a
-\u0642\u0635\u062f
-\u0641\u0642\u0637
-\u0628\u0627\u0644\u0627\u064a
-\u062f\u064a\u06af\u0631\u0627\u0646
-\u0627\u064a\u0646
-\u062f\u064a\u0631\u0648\u0632
-\u062a\u0648\u0633\u0637
-\u0633\u0648\u0645
-\u0627\u064a\u0645
-\u062f\u0627\u0646\u0646\u062f
-\u0633\u0648\u064a
-\u0627\u0633\u062a\u0641\u0627\u062f\u0647
-\u0634\u0645\u0627
-\u0643\u0646\u0627\u0631
-\u062f\u0627\u0631\u064a\u0645
-\u0633\u0627\u062e\u062a\u0647
-\u0637\u0648\u0631
-\u0627\u0645\u062f\u0647
-\u0631\u0641\u062a\u0647
-\u0646\u062e\u0633\u062a
-\u0628\u064a\u0633\u062a
-\u0646\u0632\u062f\u064a\u0643
-\u0637\u064a
-\u0643\u0646\u064a\u062f
-\u0627\u0632
-\u0627\u0646\u0647\u0627
-\u062a\u0645\u0627\u0645\u064a
-\u062f\u0627\u0634\u062a
-\u064a\u0643\u064a
-\u0637\u0631\u064a\u0642
-\u0627\u0634
-\u0686\u064a\u0633\u062a
-\u0631\u0648\u0628
-\u0646\u0645\u0627\u064a\u062f
-\u06af\u0641\u062a
-\u0686\u0646\u062f\u064a\u0646
-\u0686\u064a\u0632\u064a
-\u062a\u0648\u0627\u0646\u062f
-\u0627\u0645
-\u0627\u064a\u0627
-\u0628\u0627
-\u0627\u0646
-\u0627\u064a\u062f
-\u062a\u0631\u064a\u0646
-\u0627\u064a\u0646\u0643\u0647
-\u062f\u064a\u06af\u0631\u064a
-\u0631\u0627\u0647
-\u0647\u0627\u064a\u064a
-\u0628\u0631\u0648\u0632
-\u0647\u0645\u0686\u0646\u0627\u0646
-\u067e\u0627\u0639\u064a\u0646
-\u0643\u0633
-\u062d\u062f\u0648\u062f
-\u0645\u062e\u062a\u0644\u0641
-\u0645\u0642\u0627\u0628\u0644
-\u0686\u064a\u0632
-\u06af\u064a\u0631\u062f
-\u0646\u062f\u0627\u0631\u062f
-\u0636\u062f
-\u0647\u0645\u0686\u0648\u0646
-\u0633\u0627\u0632\u064a
-\u0634\u0627\u0646
-\u0645\u0648\u0631\u062f
-\u0628\u0627\u0631\u0647
-\u0645\u0631\u0633\u064a
-\u062e\u0648\u064a\u0634
-\u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631
-\u0686\u0648\u0646
-\u062e\u0627\u0631\u062c
-\u0634\u0634
-\u0647\u0646\u0648\u0632
-\u062a\u062d\u062a
-\u0636\u0645\u0646
-\u0647\u0633\u062a\u064a\u0645
-\u06af\u0641\u062a\u0647
-\u0641\u0643\u0631
-\u0628\u0633\u064a\u0627\u0631
-\u067e\u064a\u0634
-\u0628\u0631\u0627\u064a
-\u0631\u0648\u0632\u0647\u0627\u064a
-\u0627\u0646\u0643\u0647
-\u0646\u062e\u0648\u0627\u0647\u062f
-\u0628\u0627\u0644\u0627
-\u0643\u0644
-\u0648\u0642\u062a\u064a
-\u0643\u064a
-\u0686\u0646\u064a\u0646
-\u0643\u0647
-\u06af\u064a\u0631\u064a
-\u0646\u064a\u0633\u062a
-\u0627\u0633\u062a
-\u0643\u062c\u0627
-\u0643\u0646\u062f
-\u0646\u064a\u0632
-\u064a\u0627\u0628\u062f
-\u0628\u0646\u062f\u064a
-\u062d\u062a\u064a
-\u062a\u0648\u0627\u0646\u0646\u062f
-\u0639\u0642\u0628
-\u062e\u0648\u0627\u0633\u062a
-\u0643\u0646\u0646\u062f
-\u0628\u064a\u0646
-\u062a\u0645\u0627\u0645
-\u0647\u0645\u0647
-\u0645\u0627
-\u0628\u0627\u0634\u0646\u062f
-\u0645\u062b\u0644
-\u0634\u062f
-\u0627\u0631\u064a
-\u0628\u0627\u0634\u062f
-\u0627\u0631\u0647
-\u0637\u0628\u0642
-\u0628\u0639\u062f
-\u0627\u06af\u0631
-\u0635\u0648\u0631\u062a
-\u063a\u064a\u0631
-\u062c\u0627\u064a
-\u0628\u064a\u0634
-\u0631\u064a\u0632\u064a
-\u0627\u0646\u062f
-\u0632\u064a\u0631\u0627
-\u0686\u06af\u0648\u0646\u0647
-\u0628\u0627\u0631
-\u0644\u0637\u0641\u0627
-\u0645\u064a
-\u062f\u0631\u0628\u0627\u0631\u0647
-\u0645\u0646
-\u062f\u064a\u062f\u0647
-\u0647\u0645\u064a\u0646
-\u06af\u0630\u0627\u0631\u064a
-\u0628\u0631\u062f\u0627\u0631\u064a
-\u0639\u0644\u062a
-\u06af\u0630\u0627\u0634\u062a\u0647
-\u0647\u0645
-\u0641\u0648\u0642
-\u0646\u0647
-\u0647\u0627
-\u0634\u0648\u0646\u062f
-\u0627\u0628\u0627\u062f
-\u0647\u0645\u0648\u0627\u0631\u0647
-\u0647\u0631
-\u0627\u0648\u0644
-\u062e\u0648\u0627\u0647\u0646\u062f
-\u0686\u0647\u0627\u0631
-\u0646\u0627\u0645
-\u0627\u0645\u0631\u0648\u0632
-\u0645\u0627\u0646
-\u0647\u0627\u064a
-\u0642\u0628\u0644
-\u0643\u0646\u0645
-\u0633\u0639\u064a
-\u062a\u0627\u0632\u0647
-\u0631\u0627
-\u0647\u0633\u062a\u0646\u062f
-\u0632\u064a\u0631
-\u062c\u0644\u0648\u064a
-\u0639\u0646\u0648\u0627\u0646
-\u0628\u0648\u062f

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_fr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_fr.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_fr.txt
deleted file mode 100644
index c00837ea..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_fr.txt
+++ /dev/null
@@ -1,183 +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.
-
- | 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
-cel�          |  that
-cet            |  this
-cette          |  this
-ici            |  here
-ils            |  they
-les            |  the (pl)
-leurs          |  their (pl)
-quel           |  which
-quels          |  which
-quelle         |  which
-quelles        |  which
-sans           |  without
-soi            |  oneself
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ga.txt
deleted file mode 100644
index 9ff88d7..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_gl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_gl.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_gl.txt
deleted file mode 100644
index d8760b1..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hi.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hi.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hi.txt
deleted file mode 100644
index 86286bb..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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. 
-\u0905\u0902\u0926\u0930
-\u0905\u0924
-\u0905\u092a\u0928\u093e
-\u0905\u092a\u0928\u0940
-\u0905\u092a\u0928\u0947
-\u0905\u092d\u0940
-\u0906\u0926\u093f
-\u0906\u092a
-\u0907\u0924\u094d\u092f\u093e\u0926\u093f
-\u0907\u0928 
-\u0907\u0928\u0915\u093e
-\u0907\u0928\u094d\u0939\u0940\u0902
-\u0907\u0928\u094d\u0939\u0947\u0902
-\u0907\u0928\u094d\u0939\u094b\u0902
-\u0907\u0938
-\u0907\u0938\u0915\u093e
-\u0907\u0938\u0915\u0940
-\u0907\u0938\u0915\u0947
-\u0907\u0938\u092e\u0947\u0902
-\u0907\u0938\u0940
-\u0907\u0938\u0947
-\u0909\u0928
-\u0909\u0928\u0915\u093e
-\u0909\u0928\u0915\u0940
-\u0909\u0928\u0915\u0947
-\u0909\u0928\u0915\u094b
-\u0909\u0928\u094d\u0939\u0940\u0902
-\u0909\u0928\u094d\u0939\u0947\u0902
-\u0909\u0928\u094d\u0939\u094b\u0902
-\u0909\u0938
-\u0909\u0938\u0915\u0947
-\u0909\u0938\u0940
-\u0909\u0938\u0947
-\u090f\u0915
-\u090f\u0935\u0902
-\u090f\u0938
-\u0910\u0938\u0947
-\u0914\u0930
-\u0915\u0908
-\u0915\u0930
-\u0915\u0930\u0924\u093e
-\u0915\u0930\u0924\u0947
-\u0915\u0930\u0928\u093e
-\u0915\u0930\u0928\u0947
-\u0915\u0930\u0947\u0902
-\u0915\u0939\u0924\u0947
-\u0915\u0939\u093e
-\u0915\u093e
-\u0915\u093e\u095e\u0940
-\u0915\u093f
-\u0915\u093f\u0924\u0928\u093e
-\u0915\u093f\u0928\u094d\u0939\u0947\u0902
-\u0915\u093f\u0928\u094d\u0939\u094b\u0902
-\u0915\u093f\u092f\u093e
-\u0915\u093f\u0930
-\u0915\u093f\u0938
-\u0915\u093f\u0938\u0940
-\u0915\u093f\u0938\u0947
-\u0915\u0940
-\u0915\u0941\u091b
-\u0915\u0941\u0932
-\u0915\u0947
-\u0915\u094b
-\u0915\u094b\u0908
-\u0915\u094c\u0928
-\u0915\u094c\u0928\u0938\u093e
-\u0917\u092f\u093e
-\u0918\u0930
-\u091c\u092c
-\u091c\u0939\u093e\u0901
-\u091c\u093e
-\u091c\u093f\u0924\u0928\u093e
-\u091c\u093f\u0928
-\u091c\u093f\u0928\u094d\u0939\u0947\u0902
-\u091c\u093f\u0928\u094d\u0939\u094b\u0902
-\u091c\u093f\u0938
-\u091c\u093f\u0938\u0947
-\u091c\u0940\u0927\u0930
-\u091c\u0948\u0938\u093e
-\u091c\u0948\u0938\u0947
-\u091c\u094b
-\u0924\u0915
-\u0924\u092c
-\u0924\u0930\u0939
-\u0924\u093f\u0928
-\u0924\u093f\u0928\u094d\u0939\u0947\u0902
-\u0924\u093f\u0928\u094d\u0939\u094b\u0902
-\u0924\u093f\u0938
-\u0924\u093f\u0938\u0947
-\u0924\u094b
-\u0925\u093e
-\u0925\u0940
-\u0925\u0947
-\u0926\u092c\u093e\u0930\u093e
-\u0926\u093f\u092f\u093e
-\u0926\u0941\u0938\u0930\u093e
-\u0926\u0942\u0938\u0930\u0947
-\u0926\u094b
-\u0926\u094d\u0935\u093e\u0930\u093e
-\u0928
-\u0928\u0939\u0940\u0902
-\u0928\u093e
-\u0928\u093f\u0939\u093e\u092f\u0924
-\u0928\u0940\u091a\u0947
-\u0928\u0947
-\u092a\u0930
-\u092a\u0930  
-\u092a\u0939\u0932\u0947
-\u092a\u0942\u0930\u093e
-\u092a\u0947
-\u092b\u093f\u0930
-\u092c\u0928\u0940
-\u092c\u0939\u0940
-\u092c\u0939\u0941\u0924
-\u092c\u093e\u0926
-\u092c\u093e\u0932\u093e
-\u092c\u093f\u0932\u0915\u0941\u0932
-\u092d\u0940
-\u092d\u0940\u0924\u0930
-\u092e\u0917\u0930
-\u092e\u093e\u0928\u094b
-\u092e\u0947
-\u092e\u0947\u0902
-\u092f\u0926\u093f
-\u092f\u0939
-\u092f\u0939\u093e\u0901
-\u092f\u0939\u0940
-\u092f\u093e
-\u092f\u093f\u0939 
-\u092f\u0947
-\u0930\u0916\u0947\u0902
-\u0930\u0939\u093e
-\u0930\u0939\u0947
-\u0931\u094d\u0935\u093e\u0938\u093e
-\u0932\u093f\u090f
-\u0932\u093f\u092f\u0947
-\u0932\u0947\u0915\u093f\u0928
-\u0935
-\u0935\u0930\u094d\u0917
-\u0935\u0939
-\u0935\u0939 
-\u0935\u0939\u093e\u0901
-\u0935\u0939\u0940\u0902
-\u0935\u093e\u0932\u0947
-\u0935\u0941\u0939 
-\u0935\u0947
-\u0935\u095a\u0948\u0930\u0939
-\u0938\u0902\u0917
-\u0938\u0915\u0924\u093e
-\u0938\u0915\u0924\u0947
-\u0938\u092c\u0938\u0947
-\u0938\u092d\u0940
-\u0938\u093e\u0925
-\u0938\u093e\u092c\u0941\u0924
-\u0938\u093e\u092d
-\u0938\u093e\u0930\u093e
-\u0938\u0947
-\u0938\u094b
-\u0939\u0940
-\u0939\u0941\u0906
-\u0939\u0941\u0908
-\u0939\u0941\u090f
-\u0939\u0948
-\u0939\u0948\u0902
-\u0939\u094b
-\u0939\u094b\u0924\u093e
-\u0939\u094b\u0924\u0940
-\u0939\u094b\u0924\u0947
-\u0939\u094b\u0928\u093e
-\u0939\u094b\u0928\u0947
-# additional normalized forms of the above
-\u0905\u092a\u0928\u093f
-\u091c\u0947\u0938\u0947
-\u0939\u094b\u0924\u093f
-\u0938\u092d\u093f
-\u0924\u093f\u0902\u0939\u094b\u0902
-\u0907\u0902\u0939\u094b\u0902
-\u0926\u0935\u093e\u0930\u093e
-\u0907\u0938\u093f
-\u0915\u093f\u0902\u0939\u0947\u0902
-\u0925\u093f
-\u0909\u0902\u0939\u094b\u0902
-\u0913\u0930
-\u091c\u093f\u0902\u0939\u0947\u0902
-\u0935\u0939\u093f\u0902
-\u0905\u092d\u093f
-\u092c\u0928\u093f
-\u0939\u093f
-\u0909\u0902\u0939\u093f\u0902
-\u0909\u0902\u0939\u0947\u0902
-\u0939\u0947\u0902
-\u0935\u0917\u0947\u0930\u0939
-\u090f\u0938\u0947
-\u0930\u0935\u093e\u0938\u093e
-\u0915\u094b\u0928
-\u0928\u093f\u091a\u0947
-\u0915\u093e\u092b\u093f
-\u0909\u0938\u093f
-\u092a\u0941\u0930\u093e
-\u092d\u093f\u0924\u0930
-\u0939\u0947
-\u092c\u0939\u093f
-\u0935\u0939\u093e\u0902
-\u0915\u094b\u0907
-\u092f\u0939\u093e\u0902
-\u091c\u093f\u0902\u0939\u094b\u0902
-\u0924\u093f\u0902\u0939\u0947\u0902
-\u0915\u093f\u0938\u093f
-\u0915\u0907
-\u092f\u0939\u093f
-\u0907\u0902\u0939\u093f\u0902
-\u091c\u093f\u0927\u0930
-\u0907\u0902\u0939\u0947\u0902
-\u0905\u0926\u093f
-\u0907\u0924\u092f\u093e\u0926\u093f
-\u0939\u0941\u0907
-\u0915\u094b\u0928\u0938\u093e
-\u0907\u0938\u0915\u093f
-\u0926\u0941\u0938\u0930\u0947
-\u091c\u0939\u093e\u0902
-\u0905\u092a
-\u0915\u093f\u0902\u0939\u094b\u0902
-\u0909\u0928\u0915\u093f
-\u092d\u093f
-\u0935\u0930\u0917
-\u0939\u0941\u0905
-\u091c\u0947\u0938\u093e
-\u0928\u0939\u093f\u0902

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hu.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hu.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hu.txt
deleted file mode 100644
index 1a96f1d..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hu.txt
+++ /dev/null
@@ -1,209 +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.
- 
-| 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\u0151
-el\u0151sz�r
-el\u0151tt
-els\u0151
-�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
-\u0151
-\u0151k
-\u0151ket
-pedig
-persze
-r�
-s
-saj�t
-sem
-semmi
-sok
-sokat
-sokkal
-sz�m�ra
-szemben
-szerint
-szinte
-tal�n
-teh�t
-teljes
-tov�bb
-tov�bb�
-t�bb
-�gy
-ugyanis
-�j
-�jabb
-�jra
-ut�n
-ut�na
-utols�
-vagy
-vagyis
-valaki
-valami
-valamint
-val�
-vagyok
-van
-vannak
-volt
-voltam
-voltak
-voltunk
-vissza
-vele
-viszont
-volna

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hy.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hy.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hy.txt
deleted file mode 100644
index 60c1c50..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_hy.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-# example set of Armenian stopwords.
-\u0561\u0575\u0564
-\u0561\u0575\u056c
-\u0561\u0575\u0576
-\u0561\u0575\u057d
-\u0564\u0578\u0582
-\u0564\u0578\u0582\u0584
-\u0565\u0574
-\u0565\u0576
-\u0565\u0576\u0584
-\u0565\u057d
-\u0565\u0584
-\u0567
-\u0567\u056b
-\u0567\u056b\u0576
-\u0567\u056b\u0576\u0584
-\u0567\u056b\u0580
-\u0567\u056b\u0584
-\u0567\u0580
-\u0568\u057d\u057f
-\u0569
-\u056b
-\u056b\u0576
-\u056b\u057d\u056f
-\u056b\u0580
-\u056f\u0561\u0574
-\u0570\u0561\u0574\u0561\u0580
-\u0570\u0565\u057f
-\u0570\u0565\u057f\u0578
-\u0574\u0565\u0576\u0584
-\u0574\u0565\u057b
-\u0574\u056b
-\u0576
-\u0576\u0561
-\u0576\u0561\u0587
-\u0576\u0580\u0561
-\u0576\u0580\u0561\u0576\u0584
-\u0578\u0580
-\u0578\u0580\u0568
-\u0578\u0580\u0578\u0576\u0584
-\u0578\u0580\u057a\u0565\u057d
-\u0578\u0582
-\u0578\u0582\u0574
-\u057a\u056b\u057f\u056b
-\u057e\u0580\u0561
-\u0587

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_id.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_id.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_id.txt
deleted file mode 100644
index 4617f83..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_ja.txt
deleted file mode 100644
index d4321be..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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.
-#
-\u306e
-\u306b
-\u306f
-\u3092
-\u305f
-\u304c
-\u3067
-\u3066
-\u3068
-\u3057
-\u308c
-\u3055
-\u3042\u308b
-\u3044\u308b
-\u3082
-\u3059\u308b
-\u304b\u3089
-\u306a
-\u3053\u3068
-\u3068\u3057\u3066
-\u3044
-\u3084
-\u308c\u308b
-\u306a\u3069
-\u306a\u3063
-\u306a\u3044
-\u3053\u306e
-\u305f\u3081
-\u305d\u306e
-\u3042\u3063
-\u3088\u3046
-\u307e\u305f
-\u3082\u306e
-\u3068\u3044\u3046
-\u3042\u308a
-\u307e\u3067
-\u3089\u308c
-\u306a\u308b
-\u3078
-\u304b
-\u3060
-\u3053\u308c
-\u306b\u3088\u3063\u3066
-\u306b\u3088\u308a
-\u304a\u308a
-\u3088\u308a
-\u306b\u3088\u308b
-\u305a
-\u306a\u308a
-\u3089\u308c\u308b
-\u306b\u304a\u3044\u3066
-\u3070
-\u306a\u304b\u3063
-\u306a\u304f
-\u3057\u304b\u3057
-\u306b\u3064\u3044\u3066
-\u305b
-\u3060\u3063
-\u305d\u306e\u5f8c
-\u3067\u304d\u308b
-\u305d\u308c
-\u3046
-\u306e\u3067
-\u306a\u304a
-\u306e\u307f
-\u3067\u304d
-\u304d
-\u3064
-\u306b\u304a\u3051\u308b
-\u304a\u3088\u3073
-\u3044\u3046
-\u3055\u3089\u306b
-\u3067\u3082
-\u3089
-\u305f\u308a
-\u305d\u306e\u4ed6
-\u306b\u95a2\u3059\u308b
-\u305f\u3061
-\u307e\u3059
-\u3093
-\u306a\u3089
-\u306b\u5bfe\u3057\u3066
-\u7279\u306b
-\u305b\u308b
-\u53ca\u3073
-\u3053\u308c\u3089
-\u3068\u304d
-\u3067\u306f
-\u306b\u3066
-\u307b\u304b
-\u306a\u304c\u3089
-\u3046\u3061
-\u305d\u3057\u3066
-\u3068\u3068\u3082\u306b
-\u305f\u3060\u3057
-\u304b\u3064\u3066
-\u305d\u308c\u305e\u308c
-\u307e\u305f\u306f
-\u304a
-\u307b\u3069
-\u3082\u306e\u306e
-\u306b\u5bfe\u3059\u308b
-\u307b\u3068\u3093\u3069
-\u3068\u5171\u306b
-\u3068\u3044\u3063\u305f
-\u3067\u3059
-\u3068\u3082
-\u3068\u3053\u308d
-\u3053\u3053
-##### End of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_lv.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_lv.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_lv.txt
deleted file mode 100644
index e21a23c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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\u0161
-\u0101rpus
-aug\u0161pus
-bez
-caur
-d\u0113\u013c
-gar
-iek\u0161
-iz
-kop\u0161
-labad
-lejpus
-l\u012bdz
-no
-otrpus
-pa
-par
-p\u0101r
-p\u0113c
-pie
-pirms
-pret
-priek\u0161
-starp
-\u0161aipus
-uz
-vi\u0146pus
-virs
-virspus
-zem
-apak\u0161pus
-# Conjunctions
-un
-bet
-jo
-ja
-ka
-lai
-tom\u0113r
-tikko
-turpret\u012b
-ar\u012b
-kaut
-gan
-t\u0101d\u0113\u013c
-t\u0101
-ne
-tikvien
-vien
-k\u0101
-ir
-te
-vai
-kam\u0113r
-# Particles
-ar
-diezin
-dro\u0161i
-diem\u017e\u0113l
-neb\u016bt
-ik
-it
-ta\u010du
-nu
-pat
-tiklab
-iek\u0161pus
-nedz
-tik
-nevis
-turpretim
-jeb
-iekam
-iek\u0101m
-iek\u0101ms
-kol\u012bdz
-l\u012bdzko
-tikl\u012bdz
-jeb\u0161u
-t\u0101lab
-t\u0101p\u0113c
-nek\u0101
-itin
-j\u0101
-jau
-jel
-n\u0113
-nezin
-tad
-tikai
-vis
-tak
-iekams
-vien
-# modal verbs
-b\u016bt  
-biju 
-biji
-bija
-bij\u0101m
-bij\u0101t
-esmu
-esi
-esam
-esat 
-b\u016b\u0161u     
-b\u016bsi
-b\u016bs
-b\u016bsim
-b\u016bsiet
-tikt
-tiku
-tiki
-tika
-tik\u0101m
-tik\u0101t
-tieku
-tiec
-tiek
-tiekam
-tiekat
-tik\u0161u
-tiks
-tiksim
-tiksiet
-tapt
-tapi
-tap\u0101t
-topat
-tap\u0161u
-tapsi
-taps
-tapsim
-tapsiet
-k\u013c\u016bt
-k\u013cuvu
-k\u013cuvi
-k\u013cuva
-k\u013cuv\u0101m
-k\u013cuv\u0101t
-k\u013c\u016bstu
-k\u013c\u016bsti
-k\u013c\u016bst
-k\u013c\u016bstam
-k\u013c\u016bstat
-k\u013c\u016b\u0161u
-k\u013c\u016bsi
-k\u013c\u016bs
-k\u013c\u016bsim
-k\u013c\u016bsiet
-# verbs
-var\u0113t
-var\u0113ju
-var\u0113j\u0101m
-var\u0113\u0161u
-var\u0113sim
-var
-var\u0113ji
-var\u0113j\u0101t
-var\u0113si
-var\u0113siet
-varat
-var\u0113ja
-var\u0113s

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_nl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_nl.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_nl.txt
deleted file mode 100644
index f4d61f5..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stopwords_nl.txt
+++ /dev/null
@@ -1,117 +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.
-
- | 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


[43/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10352: bin/solr script now prints warning when available system entropy is lower than 300

Posted by cp...@apache.org.
SOLR-10352: bin/solr script now prints warning when available system entropy is lower than 300


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

Branch: refs/heads/jira/solr-6203
Commit: 2ba54a36babd4cb6f2fb97e0f550d4980dbbced5
Parents: bd01064
Author: Ishan Chattopadhyaya <is...@apache.org>
Authored: Mon Mar 27 23:56:23 2017 +0530
Committer: Ishan Chattopadhyaya <is...@apache.org>
Committed: Mon Mar 27 23:56:23 2017 +0530

----------------------------------------------------------------------
 solr/CHANGES.txt | 3 +++
 solr/bin/solr    | 6 ++++++
 2 files changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2ba54a36/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index e102b27..2cebb9f 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -145,6 +145,9 @@ Other Changes
 * SOLR-10304: Refactor Document handling out of SolrIndexSearcher into a new class "SolrDocumentFetcher".
   Deprecated SolrPluginUtils.docListToSolrDocumentList(). (David Smiley)
 
+* SOLR-10352: bin/solr script now prints warning when available system entropy is lower than 300 (Esther Quansah via
+  Ishan Chattopadhyaya)
+
 ==================  6.5.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2ba54a36/solr/bin/solr
----------------------------------------------------------------------
diff --git a/solr/bin/solr b/solr/bin/solr
index 9563bb2..58fdcba 100755
--- a/solr/bin/solr
+++ b/solr/bin/solr
@@ -1760,6 +1760,12 @@ function launch_solr() {
         -jar start.jar "${SOLR_JETTY_CONFIG[@]}" \
 	1>"$SOLR_LOGS_DIR/solr-$SOLR_PORT-console.log" 2>&1 & echo $! > "$SOLR_PID_DIR/solr-$SOLR_PORT.pid"
 
+    # check if /proc/sys/kernel/random/entropy_avail exists then check output of cat /proc/sys/kernel/random/entropy_avail to see if less than 300
+    if [[ -f /proc/sys/kernel/random/entropy_avail ]] && (( `cat /proc/sys/kernel/random/entropy_avail` < 30000)); then
+	echo "Warning: Available entropy is low. As a result, use of the UUIDField, SSL, or any other features that require"
+	echo "RNG might not work properly. To check for the amount of available entropy, use 'cat /proc/sys/kernel/random/entropy_avail'."
+	echo ""
+    fi
     # no lsof on cygwin though
     if hash lsof 2>/dev/null ; then  # hash returns true if lsof is on the path
       echo -n "Waiting up to $SOLR_STOP_WAIT seconds to see Solr running on port $SOLR_PORT"


[69/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10387: zkTransfer normalizes destination path incorrectly if source is a windows directory

Posted by cp...@apache.org.
SOLR-10387: zkTransfer normalizes destination path incorrectly if source is a windows directory


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

Branch: refs/heads/jira/solr-6203
Commit: edcdc3052ba95840593ace32d6d9a7a6e4ebe7ea
Parents: efdb04d
Author: Erick Erickson <er...@apache.org>
Authored: Wed Mar 29 21:13:40 2017 -0700
Committer: Erick Erickson <er...@apache.org>
Committed: Wed Mar 29 21:13:40 2017 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  3 ++
 .../apache/solr/cloud/SolrCLIZkUtilsTest.java   | 13 ++++---
 .../solr/common/cloud/ZkMaintenanceUtils.java   | 41 +++++++++++---------
 3 files changed, 32 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/edcdc305/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 3692bd5..840de48 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -148,6 +148,9 @@ Bug Fixes
 
 * SOLR-10369: bin\solr.cmd delete and healthcheck now works again; fixed continuation chars ^ (Luis Goes via janhoy)
 
+* SOLR-10387: zkTransfer normalizes destination path incorrectly if source is a windows directory 
+  (gopikannan venugopalsamy, Erick Erickson)
+
 Other Changes
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/edcdc305/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java b/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
index 35ba1d4..776075e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
@@ -18,6 +18,7 @@
 package org.apache.solr.cloud;
 
 import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.nio.charset.Charset;
@@ -229,9 +230,9 @@ public class SolrCLIZkUtilsTest extends SolrCloudTestCase {
     // NOTE: really can't test copying to '.' because the test framework doesn't allow altering the source tree
     // and at least IntelliJ's CWD is in the source tree.
 
-    // copy to local ending in '/'
+    // copy to local ending in separator
     //src and cp3 and cp4 are valid
-    String localSlash = tmp.normalize() + "/cpToLocal/";
+    String localSlash = tmp.normalize() +  File.separator +"cpToLocal" + File.separator;
     args = new String[]{
         "-src", "zk:/cp3/schema.xml",
         "-dst", localSlash,
@@ -246,7 +247,7 @@ public class SolrCLIZkUtilsTest extends SolrCloudTestCase {
     // copy to ZK ending in '/'.
     //src and cp3 are valid
     args = new String[]{
-        "-src", "file:" + srcPathCheck.normalize().toAbsolutePath().toString() + "/solrconfig.xml",
+        "-src", "file:" + srcPathCheck.normalize().toAbsolutePath().toString() + File.separator + "solrconfig.xml",
         "-dst", "zk:/powerup/",
         "-recurse", "false",
         "-zkHost", zkAddr,
@@ -259,7 +260,7 @@ public class SolrCLIZkUtilsTest extends SolrCloudTestCase {
     // copy individual file up
     //src and cp3 are valid
     args = new String[]{
-        "-src", "file:" + srcPathCheck.normalize().toAbsolutePath().toString() + "/solrconfig.xml",
+        "-src", "file:" + srcPathCheck.normalize().toAbsolutePath().toString() + File.separator + "solrconfig.xml",
         "-dst", "zk:/copyUpFile.xml",
         "-recurse", "false",
         "-zkHost", zkAddr,
@@ -272,7 +273,7 @@ public class SolrCLIZkUtilsTest extends SolrCloudTestCase {
     // copy individual file down
     //src and cp3 are valid
 
-    String localNamed = tmp.normalize().toString() + "/localnamed/renamed.txt";
+    String localNamed = tmp.normalize().toString() + File.separator + "localnamed" + File.separator +  "renamed.txt";
     args = new String[]{
         "-src", "zk:/cp4/solrconfig.xml",
         "-dst", "file:" + localNamed,
@@ -404,7 +405,7 @@ public class SolrCLIZkUtilsTest extends SolrCloudTestCase {
     // Files are in mv2
     // Now fail if we specify "file:". Everything should still be in /mv2
     args = new String[]{
-        "-src", "file:/mv2",
+        "-src", "file:" + File.separator + "mv2",
         "-dst", "/mv3",
         "-zkHost", zkAddr,
     };

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/edcdc305/solr/solrj/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
index f569ae3..dfdc8cf 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
@@ -119,33 +119,36 @@ public class ZkMaintenanceUtils {
         throw new SolrServerException("Local path " + Paths.get(src).toAbsolutePath() + " is a directory and recurse is false");
       }
     }
-    if (srcIsZk == false && dstIsZk == false) {
-      throw new SolrServerException("At least one of the source and dest parameters must be prefixed with 'zk:' ");
-    }
+
     if (dstIsZk && dst.length() == 0) {
       dst = "/"; // for consistency, one can copy from zk: and send to zk:/
     }
-    dst = normalizeDest(src, dst);
+    dst = normalizeDest(src, dst, srcIsZk, dstIsZk);
 
+    // ZK -> ZK copy.
     if (srcIsZk && dstIsZk) {
       traverseZkTree(zkClient, src, VISIT_ORDER.VISIT_PRE, new ZkCopier(zkClient, src, dst));
       return;
     }
+
+    //local -> ZK copy
     if (dstIsZk) {
       uploadToZK(zkClient, Paths.get(src), dst, null);
       return;
     }
 
-    // Copying individual files from ZK requires special handling since downloadFromZK assumes it's a directory.
+    // Copying individual files from ZK requires special handling since downloadFromZK assumes the node has children.
     // This is kind of a weak test for the notion of "directory" on Zookeeper.
+    // ZK -> local copy where ZK is a parent node
     if (zkClient.getChildren(src, null, true).size() > 0) {
       downloadFromZK(zkClient, src, Paths.get(dst));
       return;
     }
 
+    // Single file ZK -> local copy where ZK is a leaf node
     if (Files.isDirectory(Paths.get(dst))) {
-      if (dst.endsWith("/") == false) dst += "/";
-      dst = normalizeDest(src, dst);
+      if (dst.endsWith(File.separator) == false) dst += File.separator;
+      dst = normalizeDest(src, dst, srcIsZk, dstIsZk);
     }
     byte[] data = zkClient.getData(src, null, null, true);
     Path filename = Paths.get(dst);
@@ -154,31 +157,32 @@ public class ZkMaintenanceUtils {
     Files.write(filename, data);
   }
 
-  
-  private static String normalizeDest(String srcName, String dstName) {
+  // If the dest ends with a separator, it's a directory or non-leaf znode, so return the
+  // last element of the src to appended to the dstName.
+  private static String normalizeDest(String srcName, String dstName, boolean srcIsZk, boolean dstIsZk) {
     // Special handling for "."
     if (dstName.equals(".")) {
       return Paths.get(".").normalize().toAbsolutePath().toString();
     }
-    // Pull the last element of the src path and add it to the dst if the src does NOT end in a slash 
 
-    // If the source ends in a slash, do not append the last segment to the dest
-    
-    if (dstName.endsWith("/")) { // Dest is a directory.
-      int pos = srcName.lastIndexOf("/");
+    String dstSeparator = (dstIsZk) ? "/" : File.separator;
+    String srcSeparator = (srcIsZk) ? "/" : File.separator;
+
+    if (dstName.endsWith(dstSeparator)) { // Dest is a directory or non-leaf znode, append last element of the src path.
+      int pos = srcName.lastIndexOf(srcSeparator);
       if (pos < 0) {
         dstName += srcName;
       } else {
         dstName += srcName.substring(pos + 1);
       }
     }
-    
+
     log.info("copying from '{}' to '{}'", srcName, dstName);
     return dstName;
   }
 
   public static void moveZnode(SolrZkClient zkClient, String src, String dst) throws SolrServerException, KeeperException, InterruptedException {
-    String destName = normalizeDest(src, dst);
+    String destName = normalizeDest(src, dst, true, true);
 
     // Special handling if the source has no children, i.e. copying just a single file.
     if (zkClient.getChildren(src, null, true).size() == 0) {
@@ -384,12 +388,11 @@ public class ZkMaintenanceUtils {
     }
   }
 
-  // Take into account Windows file separaters when making a Znode's name.
+  // Take into account Windows file separators when making a Znode's name.
   public static String createZkNodeName(String zkRoot, Path root, Path file) {
     String relativePath = root.relativize(file).toString();
     // Windows shenanigans
-    String separator = root.getFileSystem().getSeparator();
-    if ("\\".equals(separator))
+    if ("\\".equals(File.separator))
       relativePath = relativePath.replaceAll("\\\\", "/");
     // It's possible that the relative path and file are the same, in which case
     // adding the bare slash is A Bad Idea unless it's a non-leaf data node


[21/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/solrconfig.xml b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/solrconfig.xml
deleted file mode 100644
index 05de0b6..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/solrconfig.xml
+++ /dev/null
@@ -1,1426 +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>${tests.luceneMatchVersion:LATEST}</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.
-
-       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.
-    -->
-  <!--
-     <lib dir="../add-everything-found-in-this-dir-to-the-classpath" />
-  -->
-  
-  <!-- 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.
-    -->
-  <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />
-
-  <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />
-
-  <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />
-
-  <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />
-
-  <!-- If a 'dir' option (with or without a regex) is used and nothing
-       is found that matches, it will be ignored
-    -->
-  <lib dir="/non/existent/dir/yields/warning" /> 
-
-  <!-- an exact 'path' can be used instead of a 'dir' to specify a 
-       specific 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>/data/3/collection1/data</dataDir>-->
-  <dataDir>${solr.data.dir:}</dataDir>
- 
-
-  <!-- The DirectoryFactory to use for indexes.
-       
-       solr.StandardDirectoryFactory is filesystem
-       based and tries to pick the best implementation for the current
-       JVM and platform.  solr.NRTCachingDirectoryFactory, the default,
-       wraps solr.StandardDirectoryFactory and caches small files in memory
-       for better NRT performance.
-
-       One can force a particular implementation via solr.MMapDirectoryFactory,
-       solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.
-
-       solr.RAMDirectoryFactory is memory based, not
-       persistent, and doesn't work with replication.
-    -->
-  <directoryFactory name="DirectoryFactory" 
-                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
-
-  <schemaFactory class="ClassicIndexSchemaFactory"/>
-
-  <!-- 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>128</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>native</lockType> -->
-
-    <!-- If true, IndexReaders will be reopened (often more efficient)
-         instead of closed and then opened. Default: true
-      -->
-    <!-- 
-    <reopenReaders>true</reopenReaders>
-      -->
-
-    <!-- Commit Deletion Policy
-
-         Custom deletion policies can be specified here. The class must
-         implement org.apache.lucene.index.IndexDeletionPolicy.
-
-         http://lucene.apache.org/java/3_5_0/api/core/org/apache/lucene/index/IndexDeletionPolicy.html
-
-         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 automaticly
-                   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.
-      -->
-     <autoCommit> 
-       <maxTime>${solr.autoCommit.maxTime:60000}</maxTime> 
-       <openSearcher>false</openSearcher> 
-     </autoCommit>
-
-    <!-- softAutoCommit is like autoCommit except it causes a
-         'soft' commit which only ensures that changes are visible
-         but does not ensure that data is synced to disk.  This is
-         faster and more near-realtime friendly than a hard commit.
-      -->
-     
-       <autoSoftCommit> 
-         <maxTime>${solr.autoSoftCommit.maxTime: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
-      -->
-    <!-- The RunExecutableListener executes an external command from a
-         hook such as postCommit or postOptimize.
-         
-         exe - the name of the executable to run
-         dir - dir to use as the current working directory. (default=".")
-         wait - the calling thread waits until the executable returns. 
-                (default="true")
-         args - the arguments to pass to the program.  (default is none)
-         env - environment variables to set.  (default is none)
-      -->
-    <!-- This example shows how RunExecutableListener could be used
-         with the script based replication...
-         http://wiki.apache.org/solr/CollectionDistribution
-      -->
-    <!--
-       <listener event="postCommit" class="solr.RunExecutableListener">
-         <str name="exe">solr/bin/snapshooter</str>
-         <str name="dir">.</str>
-         <bool name="wait">true</bool>
-         <arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
-         <arr name="env"> <str>MYVAR=val1</str> </arr>
-       </listener>
-      -->
-
-
-  </updateHandler>
-  
-  <!-- IndexReaderFactory
-
-       Use the following format to specify a custom IndexReaderFactory,
-       which allows for alternate IndexReader implementations.
-
-       ** Experimental Feature **
-
-       Please note - Using a custom IndexReaderFactory may prevent
-       certain other features from working. The API to
-       IndexReaderFactory may change without warning or may even be
-       removed from future releases if the problems cannot be
-       resolved.
-
-
-       ** Features that may not work with custom IndexReaderFactory **
-
-       The ReplicationHandler assumes a disk-resident index. Using a
-       custom IndexReader implementation may cause incompatibility
-       with ReplicationHandler and may cause replication to not work
-       correctly. See SOLR-1366 for details.
-
-    -->
-  <!--
-  <indexReaderFactory name="IndexReaderFactory" class="package.class">
-    <str name="someArg">Some Value</str>
-  </indexReaderFactory >
-  -->
-  <!-- By explicitly declaring the Factory, the termIndexDivisor can
-       be specified.
-    -->
-  <!--
-     <indexReaderFactory name="IndexReaderFactory" 
-                         class="solr.StandardIndexReaderFactory">
-       <int name="setTermIndexDivisor">12</int>
-     </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>1024</maxBooleanClauses>
-
-
-    <!-- Solr Internal Query Caches
-
-         There are two implementations of cache available for Solr,
-         LRUCache, based on a synchronized LinkedHashMap, and
-         FastLRUCache, based on a ConcurrentHashMap.  
-
-         FastLRUCache has faster gets and slower puts in single
-         threaded operation and thus is generally faster than LRUCache
-         when the hit ratio of the cache is high (> 75%), and may be
-         faster under other scenarios on multi-cpu systems.
-    -->
-
-    <!-- Filter Cache
-
-         Cache used by SolrIndexSearcher for filters (DocSets),
-         unordered sets of *all* documents that match a query.  When a
-         new searcher is opened, its caches may be prepopulated or
-         "autowarmed" using data from caches in the old searcher.
-         autowarmCount is the number of items to prepopulate.  For
-         LRUCache, the autowarmed items will be the most recently
-         accessed items.
-
-         Parameters:
-           class - the SolrCache implementation LRUCache or
-               (LRUCache or FastLRUCache)
-           size - the maximum number of entries in the cache
-           initialSize - the initial capacity (number of entries) of
-               the cache.  (see java.util.HashMap)
-           autowarmCount - the number of entries to prepopulate from
-               and old cache.  
-      -->
-    <filterCache class="solr.FastLRUCache"
-                 size="512"
-                 initialSize="512"
-                 autowarmCount="0"/>
-
-    <!-- Query Result Cache
-         
-         Caches results of searches - ordered lists of document ids
-         (DocList) based on a query, a sort, and the range of documents requested.  
-      -->
-    <queryResultCache class="solr.LRUCache"
-                     size="512"
-                     initialSize="512"
-                     autowarmCount="0"/>
-   
-    <!-- Document Cache
-
-         Caches Lucene Document objects (the stored fields for each
-         document).  Since Lucene internal document ids are transient,
-         this cache will not be autowarmed.  
-      -->
-    <documentCache class="solr.LRUCache"
-                   size="512"
-                   initialSize="512"
-                   autowarmCount="0"/>
-    
-    <!-- Field Value Cache
-         
-         Cache used to hold field values that are quickly accessible
-         by document id.  The fieldValueCache is created by default
-         even if not configured here.
-      -->
-    <!--
-       <fieldValueCache class="solr.FastLRUCache"
-                        size="512"
-                        autowarmCount="128"
-                        showItems="32" />
-      -->
-
-    <!-- Custom Cache
-
-         Example of a generic cache.  These caches may be accessed by
-         name through SolrIndexSearcher.getCache(),cacheLookup(), and
-         cacheInsert().  The purpose is to enable easy caching of
-         user/application level data.  The regenerator argument should
-         be specified as an implementation of solr.CacheRegenerator 
-         if autowarming is desired.  
-      -->
-    <!--
-       <cache name="myUserCache"
-              class="solr.LRUCache"
-              size="4096"
-              initialSize="1024"
-              autowarmCount="1024"
-              regenerator="com.mycompany.MyRegenerator"
-              />
-      -->
-
-
-    <!-- Lazy Field Loading
-
-         If true, stored fields that are not requested will be loaded
-         lazily.  This can result in a significant speed improvement
-         if the usual case is to not load all stored fields,
-         especially if the skipped fields are large compressed text
-         fields.
-    -->
-    <enableLazyFieldLoading>true</enableLazyFieldLoading>
-
-   <!-- Use Filter For Sorted Query
-
-        A possible optimization that attempts to use a filter to
-        satisfy a search.  If the requested sort does not include
-        score, then the filterCache will be checked for a filter
-        matching the query. If found, the filter will be used as the
-        source of document ids, and then the sort will be applied to
-        that.
-
-        For most situations, this will not be useful unless you
-        frequently get the same search repeatedly with different sort
-        options, and none of them ever use "score"
-     -->
-   <!--
-      <useFilterForSortedQuery>true</useFilterForSortedQuery>
-     -->
-
-   <!-- Result Window Size
-
-        An optimization for use with the queryResultCache.  When a search
-        is requested, a superset of the requested number of document ids
-        are collected.  For example, if a search for a particular query
-        requests matching documents 10 through 19, and queryWindowSize is 50,
-        then documents 0 through 49 will be collected and cached.  Any further
-        requests in that range can be satisfied via the cache.  
-     -->
-   <queryResultWindowSize>20</queryResultWindowSize>
-
-   <!-- Maximum number of documents to cache for any entry in the
-        queryResultCache. 
-     -->
-   <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
-
-   <!-- Query Related Event Listeners
-
-        Various IndexSearcher related events can trigger Listeners to
-        take actions.
-
-        newSearcher - fired whenever a new searcher is being prepared
-        and there is a current searcher handling requests (aka
-        registered).  It can be used to prime certain caches to
-        prevent long request times for certain requests.
-
-        firstSearcher - fired whenever a new searcher is being
-        prepared but there is no current registered searcher to handle
-        requests or to gain autowarming data from.
-
-        
-     -->
-    <!-- QuerySenderListener takes an array of NamedList and executes a
-         local query request for each NamedList in sequence. 
-      -->
-    <listener event="newSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <!--
-           <lst><str name="q">solr</str><str name="sort">price asc</str></lst>
-           <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
-          -->
-      </arr>
-    </listener>
-    <listener event="firstSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <lst>
-          <str name="q">static firstSearcher warming in solrconfig.xml</str>
-        </lst>
-      </arr>
-    </listener>
-
-    <!-- Use Cold Searcher
-
-         If a search request comes in and there is no current
-         registered searcher, then immediately register the still
-         warming searcher and use it.  If "false" then all requests
-         will block until the first searcher is done warming.
-      -->
-    <useColdSearcher>false</useColdSearcher>
-
-    <!-- Max Warming Searchers
-         
-         Maximum number of searchers that may be warming in the
-         background concurrently.  An error is returned if this limit
-         is exceeded.
-
-         Recommend values of 1-2 for read-only slaves, higher for
-         masters w/o cache warming.
-      -->
-    <maxWarmingSearchers>4</maxWarmingSearchers>
-
-  </query>
-
-
-  <!-- Request Dispatcher
-
-       This section contains instructions for how the SolrDispatchFilter
-       should behave when processing requests for this SolrCore.
-
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
-    -->
-  <requestDispatcher handleSelect="false" >
-    <!-- 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 of
-         Multipart File Uploads that Solr will allow in a Request.
-         
-         *** WARNING ***
-         The settings below authorize Solr to fetch remote files, You
-         should make sure your system has some authentication before
-         using enableRemoteStreaming="true"
-
-      --> 
-    <requestParsers enableRemoteStreaming="true" 
-                    multipartUploadLimitInKB="2048000"
-                    formdataUploadLimitInKB="2048"/>
-
-    <!-- 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.
-
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-       
-       If a Request Handler is declared with startup="lazy", then it will
-       not be initialized until the first request that uses it.
-
-    -->
-  <!-- SearchHandler
-
-       http://wiki.apache.org/solr/SearchHandler
-
-       For processing Search Queries, the primary Request Handler
-       provided with Solr is "SearchHandler" It delegates to a sequent
-       of SearchComponents (see below) and supports distributed
-       queries across multiple shards
-    -->
-  <requestHandler name="/select" class="solr.SearchHandler">
-    <!-- default values for query parameters can be specified, these
-         will be overridden by parameters in the request
-      -->
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <int name="rows">10</int>
-       <str name="df">text</str>
-     </lst>
-    <!-- In addition to defaults, "appends" params can be specified
-         to identify values which should be appended to the list of
-         multi-val params from the query (or the existing "defaults").
-      -->
-    <!-- In this example, the param "fq=instock:true" would be appended to
-         any query time fq params the user may specify, as a mechanism for
-         partitioning the index, independent of any user selected filtering
-         that may also be desired (perhaps as a result of faceted searching).
-
-         NOTE: there is *absolutely* nothing a client can do to prevent these
-         "appends" values from being used, so don't use this mechanism
-         unless you are sure you always want it.
-      -->
-    <!--
-       <lst name="appends">
-         <str name="fq">inStock:true</str>
-       </lst>
-      -->
-    <!-- "invariants" are a way of letting the Solr maintainer lock down
-         the options available to Solr clients.  Any params values
-         specified here are used regardless of what values may be specified
-         in either the query, the "defaults", or the "appends" params.
-
-         In this example, the facet.field and facet.query params would
-         be fixed, limiting the facets clients can use.  Faceting is
-         not turned on by default - but if the client does specify
-         facet=true in the request, these are the only facets they
-         will be able to see counts for; regardless of what other
-         facet.field or facet.query params they may specify.
-
-         NOTE: there is *absolutely* nothing a client can do to prevent these
-         "invariants" values from being used, so don't use this mechanism
-         unless you are sure you always want it.
-      -->
-    <!--
-       <lst name="invariants">
-         <str name="facet.field">cat</str>
-         <str name="facet.field">manu_exact</str>
-         <str name="facet.query">price:[* TO 500]</str>
-         <str name="facet.query">price:[500 TO *]</str>
-       </lst>
-      -->
-    <!-- If the default list of SearchComponents is not desired, that
-         list can either be overridden completely, or components can be
-         prepended or appended to the default list.  (see below)
-      -->
-    <!--
-       <arr name="components">
-         <str>nameOfCustomComponent1</str>
-         <str>nameOfCustomComponent2</str>
-       </arr>
-      -->
-    </requestHandler>
-
-  <!-- A request handler that returns indented JSON by default -->
-  <requestHandler name="/query" class="solr.SearchHandler">
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <str name="wt">json</str>
-       <str name="indent">true</str>
-       <str name="df">text</str>
-     </lst>
-  </requestHandler>
-
-  <!-- Search Components
-
-       Search components are registered to SolrCore and used by 
-       instances of SearchHandler (which can access them by name)
-       
-       By default, the following components are available:
-       
-       <searchComponent name="query"     class="solr.QueryComponent" />
-       <searchComponent name="facet"     class="solr.FacetComponent" />
-       <searchComponent name="mlt"       class="solr.MoreLikeThisComponent" />
-       <searchComponent name="highlight" class="solr.HighlightComponent" />
-       <searchComponent name="stats"     class="solr.StatsComponent" />
-       <searchComponent name="debug"     class="solr.DebugComponent" />
-   
-       Default configuration in a requestHandler would look like:
-
-       <arr name="components">
-         <str>query</str>
-         <str>facet</str>
-         <str>mlt</str>
-         <str>highlight</str>
-         <str>stats</str>
-         <str>debug</str>
-       </arr>
-
-       If you register a searchComponent to one of the standard names, 
-       that will be used instead of the default.
-
-       To insert components before or after the 'standard' components, use:
-    
-       <arr name="first-components">
-         <str>myFirstComponentName</str>
-       </arr>
-    
-       <arr name="last-components">
-         <str>myLastComponentName</str>
-       </arr>
-
-       NOTE: The component registered with the name "debug" will
-       always be executed after the "last-components" 
-       
-     -->
-  
-   <!-- Spell Check
-
-        The spell check component can return a list of alternative spelling
-        suggestions.  
-
-        http://wiki.apache.org/solr/SpellCheckComponent
-     -->
-  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
-
-    <str name="queryAnalyzerFieldType">textSpell</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">name</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">
-      <str name="df">text</str>
-      <!-- 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">
-      <str name="df">text</str>
-      <bool name="tv">true</bool>
-    </lst>
-    <arr name="last-components">
-      <str>tvComponent</str>
-    </arr>
-  </requestHandler>
-
-  <!-- Clustering Component
-
-       http://wiki.apache.org/solr/ClusteringComponent
-
-       You'll need to set the solr.cluster.enabled system property
-       when running solr to run with clustering enabled:
-
-            java -Dsolr.clustering.enabled=true -jar start.jar
-
-    -->
-  <searchComponent name="clustering"
-                   enable="${solr.clustering.enabled:false}"
-                   class="solr.clustering.ClusteringComponent" >
-    <!-- Declare an engine -->
-    <lst name="engine">
-      <!-- The name, only one can be named "default" -->
-      <str name="name">default</str>
-
-      <!-- Class name of Carrot2 clustering algorithm.
-
-           Currently available algorithms are:
-           
-           * org.carrot2.clustering.lingo.LingoClusteringAlgorithm
-           * org.carrot2.clustering.stc.STCClusteringAlgorithm
-           * org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm
-           
-           See http://project.carrot2.org/algorithms.html for the
-           algorithm's characteristics.
-        -->
-      <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>
-
-      <!-- Overriding values for Carrot2 default algorithm attributes.
-
-           For a description of all available attributes, see:
-           http://download.carrot2.org/stable/manual/#chapter.components.
-           Use attribute key as name attribute of str elements
-           below. These can be further overridden for individual
-           requests by specifying attribute key as request parameter
-           name and attribute value as parameter value.
-        -->
-      <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>
-
-      <!-- Location of Carrot2 lexical resources.
-
-           A directory from which to load Carrot2-specific stop words
-           and stop labels. Absolute or relative to Solr config directory.
-           If a specific resource (e.g. stopwords.en) is present in the
-           specified dir, it will completely override the corresponding
-           default one that ships with Carrot2.
-
-           For an overview of Carrot2 lexical resources, see:
-           http://download.carrot2.org/head/manual/#chapter.lexical-resources
-        -->
-      <str name="carrot.lexicalResourcesDir">clustering/carrot2</str>
-
-      <!-- The language to assume for the documents.
-
-           For a list of allowed values, see:
-           http://download.carrot2.org/stable/manual/#section.attribute.lingo.MultilingualClustering.defaultLanguage
-       -->
-      <str name="MultilingualClustering.defaultLanguage">ENGLISH</str>
-    </lst>
-    <lst name="engine">
-      <str name="name">stc</str>
-      <str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>
-    </lst>
-  </searchComponent>
-
-  <!-- A request handler for demonstrating the clustering 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="/clustering"
-                  startup="lazy"
-                  enable="${solr.clustering.enabled:false}"
-                  class="solr.SearchHandler">
-    <lst name="defaults">
-      <bool name="clustering">true</bool>
-      <str name="clustering.engine">default</str>
-      <bool name="clustering.results">true</bool>
-      <!-- The title field -->
-      <str name="carrot.title">name</str>
-      <str name="carrot.url">id</str>
-      <!-- The field to cluster on -->
-       <str name="carrot.snippet">features</str>
-       <!-- produce summaries -->
-       <bool name="carrot.produceSummary">true</bool>
-       <!-- the maximum number of labels per cluster -->
-       <!--<int name="carrot.numDescriptions">5</int>-->
-       <!-- produce sub clusters -->
-       <bool name="carrot.outputSubClusters">false</bool>
-       
-       <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
-       </str>
-       <str name="q.alt">*:*</str>
-       <str name="rows">10</str>
-       <str name="fl">*,score</str>
-    </lst>     
-    <arr name="last-components">
-      <str>clustering</str>
-    </arr>
-  </requestHandler>
-  
-  <!-- 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>
-    </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>
-      <str name="df">text</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
-
-    --> 
-  <!-- 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="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"/>
-  
-
-  <!-- XSLT response writer transforms the XML output by any xslt file found
-       in Solr's conf/xslt directory.  Changes to xslt files are checked for
-       every xsltCacheLifetimeSeconds.  
-    -->
-  <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
-    <int name="xsltCacheLifetimeSeconds">5</int>
-  </queryResponseWriter>
-
-  <!-- Query Parsers
-
-       https://cwiki.apache.org/confluence/display/solr/Query+Syntax+and+Parsing
-
-       Multiple QParserPlugins can be registered by name, and then
-       used in either the "defType" param for the QueryComponent (used
-       by SearchHandler) or in LocalParams
-    -->
-  <!-- example of registering a query parser -->
-  <!--
-     <queryParser name="myparser" class="com.mycompany.MyQParserPlugin"/>
-    -->
-
-  <!-- Function Parsers
-
-       http://wiki.apache.org/solr/FunctionQuery
-
-       Multiple ValueSourceParsers can be registered by name, and then
-       used as function names when using the "func" QParser.
-    -->
-  <!-- example of registering a custom function parser  -->
-  <!--
-     <valueSourceParser name="myfunc" 
-                        class="com.mycompany.MyValueSourceParser" />
-    -->
-    
-  
-  <!-- Document Transformers
-       http://wiki.apache.org/solr/DocTransformers
-    -->
-  <!--
-     Could be something like:
-     <transformer name="db" class="com.mycompany.LoadFromDatabaseTransformer" >
-       <int name="connection">jdbc://....</int>
-     </transformer>
-     
-     To add a constant value to all docs, use:
-     <transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
-       <int name="value">5</int>
-     </transformer>
-     
-     If you want the user to still be able to change it with _value:something_ use this:
-     <transformer name="mytrans3" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
-       <double name="defaultValue">5</double>
-     </transformer>
-
-      If you are using the QueryElevationComponent, you may wish to mark documents that get boosted.  The
-      EditorialMarkerFactory will do exactly that:
-     <transformer name="qecBooster" class="org.apache.solr.response.transform.EditorialMarkerFactory" />
-    -->
-
-</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/stopwords.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/stopwords.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/stopwords.txt
deleted file mode 100644
index ae1e83e..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/synonyms.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/synonyms.txt
deleted file mode 100644
index 7f72128..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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 WordDelimiterFilter coming
-#after us won't split it into two words.
-
-# Synonym mappings can be used for spelling correction too
-pixima => pixma
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/currency.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/currency.xml b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/currency.xml
deleted file mode 100644
index 3a9c58a..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/elevate.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/elevate.xml b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/elevate.xml
deleted file mode 100644
index 2c09ebe..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_ca.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_ca.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_ca.txt
deleted file mode 100644
index 307a85f..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_fr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_fr.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_fr.txt
deleted file mode 100644
index 722db58..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_fr.txt
+++ /dev/null
@@ -1,9 +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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_ga.txt
deleted file mode 100644
index 9ebe7fa..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_it.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_it.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/contractions_it.txt
deleted file mode 100644
index cac0409..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/hyphenations_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/hyphenations_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/hyphenations_ga.txt
deleted file mode 100644
index 4d2642c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stemdict_nl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stemdict_nl.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stemdict_nl.txt
deleted file mode 100644
index 4410729..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stoptags_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stoptags_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stoptags_ja.txt
deleted file mode 100644
index 71b7508..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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
-#\u540d\u8a5e
-#
-#  noun-common: Common nouns or nouns where the sub-classification is undefined
-#\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-proper: Proper nouns where the sub-classification is undefined 
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e
-#
-#  noun-proper-misc: miscellaneous proper nouns
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-proper-person: Personal names where the sub-classification is undefined
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d
-#
-#  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. \u304a\u5e02\u306e\u65b9
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u4e00\u822c
-#
-#  noun-proper-person-surname: Mainly Japanese surnames.
-#  e.g. \u5c71\u7530
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u59d3
-#
-#  noun-proper-person-given_name: Mainly Japanese given names.
-#  e.g. \u592a\u90ce
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u540d
-#
-#  noun-proper-organization: Names representing organizations.
-#  e.g. \u901a\u7523\u7701, NHK
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u7d44\u7e54
-#
-#  noun-proper-place: Place names where the sub-classification is undefined
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df
-#
-#  noun-proper-place-misc: Place names excluding countries.
-#  e.g. \u30a2\u30b8\u30a2, \u30d0\u30eb\u30bb\u30ed\u30ca, \u4eac\u90fd
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df-\u4e00\u822c
-#
-#  noun-proper-place-country: Country names. 
-#  e.g. \u65e5\u672c, \u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df-\u56fd
-#
-#  noun-pronoun: Pronouns where the sub-classification is undefined
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e
-#
-#  noun-pronoun-misc: miscellaneous pronouns: 
-#  e.g. \u305d\u308c, \u3053\u3053, \u3042\u3044\u3064, \u3042\u306a\u305f, \u3042\u3061\u3053\u3061, \u3044\u304f\u3064, \u3069\u3053\u304b, \u306a\u306b, \u307f\u306a\u3055\u3093, \u307f\u3093\u306a, \u308f\u305f\u304f\u3057, \u308f\u308c\u308f\u308c
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-pronoun-contraction: Spoken language contraction made by combining a 
-#  pronoun and the particle 'wa'.
-#  e.g. \u3042\u308a\u3083, \u3053\u308a\u3083, \u3053\u308a\u3083\u3042, \u305d\u308a\u3083, \u305d\u308a\u3083\u3042 
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e-\u7e2e\u7d04
-#
-#  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. \u91d1\u66dc, \u4e00\u6708, \u5348\u5f8c, \u5c11\u91cf
-#\u540d\u8a5e-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-verbal: Nouns that take arguments with case and can appear followed by 
-#  'suru' and related verbs (\u3059\u308b, \u3067\u304d\u308b, \u306a\u3055\u308b, \u304f\u3060\u3055\u308b)
-#  e.g. \u30a4\u30f3\u30d7\u30c3\u30c8, \u611b\u7740, \u60aa\u5316, \u60aa\u6226\u82e6\u95d8, \u4e00\u5b89\u5fc3, \u4e0b\u53d6\u308a
-#\u540d\u8a5e-\u30b5\u5909\u63a5\u7d9a
-#
-#  noun-adjective-base: The base form of adjectives, words that appear before \u306a ("na")
-#  e.g. \u5065\u5eb7, \u5b89\u6613, \u99c4\u76ee, \u3060\u3081
-#\u540d\u8a5e-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-numeric: Arabic numbers, Chinese numerals, and counters like \u4f55 (\u56de), \u6570.
-#  e.g. 0, 1, 2, \u4f55, \u6570, \u5e7e
-#\u540d\u8a5e-\u6570
-#
-#  noun-affix: noun affixes where the sub-classification is undefined
-#\u540d\u8a5e-\u975e\u81ea\u7acb
-#
-#  noun-affix-misc: Of adnominalizers, the case-marker \u306e ("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. \u3042\u304b\u3064\u304d, \u6681, \u304b\u3044, \u7532\u6590, \u6c17, \u304d\u3089\u3044, \u5acc\u3044, \u304f\u305b, \u7656, \u3053\u3068, \u4e8b, \u3054\u3068, \u6bce, \u3057\u3060\u3044, \u6b21\u7b2c, 
-#       \u9806, \u305b\u3044, \u6240\u70ba, \u3064\u3044\u3067, \u5e8f\u3067, \u3064\u3082\u308a, \u7a4d\u3082\u308a, \u70b9, \u3069\u3053\u308d, \u306e, \u306f\u305a, \u7b48, \u306f\u305a\u307f, \u5f3e\u307f, 
-#       \u62cd\u5b50, \u3075\u3046, \u3075\u308a, \u632f\u308a, \u307b\u3046, \u65b9, \u65e8, \u3082\u306e, \u7269, \u8005, \u3086\u3048, \u6545, \u3086\u3048\u3093, \u6240\u4ee5, \u308f\u3051, \u8a33,
-#       \u308f\u308a, \u5272\u308a, \u5272, \u3093-\u53e3\u8a9e/, \u3082\u3093-\u53e3\u8a9e/
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u4e00\u822c
-#
-#  noun-affix-adverbial: noun affixes that that can behave as adverbs.
-#  e.g. \u3042\u3044\u3060, \u9593, \u3042\u3052\u304f, \u6319\u3052\u53e5, \u3042\u3068, \u5f8c, \u4f59\u308a, \u4ee5\u5916, \u4ee5\u964d, \u4ee5\u5f8c, \u4ee5\u4e0a, \u4ee5\u524d, \u4e00\u65b9, \u3046\u3048, 
-#       \u4e0a, \u3046\u3061, \u5185, \u304a\u308a, \u6298\u308a, \u304b\u304e\u308a, \u9650\u308a, \u304d\u308a, \u3063\u304d\u308a, \u7d50\u679c, \u3053\u308d, \u9803, \u3055\u3044, \u969b, \u6700\u4e2d, \u3055\u306a\u304b, 
-#       \u6700\u4e2d, \u3058\u305f\u3044, \u81ea\u4f53, \u305f\u3073, \u5ea6, \u305f\u3081, \u70ba, \u3064\u3069, \u90fd\u5ea6, \u3068\u304a\u308a, \u901a\u308a, \u3068\u304d, \u6642, \u3068\u3053\u308d, \u6240, 
-#       \u3068\u305f\u3093, \u9014\u7aef, \u306a\u304b, \u4e2d, \u306e\u3061, \u5f8c, \u3070\u3042\u3044, \u5834\u5408, \u65e5, \u3076\u3093, \u5206, \u307b\u304b, \u4ed6, \u307e\u3048, \u524d, \u307e\u307e, 
-#       \u5118, \u4fad, \u307f\u304e\u308a, \u77e2\u5148
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-affix-aux: noun affixes treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars 
-#  with the stem \u3088\u3046(\u3060) ("you(da)").
-#  e.g.  \u3088\u3046, \u3084\u3046, \u69d8 (\u3088\u3046)
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#  
-#  noun-affix-adjective-base: noun affixes that can connect to the indeclinable
-#  connection form \u306a (aux "da").
-#  e.g. \u307f\u305f\u3044, \u3075\u3046
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-special: special nouns where the sub-classification is undefined.
-#\u540d\u8a5e-\u7279\u6b8a
-#
-#  noun-special-aux: The \u305d\u3046\u3060 ("souda") stem form that is used for reporting news, is 
-#  treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars, and attach to the base 
-#  form of inflectional words.
-#  e.g. \u305d\u3046
-#\u540d\u8a5e-\u7279\u6b8a-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix: noun suffixes where the sub-classification is undefined.
-#\u540d\u8a5e-\u63a5\u5c3e
-#
-#  noun-suffix-misc: Of the nouns or stem forms of other parts of speech that connect 
-#  to \u30ac\u30eb or \u30bf\u30a4 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 
-#  \u63a5\u5c3e\u8a9e ("suffix") and is usually the last element in a compound noun.
-#  e.g. \u304a\u304d, \u304b\u305f, \u65b9, \u7532\u6590 (\u304c\u3044), \u304c\u304b\u308a, \u304e\u307f, \u6c17\u5473, \u3050\u308b\u307f, (\uff5e\u3057\u305f) \u3055, \u6b21\u7b2c, \u6e08 (\u305a) \u307f,
-#       \u3088\u3046, (\u3067\u304d)\u3063\u3053, \u611f, \u89b3, \u6027, \u5b66, \u985e, \u9762, \u7528
-#\u540d\u8a5e-\u63a5\u5c3e-\u4e00\u822c
-#
-#  noun-suffix-person: Suffixes that form nouns and attach to person names more often
-#  than other nouns.
-#  e.g. \u541b, \u69d8, \u8457
-#\u540d\u8a5e-\u63a5\u5c3e-\u4eba\u540d
-#
-#  noun-suffix-place: Suffixes that form nouns and attach to place names more often 
-#  than other nouns.
-#  e.g. \u753a, \u5e02, \u770c
-#\u540d\u8a5e-\u63a5\u5c3e-\u5730\u57df
-#
-#  noun-suffix-verbal: Of the suffixes that attach to nouns and form nouns, those that 
-#  can appear before \u30b9\u30eb ("suru").
-#  e.g. \u5316, \u8996, \u5206\u3051, \u5165\u308a, \u843d\u3061, \u8cb7\u3044
-#\u540d\u8a5e-\u63a5\u5c3e-\u30b5\u5909\u63a5\u7d9a
-#
-#  noun-suffix-aux: The stem form of \u305d\u3046\u3060 (\u69d8\u614b) that is used to indicate conditions, 
-#  is treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars, and attach to the 
-#  conjunctive form of inflectional words.
-#  e.g. \u305d\u3046
-#\u540d\u8a5e-\u63a5\u5c3e-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix-adjective-base: Suffixes that attach to other nouns or the conjunctive 
-#  form of inflectional words and appear before the copula \u3060 ("da").
-#  e.g. \u7684, \u3052, \u304c\u3061
-#\u540d\u8a5e-\u63a5\u5c3e-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix-adverbial: Suffixes that attach to other nouns and can behave as adverbs.
-#  e.g. \u5f8c (\u3054), \u4ee5\u5f8c, \u4ee5\u964d, \u4ee5\u524d, \u524d\u5f8c, \u4e2d, \u672b, \u4e0a, \u6642 (\u3058)
-#\u540d\u8a5e-\u63a5\u5c3e-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-suffix-classifier: Suffixes that attach to numbers and form nouns. This category 
-#  is more inclusive than \u52a9\u6570\u8a5e ("classifier") and includes common nouns that attach 
-#  to numbers.
-#  e.g. \u500b, \u3064, \u672c, \u518a, \u30d1\u30fc\u30bb\u30f3\u30c8, cm, kg, \u30ab\u6708, \u304b\u56fd, \u533a\u753b, \u6642\u9593, \u6642\u534a
-#\u540d\u8a5e-\u63a5\u5c3e-\u52a9\u6570\u8a5e
-#
-#  noun-suffix-special: Special suffixes that mainly attach to inflecting words.
-#  e.g. (\u697d\u3057) \u3055, (\u8003\u3048) \u65b9
-#\u540d\u8a5e-\u63a5\u5c3e-\u7279\u6b8a
-#
-#  noun-suffix-conjunctive: Nouns that behave like conjunctions and join two words 
-#  together.
-#  e.g. (\u65e5\u672c) \u5bfe (\u30a2\u30e1\u30ea\u30ab), \u5bfe (\u30a2\u30e1\u30ea\u30ab), (3) \u5bfe (5), (\u5973\u512a) \u517c (\u4e3b\u5a66)
-#\u540d\u8a5e-\u63a5\u7d9a\u8a5e\u7684
-#
-#  noun-verbal_aux: Nouns that attach to the conjunctive particle \u3066 ("te") and are 
-#  semantically verb-like.
-#  e.g. \u3054\u3089\u3093, \u3054\u89a7, \u5fa1\u89a7, \u9802\u6234
-#\u540d\u8a5e-\u52d5\u8a5e\u975e\u81ea\u7acb\u7684
-#
-#  noun-quotation: text that cannot be segmented into words, proverbs, Chinese poetry, 
-#  dialects, English, etc. Currently, the only entry for \u540d\u8a5e \u5f15\u7528\u6587\u5b57\u5217 ("noun quotation") 
-#  is \u3044\u308f\u304f ("iwaku").
-#\u540d\u8a5e-\u5f15\u7528\u6587\u5b57\u5217
-#
-#  noun-nai_adjective: Words that appear before the auxiliary verb \u306a\u3044 ("nai") and
-#  behave like an adjective.
-#  e.g. \u7533\u3057\u8a33, \u4ed5\u65b9, \u3068\u3093\u3067\u3082, \u9055\u3044
-#\u540d\u8a5e-\u30ca\u30a4\u5f62\u5bb9\u8a5e\u8a9e\u5e79
-#
-#####
-#  prefix: unclassified prefixes
-#\u63a5\u982d\u8a5e
-#
-#  prefix-nominal: Prefixes that attach to nouns (including adjective stem forms) 
-#  excluding numerical expressions.
-#  e.g. \u304a (\u6c34), \u67d0 (\u6c0f), \u540c (\u793e), \u6545 (\uff5e\u6c0f), \u9ad8 (\u54c1\u8cea), \u304a (\u898b\u4e8b), \u3054 (\u7acb\u6d3e)
-#\u63a5\u982d\u8a5e-\u540d\u8a5e\u63a5\u7d9a
-#
-#  prefix-verbal: Prefixes that attach to the imperative form of a verb or a verb
-#  in conjunctive form followed by \u306a\u308b/\u306a\u3055\u308b/\u304f\u3060\u3055\u308b.
-#  e.g. \u304a (\u8aad\u307f\u306a\u3055\u3044), \u304a (\u5ea7\u308a)
-#\u63a5\u982d\u8a5e-\u52d5\u8a5e\u63a5\u7d9a
-#
-#  prefix-adjectival: Prefixes that attach to adjectives.
-#  e.g. \u304a (\u5bd2\u3044\u3067\u3059\u306d\u3048), \u30d0\u30ab (\u3067\u304b\u3044)
-#\u63a5\u982d\u8a5e-\u5f62\u5bb9\u8a5e\u63a5\u7d9a
-#
-#  prefix-numerical: Prefixes that attach to numerical expressions.
-#  e.g. \u7d04, \u304a\u3088\u305d, \u6bce\u6642
-#\u63a5\u982d\u8a5e-\u6570\u63a5\u7d9a
-#
-#####
-#  verb: unclassified verbs
-#\u52d5\u8a5e
-#
-#  verb-main:
-#\u52d5\u8a5e-\u81ea\u7acb
-#
-#  verb-auxiliary:
-#\u52d5\u8a5e-\u975e\u81ea\u7acb
-#
-#  verb-suffix:
-#\u52d5\u8a5e-\u63a5\u5c3e
-#
-#####
-#  adjective: unclassified adjectives
-#\u5f62\u5bb9\u8a5e
-#
-#  adjective-main:
-#\u5f62\u5bb9\u8a5e-\u81ea\u7acb
-#
-#  adjective-auxiliary:
-#\u5f62\u5bb9\u8a5e-\u975e\u81ea\u7acb
-#
-#  adjective-suffix:
-#\u5f62\u5bb9\u8a5e-\u63a5\u5c3e
-#
-#####
-#  adverb: unclassified adverbs
-#\u526f\u8a5e
-#
-#  adverb-misc: Words that can be segmented into one unit and where adnominal 
-#  modification is not possible.
-#  e.g. \u3042\u3044\u304b\u308f\u3089\u305a, \u591a\u5206
-#\u526f\u8a5e-\u4e00\u822c
-#
-#  adverb-particle_conjunction: Adverbs that can be followed by \u306e, \u306f, \u306b, 
-#  \u306a, \u3059\u308b, \u3060, etc.
-#  e.g. \u3053\u3093\u306a\u306b, \u305d\u3093\u306a\u306b, \u3042\u3093\u306a\u306b, \u306a\u306b\u304b, \u306a\u3093\u3067\u3082
-#\u526f\u8a5e-\u52a9\u8a5e\u985e\u63a5\u7d9a
-#
-#####
-#  adnominal: Words that only have noun-modifying forms.
-#  e.g. \u3053\u306e, \u305d\u306e, \u3042\u306e, \u3069\u306e, \u3044\u308f\u3086\u308b, \u306a\u3093\u3089\u304b\u306e, \u4f55\u3089\u304b\u306e, \u3044\u308d\u3093\u306a, \u3053\u3046\u3044\u3046, \u305d\u3046\u3044\u3046, \u3042\u3042\u3044\u3046, 
-#       \u3069\u3046\u3044\u3046, \u3053\u3093\u306a, \u305d\u3093\u306a, \u3042\u3093\u306a, \u3069\u3093\u306a, \u5927\u304d\u306a, \u5c0f\u3055\u306a, \u304a\u304b\u3057\u306a, \u307b\u3093\u306e, \u305f\u3044\u3057\u305f, 
-#       \u300c(, \u3082) \u3055\u308b (\u3053\u3068\u306a\u304c\u3089)\u300d, \u5fae\u3005\u305f\u308b, \u5802\u3005\u305f\u308b, \u5358\u306a\u308b, \u3044\u304b\u306a\u308b, \u6211\u304c\u300d\u300c\u540c\u3058, \u4ea1\u304d
-#\u9023\u4f53\u8a5e
-#
-#####
-#  conjunction: Conjunctions that can occur independently.
-#  e.g. \u304c, \u3051\u308c\u3069\u3082, \u305d\u3057\u3066, \u3058\u3083\u3042, \u305d\u308c\u3069\u3053\u308d\u304b
-\u63a5\u7d9a\u8a5e
-#
-#####
-#  particle: unclassified particles.
-\u52a9\u8a5e
-#
-#  particle-case: case particles where the subclassification is undefined.
-\u52a9\u8a5e-\u683c\u52a9\u8a5e
-#
-#  particle-case-misc: Case particles.
-#  e.g. \u304b\u3089, \u304c, \u3067, \u3068, \u306b, \u3078, \u3088\u308a, \u3092, \u306e, \u306b\u3066
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u4e00\u822c
-#
-#  particle-case-quote: the "to" that appears after nouns, a person\u2019s speech, 
-#  quotation marks, expressions of decisions from a meeting, reasons, judgements,
-#  conjectures, etc.
-#  e.g. ( \u3060) \u3068 (\u8ff0\u3079\u305f.), ( \u3067\u3042\u308b) \u3068 (\u3057\u3066\u57f7\u884c\u7336\u4e88...)
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u5f15\u7528
-#
-#  particle-case-compound: Compounds of particles and verbs that mainly behave 
-#  like case particles.
-#  e.g. \u3068\u3044\u3046, \u3068\u3044\u3063\u305f, \u3068\u304b\u3044\u3046, \u3068\u3057\u3066, \u3068\u3068\u3082\u306b, \u3068\u5171\u306b, \u3067\u3082\u3063\u3066, \u306b\u3042\u305f\u3063\u3066, \u306b\u5f53\u305f\u3063\u3066, \u306b\u5f53\u3063\u3066,
-#       \u306b\u3042\u305f\u308a, \u306b\u5f53\u305f\u308a, \u306b\u5f53\u308a, \u306b\u5f53\u305f\u308b, \u306b\u3042\u305f\u308b, \u306b\u304a\u3044\u3066, \u306b\u65bc\u3044\u3066,\u306b\u65bc\u3066, \u306b\u304a\u3051\u308b, \u306b\u65bc\u3051\u308b, 
-#       \u306b\u304b\u3051, \u306b\u304b\u3051\u3066, \u306b\u304b\u3093\u3057, \u306b\u95a2\u3057, \u306b\u304b\u3093\u3057\u3066, \u306b\u95a2\u3057\u3066, \u306b\u304b\u3093\u3059\u308b, \u306b\u95a2\u3059\u308b, \u306b\u969b\u3057, 
-#       \u306b\u969b\u3057\u3066, \u306b\u3057\u305f\u304c\u3044, \u306b\u5f93\u3044, \u306b\u5f93\u3046, \u306b\u3057\u305f\u304c\u3063\u3066, \u306b\u5f93\u3063\u3066, \u306b\u305f\u3044\u3057, \u306b\u5bfe\u3057, \u306b\u305f\u3044\u3057\u3066, 
-#       \u306b\u5bfe\u3057\u3066, \u306b\u305f\u3044\u3059\u308b, \u306b\u5bfe\u3059\u308b, \u306b\u3064\u3044\u3066, \u306b\u3064\u304d, \u306b\u3064\u3051, \u306b\u3064\u3051\u3066, \u306b\u3064\u308c, \u306b\u3064\u308c\u3066, \u306b\u3068\u3063\u3066,
-#       \u306b\u3068\u308a, \u306b\u307e\u3064\u308f\u308b, \u306b\u3088\u3063\u3066, \u306b\u4f9d\u3063\u3066, \u306b\u56e0\u3063\u3066, \u306b\u3088\u308a, \u306b\u4f9d\u308a, \u306b\u56e0\u308a, \u306b\u3088\u308b, \u306b\u4f9d\u308b, \u306b\u56e0\u308b, 
-#       \u306b\u308f\u305f\u3063\u3066, \u306b\u308f\u305f\u308b, \u3092\u3082\u3063\u3066, \u3092\u4ee5\u3063\u3066, \u3092\u901a\u3058, \u3092\u901a\u3058\u3066, \u3092\u901a\u3057\u3066, \u3092\u3081\u3050\u3063\u3066, \u3092\u3081\u3050\u308a, \u3092\u3081\u3050\u308b,
-#       \u3063\u3066-\u53e3\u8a9e/, \u3061\u3085\u3046-\u95a2\u897f\u5f01\u300c\u3068\u3044\u3046\u300d/, (\u4f55) \u3066\u3044\u3046 (\u4eba)-\u53e3\u8a9e/, \u3063\u3066\u3044\u3046-\u53e3\u8a9e/, \u3068\u3044\u3075, \u3068\u304b\u3044\u3075
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u9023\u8a9e
-#
-#  particle-conjunctive:
-#  e.g. \u304b\u3089, \u304b\u3089\u306b\u306f, \u304c, \u3051\u308c\u3069, \u3051\u308c\u3069\u3082, \u3051\u3069, \u3057, \u3064\u3064, \u3066, \u3067, \u3068, \u3068\u3053\u308d\u304c, \u3069\u3053\u308d\u304b, \u3068\u3082, \u3069\u3082, 
-#       \u306a\u304c\u3089, \u306a\u308a, \u306e\u3067, \u306e\u306b, \u3070, \u3082\u306e\u306e, \u3084 ( \u3057\u305f), \u3084\u3044\u306a\u3084, (\u3053\u308d\u3093) \u3058\u3083(\u3044\u3051\u306a\u3044)-\u53e3\u8a9e/, 
-#       (\u884c\u3063) \u3061\u3083(\u3044\u3051\u306a\u3044)-\u53e3\u8a9e/, (\u8a00\u3063) \u305f\u3063\u3066 (\u3057\u304b\u305f\u304c\u306a\u3044)-\u53e3\u8a9e/, (\u305d\u308c\u304c\u306a\u304f)\u3063\u305f\u3063\u3066 (\u5e73\u6c17)-\u53e3\u8a9e/
-\u52a9\u8a5e-\u63a5\u7d9a\u52a9\u8a5e
-#
-#  particle-dependency:
-#  e.g. \u3053\u305d, \u3055\u3048, \u3057\u304b, \u3059\u3089, \u306f, \u3082, \u305e
-\u52a9\u8a5e-\u4fc2\u52a9\u8a5e
-#
-#  particle-adverbial:
-#  e.g. \u304c\u3066\u3089, \u304b\u3082, \u304f\u3089\u3044, \u4f4d, \u3050\u3089\u3044, \u3057\u3082, (\u5b66\u6821) \u3058\u3083(\u3053\u308c\u304c\u6d41\u884c\u3063\u3066\u3044\u308b)-\u53e3\u8a9e/, 
-#       (\u305d\u308c)\u3058\u3083\u3042 (\u3088\u304f\u306a\u3044)-\u53e3\u8a9e/, \u305a\u3064, (\u79c1) \u306a\u305e, \u306a\u3069, (\u79c1) \u306a\u308a (\u306b), (\u5148\u751f) \u306a\u3093\u304b (\u5927\u5acc\u3044)-\u53e3\u8a9e/,
-#       (\u79c1) \u306a\u3093\u305e, (\u5148\u751f) \u306a\u3093\u3066 (\u5927\u5acc\u3044)-\u53e3\u8a9e/, \u306e\u307f, \u3060\u3051, (\u79c1) \u3060\u3063\u3066-\u53e3\u8a9e/, \u3060\u306b, 
-#       (\u5f7c)\u3063\u305f\u3089-\u53e3\u8a9e/, (\u304a\u8336) \u3067\u3082 (\u3044\u304b\u304c), \u7b49 (\u3068\u3046), (\u4eca\u5f8c) \u3068\u3082, \u3070\u304b\u308a, \u3070\u3063\u304b-\u53e3\u8a9e/, \u3070\u3063\u304b\u308a-\u53e3\u8a9e/,
-#       \u307b\u3069, \u7a0b, \u307e\u3067, \u8fc4, (\u8ab0) \u3082 (\u304c)([\u52a9\u8a5e-\u683c\u52a9\u8a5e] \u304a\u3088\u3073 [\u52a9\u8a5e-\u4fc2\u52a9\u8a5e] \u306e\u524d\u306b\u4f4d\u7f6e\u3059\u308b\u300c\u3082\u300d)
-\u52a9\u8a5e-\u526f\u52a9\u8a5e
-#
-#  particle-interjective: particles with interjective grammatical roles.
-#  e.g. (\u677e\u5cf6) \u3084
-\u52a9\u8a5e-\u9593\u6295\u52a9\u8a5e
-#
-#  particle-coordinate:
-#  e.g. \u3068, \u305f\u308a, \u3060\u306e, \u3060\u308a, \u3068\u304b, \u306a\u308a, \u3084, \u3084\u3089
-\u52a9\u8a5e-\u4e26\u7acb\u52a9\u8a5e
-#
-#  particle-final:
-#  e.g. \u304b\u3044, \u304b\u3057\u3089, \u3055, \u305c, (\u3060)\u3063\u3051-\u53e3\u8a9e/, (\u3068\u307e\u3063\u3066\u308b) \u3067-\u65b9\u8a00/, \u306a, \u30ca, \u306a\u3042-\u53e3\u8a9e/, \u305e, \u306d, \u30cd, 
-#       \u306d\u3047-\u53e3\u8a9e/, \u306d\u3048-\u53e3\u8a9e/, \u306d\u3093-\u65b9\u8a00/, \u306e, \u306e\u3046-\u53e3\u8a9e/, \u3084, \u3088, \u30e8, \u3088\u3049-\u53e3\u8a9e/, \u308f, \u308f\u3044-\u53e3\u8a9e/
-\u52a9\u8a5e-\u7d42\u52a9\u8a5e
-#
-#  particle-adverbial/conjunctive/final: The particle "ka" when unknown whether it is 
-#  adverbial, conjunctive, or sentence final. For example:
-#       (a) \u300cA \u304b B \u304b\u300d. Ex:\u300c(\u56fd\u5185\u3067\u904b\u7528\u3059\u308b) \u304b,(\u6d77\u5916\u3067\u904b\u7528\u3059\u308b) \u304b (.)\u300d
-#       (b) Inside an adverb phrase. Ex:\u300c(\u5e78\u3044\u3068\u3044\u3046) \u304b (, \u6b7b\u8005\u306f\u3044\u306a\u304b\u3063\u305f.)\u300d
-#           \u300c(\u7948\u308a\u304c\u5c4a\u3044\u305f\u305b\u3044) \u304b (, \u8a66\u9a13\u306b\u5408\u683c\u3057\u305f.)\u300d
-#       (c) \u300c\u304b\u306e\u3088\u3046\u306b\u300d. Ex:\u300c(\u4f55\u3082\u306a\u304b\u3063\u305f) \u304b (\u306e\u3088\u3046\u306b\u632f\u308b\u821e\u3063\u305f.)\u300d
-#  e.g. \u304b
-\u52a9\u8a5e-\u526f\u52a9\u8a5e\uff0f\u4e26\u7acb\u52a9\u8a5e\uff0f\u7d42\u52a9\u8a5e
-#
-#  particle-adnominalizer: The "no" that attaches to nouns and modifies 
-#  non-inflectional words.
-\u52a9\u8a5e-\u9023\u4f53\u5316
-#
-#  particle-adnominalizer: The "ni" and "to" that appear following nouns and adverbs 
-#  that are giongo, giseigo, or gitaigo.
-#  e.g. \u306b, \u3068
-\u52a9\u8a5e-\u526f\u8a5e\u5316
-#
-#  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. \u304b\u306a, \u3051\u3080, ( \u3057\u305f\u3060\u308d\u3046) \u306b, (\u3042\u3093\u305f) \u306b\u3083(\u308f\u304b\u3089\u3093), (\u4ffa) \u3093 (\u5bb6)
-\u52a9\u8a5e-\u7279\u6b8a
-#
-#####
-#  auxiliary-verb:
-\u52a9\u52d5\u8a5e
-#
-#####
-#  interjection: Greetings and other exclamations.
-#  e.g. \u304a\u306f\u3088\u3046, \u304a\u306f\u3088\u3046\u3054\u3056\u3044\u307e\u3059, \u3053\u3093\u306b\u3061\u306f, \u3053\u3093\u3070\u3093\u306f, \u3042\u308a\u304c\u3068\u3046, \u3069\u3046\u3082\u3042\u308a\u304c\u3068\u3046, \u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059, 
-#       \u3044\u305f\u3060\u304d\u307e\u3059, \u3054\u3061\u305d\u3046\u3055\u307e, \u3055\u3088\u306a\u3089, \u3055\u3088\u3046\u306a\u3089, \u306f\u3044, \u3044\u3044\u3048, \u3054\u3081\u3093, \u3054\u3081\u3093\u306a\u3055\u3044
-#\u611f\u52d5\u8a5e
-#
-#####
-#  symbol: unclassified Symbols.
-\u8a18\u53f7
-#
-#  symbol-misc: A general symbol not in one of the categories below.
-#  e.g. [\u25cb\u25ce@$\u3012\u2192+]
-\u8a18\u53f7-\u4e00\u822c
-#
-#  symbol-comma: Commas
-#  e.g. [,\u3001]
-\u8a18\u53f7-\u8aad\u70b9
-#
-#  symbol-period: Periods and full stops.
-#  e.g. [.\uff0e\u3002]
-\u8a18\u53f7-\u53e5\u70b9
-#
-#  symbol-space: Full-width whitespace.
-\u8a18\u53f7-\u7a7a\u767d
-#
-#  symbol-open_bracket:
-#  e.g. [({\u2018\u201c\u300e\u3010]
-\u8a18\u53f7-\u62ec\u5f27\u958b
-#
-#  symbol-close_bracket:
-#  e.g. [)}\u2019\u201d\u300f\u300d\u3011]
-\u8a18\u53f7-\u62ec\u5f27\u9589
-#
-#  symbol-alphabetic:
-#\u8a18\u53f7-\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8
-#
-#####
-#  other: unclassified other
-#\u305d\u306e\u4ed6
-#
-#  other-interjection: Words that are hard to classify as noun-suffixes or 
-#  sentence-final particles.
-#  e.g. (\u3060)\u30a1
-\u305d\u306e\u4ed6-\u9593\u6295
-#
-#####
-#  filler: Aizuchi that occurs during a conversation or sounds inserted as filler.
-#  e.g. \u3042\u306e, \u3046\u3093\u3068, \u3048\u3068
-\u30d5\u30a3\u30e9\u30fc
-#
-#####
-#  non-verbal: non-verbal sound.
-\u975e\u8a00\u8a9e\u97f3
-#
-#####
-#  fragment:
-#\u8a9e\u65ad\u7247
-#
-#####
-#  unknown: unknown part of speech.
-#\u672a\u77e5\u8a9e
-#
-##### End of file


[50/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10369: bin\solr.cmd delete and healthcheck now works again (fixed continuation chars ^)

Posted by cp...@apache.org.
SOLR-10369: bin\solr.cmd delete and healthcheck now works again (fixed continuation chars ^)


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

Branch: refs/heads/jira/solr-6203
Commit: 68eb078af854fbb923dee4a93541c7ff0fd0b982
Parents: b46b827
Author: Jan H�ydahl <ja...@apache.org>
Authored: Tue Mar 28 14:24:09 2017 +0200
Committer: Jan H�ydahl <ja...@apache.org>
Committed: Tue Mar 28 14:24:09 2017 +0200

----------------------------------------------------------------------
 solr/CHANGES.txt  | 2 ++
 solr/bin/solr.cmd | 4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/68eb078a/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 3403c90..b68c62f 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -139,6 +139,8 @@ Bug Fixes
 
 * SOLR-10362: "Memory Pool not found" error when reporting JVM metrics. (ab)
 
+* SOLR-10369: bin\solr.cmd delete and healthcheck now works again; fixed continuation chars ^ (Luis Goes via janhoy)
+
 Other Changes
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/68eb078a/solr/bin/solr.cmd
----------------------------------------------------------------------
diff --git a/solr/bin/solr.cmd b/solr/bin/solr.cmd
index ee76a21..2aa4f00 100644
--- a/solr/bin/solr.cmd
+++ b/solr/bin/solr.cmd
@@ -1234,7 +1234,7 @@ goto parse_healthcheck_args
 :run_healthcheck
 IF NOT DEFINED HEALTHCHECK_COLLECTION goto healthcheck_usage
 IF NOT DEFINED HEALTHCHECK_ZK_HOST set "HEALTHCHECK_ZK_HOST=localhost:9983"
-"%JAVA%" %SOLR_SSL_OPTS% %AUTHC_OPTS% %SOLR_ZK_CREDS_AND_ACLS% -Dsolr.install.dir="%SOLR_TIP%" ^ 
+"%JAVA%" %SOLR_SSL_OPTS% %AUTHC_OPTS% %SOLR_ZK_CREDS_AND_ACLS% -Dsolr.install.dir="%SOLR_TIP%" ^
   -Dlog4j.configuration="file:%DEFAULT_SERVER_DIR%\scripts\cloud-scripts\log4j.properties" ^
   -classpath "%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*;%DEFAULT_SERVER_DIR%\lib\ext\*" ^
   org.apache.solr.util.SolrCLI healthcheck -collection !HEALTHCHECK_COLLECTION! -zkHost !HEALTHCHECK_ZK_HOST!
@@ -1428,7 +1428,7 @@ if "!DELETE_CONFIG!"=="" (
   set DELETE_CONFIG=true
 )
 
-"%JAVA%" %SOLR_SSL_OPTS% %AUTHC_OPTS% %SOLR_ZK_CREDS_AND_ACLS% -Dsolr.install.dir="%SOLR_TIP%" ^ 
+"%JAVA%" %SOLR_SSL_OPTS% %AUTHC_OPTS% %SOLR_ZK_CREDS_AND_ACLS% -Dsolr.install.dir="%SOLR_TIP%" ^
 -Dlog4j.configuration="file:%DEFAULT_SERVER_DIR%\scripts\cloud-scripts\log4j.properties" ^
 -classpath "%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*;%DEFAULT_SERVER_DIR%\lib\ext\*" ^
 org.apache.solr.util.SolrCLI delete -name !DELETE_NAME! -deleteConfig !DELETE_CONFIG! ^


[10/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testAIFF.aif
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testAIFF.aif b/solr/contrib/morphlines-core/src/test-files/test-documents/testAIFF.aif
deleted file mode 100644
index 97eac1d..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testAIFF.aif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testBMP.bmp
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testBMP.bmp b/solr/contrib/morphlines-core/src/test-files/test-documents/testBMP.bmp
deleted file mode 100644
index c017615..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testBMP.bmp and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testBMPfp.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testBMPfp.txt b/solr/contrib/morphlines-core/src/test-files/test-documents/testBMPfp.txt
deleted file mode 100644
index 1da2966..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/testBMPfp.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-BMW to Make Hybrid Sports Car\u2029
- By CHRISTOPH RAUWALD . 
-LEIPZIG, Germany\u2014German car maker BMW AG said Friday it will start series production of a new plug-in hybrid sports car in 2013, to be based on the Vision EfficientDynamics Concept car shown at the Frankfurt auto show in September last year. Chief Executive Norbert Reithofer said the car will be produced in Germany but didn't provide details on the price. The BMW Vision EfficientDynamics Concept car is a sporty plug-in, full hybrid with a turbo-diesel engine, four seats and upward-pivoting doors. BMW executive board member Klaus Draeger told reporters he expects to achieve "a significant sales volume" with the new high-performance sports car. Asked whether annual sales could exceed 1,000 vehicles, Mr. Draeger said, "You said this and I'm not saying this is wrong." In March, Mr. Reithofer indicated that the concept car was set to make it into series production. "I like the car. And you know what it means when I say I like the car\u2014it means I will drive it. It's not just a concept 
 car," he told analysts during a presentation in Munich. The car will be designed for sale in all major global markets, which according to Mr. Draeger might require offering a gasoline engine instead of the prototype's three-cylinder diesel engine. Diesel cars account for roughly half of the European market, but are significantly less popular in the U.S. and hardly present at all in China. Mr. Draeger declined to comment on the vehicle's price tag, but noted that in order to achieve substantial sales volumes the price mustn't be too high. He said the same goes for BMW's planned Megacity Vehicle. A price tag of \u20ac60,000 ($85,242) or more would certainly limit potential sales volumes, he said. 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testEMLX.emlx
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testEMLX.emlx b/solr/contrib/morphlines-core/src/test-files/test-documents/testEMLX.emlx
deleted file mode 100644
index 66766e1..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/testEMLX.emlx
+++ /dev/null
@@ -1,72 +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.
--->
-
-1795
-From: "Julien Nioche (JIRA)" <ji...@apache.org>
-To: dev@tika.apache.org
-Subject: [jira] Commented: (TIKA-461) RFC822 messages not parsed
-Reply-To: dev@tika.apache.org
-Delivered-To: mailing list dev@tika.apache.org
-Date: Mon, 6 Sep 2010 05:25:34 -0400 (EDT)
-In-Reply-To: <60...@thor>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: 7bit
-X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394
-X-Virus-Checked: Checked by ClamAV on apache.org
-
-
-    [ https://issues.apache.org/jira/browse/TIKA-461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12906468#action_12906468 ] 
-
-Julien Nioche commented on TIKA-461:
-------------------------------------
-
-I'll have a look at mime4j and try to use it in Tika
-
-> RFC822 messages not parsed
-> --------------------------
->
->                 Key: TIKA-461
->                 URL: https://issues.apache.org/jira/browse/TIKA-461
->             Project: Tika
->          Issue Type: Bug
->          Components: parser
->    Affects Versions: 0.7
->            Reporter: Joshua Turner
->            Assignee: Julien Nioche
->
-> Presented with an RFC822 message exported from Thunderbird, AutodetectParser produces an empty body, and a Metadata containing only one key-value pair: "Content-Type=message/rfc822". Directly calling MboxParser likewise gives an empty body, but with two metadata pairs: "Content-Encoding=us-ascii Content-Type=application/mbox".
-> A quick peek at the source of MboxParser shows that the implementation is pretty naive. If the wiring can be sorted out, something like Apache James' mime4j might be a better bet.
-
--- 
-This message is automatically generated by JIRA.
--
-You can reply to this email to add a comment to the issue online.
-
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>flags</key>
-	<integer>0</integer>
-	<key>sender</key>
-	<string>"Julien Nioche (JIRA)" &lt;jira@apache.org&gt;</string>
-	<key>subject</key>
-	<string>[jira] Commented: (TIKA-461) RFC822 messages not parsed</string>
-	<key>to</key>
-	<string>dev@tika.apache.org</string></dict>
-</plist>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testEXCEL.xls
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testEXCEL.xls b/solr/contrib/morphlines-core/src/test-files/test-documents/testEXCEL.xls
deleted file mode 100644
index 86b2916..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testEXCEL.xls and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testEXCEL.xlsx
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testEXCEL.xlsx b/solr/contrib/morphlines-core/src/test-files/test-documents/testEXCEL.xlsx
deleted file mode 100644
index 8d5169f..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testEXCEL.xlsx and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testFLAC.flac
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testFLAC.flac b/solr/contrib/morphlines-core/src/test-files/test-documents/testFLAC.flac
deleted file mode 100644
index ccec947..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testFLAC.flac and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testFLV.flv
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testFLV.flv b/solr/contrib/morphlines-core/src/test-files/test-documents/testFLV.flv
deleted file mode 100644
index d35e9bb..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testFLV.flv and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg b/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg
deleted file mode 100644
index 1b93e77..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg.gz
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg.gz b/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg.gz
deleted file mode 100644
index 2ee8e9c..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg.gz and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg.tar.gz
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg.tar.gz b/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg.tar.gz
deleted file mode 100644
index 3f35102..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testJPEG_EXIF.jpg.tar.gz and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testMP3i18n.mp3
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testMP3i18n.mp3 b/solr/contrib/morphlines-core/src/test-files/test-documents/testMP3i18n.mp3
deleted file mode 100644
index 0f25370..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testMP3i18n.mp3 and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testMP4.m4a
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testMP4.m4a b/solr/contrib/morphlines-core/src/test-files/test-documents/testMP4.m4a
deleted file mode 100644
index a9bc731..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testMP4.m4a and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testPDF.pdf
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testPDF.pdf b/solr/contrib/morphlines-core/src/test-files/test-documents/testPDF.pdf
deleted file mode 100644
index 1f1bcff..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testPDF.pdf and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testPNG.png
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testPNG.png b/solr/contrib/morphlines-core/src/test-files/test-documents/testPNG.png
deleted file mode 100644
index afbcb5f..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testPNG.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testPPT_various.ppt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testPPT_various.ppt b/solr/contrib/morphlines-core/src/test-files/test-documents/testPPT_various.ppt
deleted file mode 100644
index 75829de..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testPPT_various.ppt and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testPPT_various.pptx
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testPPT_various.pptx b/solr/contrib/morphlines-core/src/test-files/test-documents/testPPT_various.pptx
deleted file mode 100644
index 92c2744..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testPPT_various.pptx and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testPSD.psd
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testPSD.psd b/solr/contrib/morphlines-core/src/test-files/test-documents/testPSD.psd
deleted file mode 100644
index 7cedbc2..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testPSD.psd and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testPages.pages
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testPages.pages b/solr/contrib/morphlines-core/src/test-files/test-documents/testPages.pages
deleted file mode 100644
index 9fe1e40..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testPages.pages and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testRFC822
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testRFC822 b/solr/contrib/morphlines-core/src/test-files/test-documents/testRFC822
deleted file mode 100644
index 9ce423a..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/testRFC822
+++ /dev/null
@@ -1,41 +0,0 @@
-From: "Julien Nioche (JIRA)" <ji...@apache.org>
-To: dev@tika.apache.org
-Subject: [jira] Commented: (TIKA-461) RFC822 messages not parsed
-Reply-To: dev@tika.apache.org
-Delivered-To: mailing list dev@tika.apache.org
-Date: Mon, 6 Sep 2010 05:25:34 -0400 (EDT)
-In-Reply-To: <60...@thor>
-MIME-Version: 1.0
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: 7bit
-X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394
-X-Virus-Checked: Checked by ClamAV on apache.org
-
-
-    [ https://issues.apache.org/jira/browse/TIKA-461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12906468#action_12906468 ] 
-
-Julien Nioche commented on TIKA-461:
-------------------------------------
-
-I'll have a look at mime4j and try to use it in Tika
-
-> RFC822 messages not parsed
-> --------------------------
->
->                 Key: TIKA-461
->                 URL: https://issues.apache.org/jira/browse/TIKA-461
->             Project: Tika
->          Issue Type: Bug
->          Components: parser
->    Affects Versions: 0.7
->            Reporter: Joshua Turner
->            Assignee: Julien Nioche
->
-> Presented with an RFC822 message exported from Thunderbird, AutodetectParser produces an empty body, and a Metadata containing only one key-value pair: "Content-Type=message/rfc822". Directly calling MboxParser likewise gives an empty body, but with two metadata pairs: "Content-Encoding=us-ascii Content-Type=application/mbox".
-> A quick peek at the source of MboxParser shows that the implementation is pretty naive. If the wiring can be sorted out, something like Apache James' mime4j might be a better bet.
-
--- 
-This message is automatically generated by JIRA.
--
-You can reply to this email to add a comment to the issue online.
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testRTFVarious.rtf
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testRTFVarious.rtf b/solr/contrib/morphlines-core/src/test-files/test-documents/testRTFVarious.rtf
deleted file mode 100644
index 57fadb9..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/testRTFVarious.rtf
+++ /dev/null
@@ -1,329 +0,0 @@
-{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
-{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}
-{\f11\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f15\fbidi \fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}MS Gothic{\*\falt MS Mincho};}
-{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}
-{\f175\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}{\f209\fbidi \fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}@MS Gothic;}
-{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
-{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
-{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
-{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f210\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
-{\f211\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f213\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f214\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f215\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
-{\f216\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f217\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f218\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f220\fbidi \fswiss\fcharset238\fprq2 Arial CE;}
-{\f221\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}{\f223\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f224\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f225\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}
-{\f226\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f227\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f228\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f230\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}
-{\f231\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f233\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f234\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f235\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
-{\f236\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f237\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f238\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}
-{\f322\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f320\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
-{\f321\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f323\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
-{\f324\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f327\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f550\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}
-{\f551\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f553\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f554\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f557\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}
-{\f580\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f581\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f583\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f584\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
-{\f587\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f590\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}{\f591\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f593\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}
-{\f594\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f595\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f596\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f597\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}
-{\f598\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f599\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f1962\fbidi \fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f1960\fbidi \fmodern\fcharset238\fprq1 @MS Mincho CE;}
-{\f1961\fbidi \fmodern\fcharset204\fprq1 @MS Mincho Cyr;}{\f1963\fbidi \fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f1964\fbidi \fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f1967\fbidi \fmodern\fcharset186\fprq1 @MS Mincho Baltic;}
-{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
-{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
-{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
-{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
-{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
-{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}
-{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}
-{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
-{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
-{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
-{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
-{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
-{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
-{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
-{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
-{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
-{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
-{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
-{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
-{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
-\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\chyperlink\ctint255\cshade255\red0\green0\blue255;\caccentone\ctint255\cshade255\red79\green129\blue189;}{\*\defchp \f31506\fs22 }
-{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
-\rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 \styrsid16456967 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
-\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
-\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{
-\s15\ql \li0\ri0\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
-\sbasedon0 \snext15 \slink16 \sunhideused \styrsid4535536 header;}{\*\cs16 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 \slink15 \slocked \styrsid4535536 Header Char;}{\s17\ql \li0\ri0\widctlpar
-\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
-\sbasedon0 \snext17 \slink18 \sunhideused \styrsid4535536 footer;}{\*\cs18 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 \slink17 \slocked \styrsid4535536 Footer Char;}{
-\s19\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs16\alang1025 \ltrch\fcs0 \f38\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
-\sbasedon0 \snext19 \slink20 \ssemihidden \sunhideused \styrsid4535536 Balloon Text;}{\*\cs20 \additive \rtlch\fcs1 \af38\afs16 \ltrch\fcs0 \f38\fs16 \sbasedon10 \slink19 \slocked \ssemihidden \styrsid4535536 Balloon Text Char;}{\*\cs21 \additive 
-\rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf17 \sbasedon10 \sunhideused \styrsid4535536 Hyperlink;}{\*\cs22 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf15 \sbasedon10 \ssemihidden \styrsid4535536 Placeholder Text;}{
-\s23\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs20\alang1025 \ltrch\fcs0 \f31506\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
-\sbasedon0 \snext23 \slink24 \ssemihidden \sunhideused \styrsid10829135 footnote text;}{\*\cs24 \additive \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20 \sbasedon10 \slink23 \slocked \ssemihidden \styrsid10829135 Footnote Text Char;}{\*\cs25 \additive 
-\rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden \sunhideused \styrsid10829135 footnote reference;}{\*\ts26\tsrowd\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv
-\brdrs\brdrw10 \trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
-\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon11 \snext26 \spriority59 \styrsid8288896 
-Table Grid;}{\s27\ql \li720\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
-\sbasedon0 \snext27 \sqformat \spriority34 \styrsid10055055 List Paragraph;}{\s28\ql \li0\ri0\sa200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af31507\afs18\alang1025 \ltrch\fcs0 
-\b\f31506\fs18\cf18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sunhideused \sqformat \spriority35 \styrsid11105546 caption;}}{\*\listtable{\list\listtemplateid1249008552\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0
-\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
-\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
-\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
-{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
-\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
-\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
-\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
-\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid73432867}{\list\listtemplateid1071396652\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0
-{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
-\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
-\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext
-\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
-\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698689
-\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698691
-\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
-\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid169494399}{\list\listtemplateid-487930464\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698705\'02\'00);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace360
-\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid1132862691}}{\*\listoverridetable{\listoverride\listid169494399\listoverridecount0\ls1}
-{\listoverride\listid73432867\listoverridecount0\ls2}{\listoverride\listid1132862691\listoverridecount0\ls3}}{\*\rsidtbl \rsid724479\rsid2255182\rsid2767955\rsid4260063\rsid4535536\rsid5051464\rsid5706211\rsid5843828\rsid7218132\rsid8152053\rsid8288896
-\rsid9897893\rsid9969477\rsid10055055\rsid10249050\rsid10829135\rsid11105546\rsid12662658\rsid12941695\rsid13331334\rsid14163426\rsid14225018\rsid14292078\rsid14556934\rsid16456967\rsid16539678}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0
-\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\subject Subject is here}{\author Michael McCandless}{\keywords Keyword1 Keyword2}{\operator Michael McCandless}{\creatim\yr2011\mo8\dy29\hr5\min20}
-{\revtim\yr2011\mo8\dy30\hr6\min13}{\version30}{\edmins445}{\nofpages2}{\nofwords95}{\nofchars546}{\nofcharsws640}{\vern32771}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
-\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect 
-\widowctrl\ftnbj\aenddoc\trackmoves1\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen
-\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1
-\jexpand\viewkind1\viewscale150\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
-\asianbrkrule\rsidroot4535536\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
-{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4535536 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 
-\f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 \chftnsep 
-\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4535536 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
-{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 \chftnsepc 
-\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4535536 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
-{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 \chftnsep 
-\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4535536 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 
-\f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 \chftnsepc 
-\par }}\ltrpar \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid16456967\sftnbj {\headerr \ltrpar \pard\plain \ltrpar\s15\ql \li0\ri0\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 
-\rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 This is the header text}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid12662658 .}{\rtlch\fcs1 
-\af31507 \ltrch\fcs0 \insrsid4535536 
-\par 
-\par }}{\footerr \ltrpar \pard\plain \ltrpar\s17\ql \li0\ri0\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 
-\f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 This is the footer text.
-\par 
-\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}
-{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8
-\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1
-\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 
-\lang1024\langfe1024\noproof\langfenp1028\insrsid4535536 {\shp{\*\shpinst\shpleft4866\shptop1990\shpright8593\shpbottom2658\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz0\shplid1026
-{\sp{\sn shapeType}{\sv 202}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lTxid}{\sv 65536}}{\sp{\sn hspNext}{\sv 1026}}{\sp{\sn fFitShapeToText}{\sv 1}}{\sp{\sn dhgt}{\sv 251660288}}{\sp{\sn pctHoriz}{\sv 400}}{\sp{\sn pctVert}{\sv 200}}
-{\sp{\sn sizerelh}{\sv 0}}{\sp{\sn sizerelv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 
-\af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 Here is a text box
-\par }}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8192\dptxbx\dptxlrtb{\dptxbxtext\ltrpar \pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 
-\ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 Here is a text box
-\par }}\dpx4866\dpy1990\dpxsize3727\dpysize668\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat1\dplinew15\dplinecor0\dplinecog0\dplinecob0}}}}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 Footnote appears here}
-{\rtlch\fcs1 \af31507 \ltrch\fcs0 \cs25\super\insrsid10829135 \chftn {\footnote \ltrpar \pard\plain \ltrpar\s23\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs20\alang1025 \ltrch\fcs0 
-\f31506\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \cs25\super\insrsid10829135 \chftn }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid10829135  This is a footnote.}}}{\rtlch\fcs1 \af31507 \ltrch\fcs0 
-\insrsid14292078 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14556934 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \b\insrsid14556934\charrsid14556934 Bold}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14556934  }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \i\insrsid14556934\charrsid14556934 italic}{\rtlch\fcs1 \af31507 \ltrch\fcs0 
-\insrsid14556934  }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \ul\insrsid14556934\charrsid14556934 underline}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14556934  }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \super\insrsid14556934\charrsid14556934 superscript}{\rtlch\fcs1 
-\af31507 \ltrch\fcs0 \insrsid14556934  }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \sub\insrsid14556934\charrsid14556934 subscript}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14556934 
-\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10055055 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14292078 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid10055055 Here is a list:
-\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\insrsid10055055 \loch\af3\dbch\af31506\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s27\ql \fi-360\li720\ri0\sa200\sl276\slmult1
-\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid10055055\contextualspace \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 
-\ltrch\fcs0 \insrsid10055055 Bullet 1
-\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\insrsid10055055 \loch\af3\dbch\af31506\hich\f3 \'b7\tab}Bullet 2
-\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f3\fs22\insrsid10055055 \loch\af3\dbch\af31506\hich\f3 \'b7\tab}Bullet 3
-\par }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid10055055 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
-{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid10055055 Here is a numbered list:
-\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f31506\fs22\insrsid10055055 \hich\af31506\dbch\af31506\loch\f31506 1)\tab}}\pard\plain \ltrpar\s27\ql \fi-360\li720\ri0\sa200\sl276\slmult1
-\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin720\itap0\pararsid10055055\contextualspace \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 
-\ltrch\fcs0 \insrsid10055055 Number bullet 1
-\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f31506\fs22\insrsid10055055 \hich\af31506\dbch\af31506\loch\f31506 2)\tab}Number bullet 2
-\par {\listtext\pard\plain\ltrpar \s27 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f31506\fs22\insrsid10055055 \hich\af31506\dbch\af31506\loch\f31506 3)\tab}Number bullet 3
-\par }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 
-\af31507 \ltrch\fcs0 \insrsid10829135 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536\charrsid4535536  }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 Keyword1 Keyword2}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 }{\rtlch\fcs1 
-\af31507 \ltrch\fcs0 \insrsid15481255 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 
-\par }{\field{\*\fldinst {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536  HYPERLINK "http://tika.apache.org" }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536 {\*\datafield 
-00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4800000068007400740070003a002f002f00740069006b0061002e006100700061006300680065002e006f00720067002f000000795881f43b1d7f48af2c825dc485276300000000a5ab0000}}}{\fldrslt {
-\rtlch\fcs1 \af31507 \ltrch\fcs0 \cs21\ul\cf17\insrsid4535536\charrsid4535536 This is a hyperlink}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid16456967\sftnbj {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14292078 
-\par 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4535536\charrsid4535536  }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14292078 }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14292078 Subject is here}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid14292078 }{\rtlch\fcs1 
-\af31507 \ltrch\fcs0 \insrsid4535536 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8288896 
-\par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts26\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 
-\trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid8288896\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 
-\clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3192\clshdrawnil \cellx3084\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3192\clshdrawnil \cellx6276\clvertalt
-\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3192\clshdrawnil \cellx9468\pard\plain \ltrpar
-\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\yts26 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8288896 
-Row 1 Col 1\cell Row 1 Col 2\cell Row 1 Col 3\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 
-\f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8288896 \trowd \irow0\irowband0\ltrrow\ts26\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr
-\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid8288896\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt
-\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3192\clshdrawnil \cellx3084\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 
-\cltxlrtb\clftsWidth3\clwWidth3192\clshdrawnil \cellx6276\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3192\clshdrawnil \cellx9468\row \ltrrow}\pard\plain \ltrpar
-\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\yts26 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8288896 
-Row 2 Col 1\cell Row 2 Col 2\cell Row 2 Col 3\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 
-\f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8288896 \trowd \irow1\irowband1\lastrow \ltrrow\ts26\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr
-\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid8288896\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt
-\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3192\clshdrawnil \cellx3084\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 
-\cltxlrtb\clftsWidth3\clwWidth3192\clshdrawnil \cellx6276\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth3192\clshdrawnil \cellx9468\row }\pard \ltrpar
-\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8288896 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid724479 Suddenly some }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5706211 J}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid724479 apanese text:}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid9969477 
-\par }{\rtlch\fcs1 \af11 \ltrch\fcs0 \loch\af11\hich\af11\dbch\af11\insrsid724479\charrsid724479 \loch\af11\hich\af11\dbch\f11 \uc2\u12478\'83\'5d\u12523\'83\'8b\u12466\'83\'51\u12392\'82\'c6\u23614\'94\'f6\u23822\'8d\'e8\u12289\'81\'41\u28129\'92\'57\u12293
-\'81\'58\u12392\'82\'c6\u26368\'8d\'c5\u26399\'8a\'fa}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid9969477 
-\par }{\rtlch\fcs1 \af15 \ltrch\fcs0 \lang1033\langfe1041\loch\af15\hich\af15\dbch\af15\langfenp1041\insrsid5843828 \loch\af15\hich\af15\dbch\f15 \uc2\u-248\'81\'69\u-217\'82\'66\u-216\'82\'67\u-207\'82\'70\u-247\'81\'6a}{\rtlch\fcs1 \af31507 \ltrch\fcs0 
-\insrsid9969477 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5706211 And then some Gothic text:
-\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid14163426 {\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14163426 \u-10240\'3f\u-8398\'3f\u-10240\'3f\u-8385\'3f\u-10240\'3f\u-8380\'3f\u-10240\'3f\u-8391\'3f\u-10240
-\'3f\u-8381\'3f\u-10240\'3f\u-8390\'3f}{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid14163426 
-\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid9969477 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid7218132 Here is a citation:}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid9969477 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid12941695 }{\field{\*\fldinst {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid12941695  CITATION Kra \\l 1033 }}{\fldrslt {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid12941695 (Kramer)}}}
-\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid16456967\sftnbj {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid12941695 }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid9969477 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11105546 
-\par }\pard\plain \ltrpar\s28\ql \li0\ri0\sa200\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid11105546 \rtlch\fcs1 \ab\af31507\afs18\alang1025 \ltrch\fcs0 \b\f31506\fs18\cf18\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 
-{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11105546 Figure }{\field{\*\fldinst {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11105546  SEQ Figure \\* ARABIC }}{\fldrslt {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid11105546 1}}}
-\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid16456967\sftnbj {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11105546  This is a caption for Figure 1
-\par }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8152053 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
-\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid8152053 
-\par 
-\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5051464 \sect }\sectd \ltrsect\sbknone\linex0\cols2\endnhere\sectlinegrid360\sectdefaultcl\sectrsid5051464\sftnbj \pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1
-\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5051464 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5051464 
-Row 1 column 1
-\par Row 2 column 1
-\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8152053 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5051464 Row 1 column 2
-\par Row 2 column 2
-\par \sect }\sectd \ltrsect\sbknone\linex0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid5051464\sftnbj \pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8152053 \rtlch\fcs1 
-\af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5051464\charrsid8152053 
-\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8
-72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7
-2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b
-44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7
-065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000
-00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08
-84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc
-52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353
-bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468
-656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c
-070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7
-29e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f7468656d65
-312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87615b8116d8
-a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad79482a9c04
-98f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b5d8a314d3c
-94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab999fb7b471
-7509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9699640f671
-9e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd5868b37a088d1
-e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d60cf03ac1a5
-193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f9e7ef3f2d1
-17d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be15c308d3f2
-8acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a99793849c26ae6
-6252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d32a423279a
-668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2af074481847
-bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86e877f0034e
-16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb44f95d843b
-5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a6409fb44d0
-8741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c3d9058edf2
-c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db02565e85f3b966
-0d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276b9f7dec44b
-7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8c33585b5fb
-9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e51440ca2e0
-088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95b21be5ceaf
-8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff6dce591a26
-ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec69ffb9e65d0
-28d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239b75a5bb1e6
-345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a44959d366ad93
-b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e82db8df9f30
-254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f74
-68656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f24
-51eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198
-720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528
-a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c0200001300000000000000000000000000
-000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000000000
-002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000140200007468
-656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b000016000000000000000000
-00000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000000000
-00000000000000009b0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000960a00000000}
-{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
-617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
-6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
-656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
-{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
-\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
-\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
-\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
-\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
-\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
-4d73786d6c322e534158584d4c5265616465722e352e30000000000000000000000e0000
-d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-fffffffffffffffffdffffff05000000feffffff04000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff01000000ec69d9888b8b3d4c859eaf6cd158be0f0000000000000000000000000076
-bb6efd66cc0103000000c0030000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff0200000000000000000000000000000000000000000000000076bb6efd66cc01
-0076bb6efd66cc010000000000000000000000003500cb004c0053004a004300ca00d80044005500470056003000cd0045004500d100c3004c00c000cd0051003d003d000000000000000000000000000000000032000101ffffffffffffffff0300000000000000000000000000000000000000000000000076bb6efd66
-cc010076bb6efd66cc010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000
-0000000000000000000000000000000016020000000000000100000002000000030000000400000005000000060000000700000008000000feffffff0a0000000b0000000c0000000d0000000e000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f757263657320786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d
-22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222053656c65637465645374796c653d225c4150412e58534c22205374796c654e616d653d22415041223e3c623a536f757263653e3c623a546167
-3e4b72613c2f623a5461673e3c623a536f75726365547970653e426f6f6b3c2f623a536f75726365547970653e3c623a477569643e7b32313839323034362d453338412d344136382d383931312d3837313145343731453345347d3c2f623a477569643e3c623a4c4349443e303c2f623a4c4349443e3c623a417574686f
-723e3c623a417574686f723e3c623a4e616d654c6973743e3c623a506572736f6e3e3c623a4c6173743e4b72616d65723c2f623a4c6173743e3c2f623a506572736f6e3e3c2f623a4e616d654c6973743e3c2f623a417574686f723e3c2f623a417574686f723e3c623a5469746c653e486f7720746f207573652054696b
-613c2f623a5469746c653e3c623a5265664f726465723e313c2f623a5265664f726465723e3c2f623a536f757263653e3c2f623a536f75726365733e0d0a68aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e31983c3f786d6c2076657273696f6e3d22312e302220656e
-636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b32344432423237452d423832412d343130442d393536412d4431303443363332453042357d2220786d6c6e733a64733d22687474703a2f2f736368656d61
-732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666
-696365446f63756d656e742f323030362f6269626c696f677261706879222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f72654974656d3e68656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027000000000000000000000000009b0900007468656d
-652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffff
-ffff0000000000000000000000000000000000000000000000000000000000000000000000000900000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff
-ffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffff
-ffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff
-ffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testSVG.svg
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testSVG.svg b/solr/contrib/morphlines-core/src/test-files/test-documents/testSVG.svg
deleted file mode 100644
index 8a05a48..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/testSVG.svg
+++ /dev/null
@@ -1,23 +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.
--->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
-          "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg width="1cm" height="1cm" version="1.1" xmlns="http://www.w3.org/2000/svg">
-  <desc>Test SVG image</desc>
-  <rect x="0.1cm" y="0.1cm" width="0.8cm" height="0.8cm"/>
-</svg>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testTIFF.tif
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testTIFF.tif b/solr/contrib/morphlines-core/src/test-files/test-documents/testTIFF.tif
deleted file mode 100644
index 8f6c7ab..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testTIFF.tif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testVISIO.vsd
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testVISIO.vsd b/solr/contrib/morphlines-core/src/test-files/test-documents/testVISIO.vsd
deleted file mode 100644
index d699e11..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testVISIO.vsd and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testWAV.wav
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testWAV.wav b/solr/contrib/morphlines-core/src/test-files/test-documents/testWAV.wav
deleted file mode 100644
index 59a063e..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testWAV.wav and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testWORD_various.doc
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testWORD_various.doc b/solr/contrib/morphlines-core/src/test-files/test-documents/testWORD_various.doc
deleted file mode 100644
index a2ad236..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/testWORD_various.doc and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testXML.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testXML.xml b/solr/contrib/morphlines-core/src/test-files/test-documents/testXML.xml
deleted file mode 100644
index dcfbb1c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/testXML.xml
+++ /dev/null
@@ -1,48 +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.
--->
-<oaidc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oaidc="http://www.openarchives.org/OAI/2.0/oai_dc/">
-
-  <dc:title>Tika test document</dc:title>
-
-  <dc:creator>Rida Benjelloun</dc:creator>
-
-  <dc:subject>Java</dc:subject>
-
-  <dc:subject>XML</dc:subject>
-
-  <dc:subject>XSLT</dc:subject>
-
-  <dc:subject>JDOM</dc:subject>
- 
-  <dc:subject>Indexation</dc:subject>
-
-  <dc:description>Framework d'indexation des documents XML, HTML, PDF etc.. </dc:description>
-
-  <dc:identifier>http://www.apache.org</dc:identifier>
-
-  <dc:date>2000-12-01T00:00:00.000Z</dc:date>
-
-  <dc:type>test</dc:type>
-
-  <dc:format>application/msword</dc:format>
-
-  <dc:language>Fr</dc:language>
-
-  <dc:rights>Archim�de et Lius � Ch�teauneuf testing chars en �t�</dc:rights>  
-
-</oaidc:dc>
\ No newline at end of file


[14/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stoptags_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stoptags_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stoptags_ja.txt
deleted file mode 100644
index 71b7508..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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
-#\u540d\u8a5e
-#
-#  noun-common: Common nouns or nouns where the sub-classification is undefined
-#\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-proper: Proper nouns where the sub-classification is undefined 
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e
-#
-#  noun-proper-misc: miscellaneous proper nouns
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-proper-person: Personal names where the sub-classification is undefined
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d
-#
-#  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. \u304a\u5e02\u306e\u65b9
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u4e00\u822c
-#
-#  noun-proper-person-surname: Mainly Japanese surnames.
-#  e.g. \u5c71\u7530
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u59d3
-#
-#  noun-proper-person-given_name: Mainly Japanese given names.
-#  e.g. \u592a\u90ce
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u540d
-#
-#  noun-proper-organization: Names representing organizations.
-#  e.g. \u901a\u7523\u7701, NHK
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u7d44\u7e54
-#
-#  noun-proper-place: Place names where the sub-classification is undefined
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df
-#
-#  noun-proper-place-misc: Place names excluding countries.
-#  e.g. \u30a2\u30b8\u30a2, \u30d0\u30eb\u30bb\u30ed\u30ca, \u4eac\u90fd
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df-\u4e00\u822c
-#
-#  noun-proper-place-country: Country names. 
-#  e.g. \u65e5\u672c, \u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df-\u56fd
-#
-#  noun-pronoun: Pronouns where the sub-classification is undefined
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e
-#
-#  noun-pronoun-misc: miscellaneous pronouns: 
-#  e.g. \u305d\u308c, \u3053\u3053, \u3042\u3044\u3064, \u3042\u306a\u305f, \u3042\u3061\u3053\u3061, \u3044\u304f\u3064, \u3069\u3053\u304b, \u306a\u306b, \u307f\u306a\u3055\u3093, \u307f\u3093\u306a, \u308f\u305f\u304f\u3057, \u308f\u308c\u308f\u308c
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-pronoun-contraction: Spoken language contraction made by combining a 
-#  pronoun and the particle 'wa'.
-#  e.g. \u3042\u308a\u3083, \u3053\u308a\u3083, \u3053\u308a\u3083\u3042, \u305d\u308a\u3083, \u305d\u308a\u3083\u3042 
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e-\u7e2e\u7d04
-#
-#  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. \u91d1\u66dc, \u4e00\u6708, \u5348\u5f8c, \u5c11\u91cf
-#\u540d\u8a5e-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-verbal: Nouns that take arguments with case and can appear followed by 
-#  'suru' and related verbs (\u3059\u308b, \u3067\u304d\u308b, \u306a\u3055\u308b, \u304f\u3060\u3055\u308b)
-#  e.g. \u30a4\u30f3\u30d7\u30c3\u30c8, \u611b\u7740, \u60aa\u5316, \u60aa\u6226\u82e6\u95d8, \u4e00\u5b89\u5fc3, \u4e0b\u53d6\u308a
-#\u540d\u8a5e-\u30b5\u5909\u63a5\u7d9a
-#
-#  noun-adjective-base: The base form of adjectives, words that appear before \u306a ("na")
-#  e.g. \u5065\u5eb7, \u5b89\u6613, \u99c4\u76ee, \u3060\u3081
-#\u540d\u8a5e-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-numeric: Arabic numbers, Chinese numerals, and counters like \u4f55 (\u56de), \u6570.
-#  e.g. 0, 1, 2, \u4f55, \u6570, \u5e7e
-#\u540d\u8a5e-\u6570
-#
-#  noun-affix: noun affixes where the sub-classification is undefined
-#\u540d\u8a5e-\u975e\u81ea\u7acb
-#
-#  noun-affix-misc: Of adnominalizers, the case-marker \u306e ("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. \u3042\u304b\u3064\u304d, \u6681, \u304b\u3044, \u7532\u6590, \u6c17, \u304d\u3089\u3044, \u5acc\u3044, \u304f\u305b, \u7656, \u3053\u3068, \u4e8b, \u3054\u3068, \u6bce, \u3057\u3060\u3044, \u6b21\u7b2c, 
-#       \u9806, \u305b\u3044, \u6240\u70ba, \u3064\u3044\u3067, \u5e8f\u3067, \u3064\u3082\u308a, \u7a4d\u3082\u308a, \u70b9, \u3069\u3053\u308d, \u306e, \u306f\u305a, \u7b48, \u306f\u305a\u307f, \u5f3e\u307f, 
-#       \u62cd\u5b50, \u3075\u3046, \u3075\u308a, \u632f\u308a, \u307b\u3046, \u65b9, \u65e8, \u3082\u306e, \u7269, \u8005, \u3086\u3048, \u6545, \u3086\u3048\u3093, \u6240\u4ee5, \u308f\u3051, \u8a33,
-#       \u308f\u308a, \u5272\u308a, \u5272, \u3093-\u53e3\u8a9e/, \u3082\u3093-\u53e3\u8a9e/
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u4e00\u822c
-#
-#  noun-affix-adverbial: noun affixes that that can behave as adverbs.
-#  e.g. \u3042\u3044\u3060, \u9593, \u3042\u3052\u304f, \u6319\u3052\u53e5, \u3042\u3068, \u5f8c, \u4f59\u308a, \u4ee5\u5916, \u4ee5\u964d, \u4ee5\u5f8c, \u4ee5\u4e0a, \u4ee5\u524d, \u4e00\u65b9, \u3046\u3048, 
-#       \u4e0a, \u3046\u3061, \u5185, \u304a\u308a, \u6298\u308a, \u304b\u304e\u308a, \u9650\u308a, \u304d\u308a, \u3063\u304d\u308a, \u7d50\u679c, \u3053\u308d, \u9803, \u3055\u3044, \u969b, \u6700\u4e2d, \u3055\u306a\u304b, 
-#       \u6700\u4e2d, \u3058\u305f\u3044, \u81ea\u4f53, \u305f\u3073, \u5ea6, \u305f\u3081, \u70ba, \u3064\u3069, \u90fd\u5ea6, \u3068\u304a\u308a, \u901a\u308a, \u3068\u304d, \u6642, \u3068\u3053\u308d, \u6240, 
-#       \u3068\u305f\u3093, \u9014\u7aef, \u306a\u304b, \u4e2d, \u306e\u3061, \u5f8c, \u3070\u3042\u3044, \u5834\u5408, \u65e5, \u3076\u3093, \u5206, \u307b\u304b, \u4ed6, \u307e\u3048, \u524d, \u307e\u307e, 
-#       \u5118, \u4fad, \u307f\u304e\u308a, \u77e2\u5148
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-affix-aux: noun affixes treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars 
-#  with the stem \u3088\u3046(\u3060) ("you(da)").
-#  e.g.  \u3088\u3046, \u3084\u3046, \u69d8 (\u3088\u3046)
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#  
-#  noun-affix-adjective-base: noun affixes that can connect to the indeclinable
-#  connection form \u306a (aux "da").
-#  e.g. \u307f\u305f\u3044, \u3075\u3046
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-special: special nouns where the sub-classification is undefined.
-#\u540d\u8a5e-\u7279\u6b8a
-#
-#  noun-special-aux: The \u305d\u3046\u3060 ("souda") stem form that is used for reporting news, is 
-#  treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars, and attach to the base 
-#  form of inflectional words.
-#  e.g. \u305d\u3046
-#\u540d\u8a5e-\u7279\u6b8a-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix: noun suffixes where the sub-classification is undefined.
-#\u540d\u8a5e-\u63a5\u5c3e
-#
-#  noun-suffix-misc: Of the nouns or stem forms of other parts of speech that connect 
-#  to \u30ac\u30eb or \u30bf\u30a4 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 
-#  \u63a5\u5c3e\u8a9e ("suffix") and is usually the last element in a compound noun.
-#  e.g. \u304a\u304d, \u304b\u305f, \u65b9, \u7532\u6590 (\u304c\u3044), \u304c\u304b\u308a, \u304e\u307f, \u6c17\u5473, \u3050\u308b\u307f, (\uff5e\u3057\u305f) \u3055, \u6b21\u7b2c, \u6e08 (\u305a) \u307f,
-#       \u3088\u3046, (\u3067\u304d)\u3063\u3053, \u611f, \u89b3, \u6027, \u5b66, \u985e, \u9762, \u7528
-#\u540d\u8a5e-\u63a5\u5c3e-\u4e00\u822c
-#
-#  noun-suffix-person: Suffixes that form nouns and attach to person names more often
-#  than other nouns.
-#  e.g. \u541b, \u69d8, \u8457
-#\u540d\u8a5e-\u63a5\u5c3e-\u4eba\u540d
-#
-#  noun-suffix-place: Suffixes that form nouns and attach to place names more often 
-#  than other nouns.
-#  e.g. \u753a, \u5e02, \u770c
-#\u540d\u8a5e-\u63a5\u5c3e-\u5730\u57df
-#
-#  noun-suffix-verbal: Of the suffixes that attach to nouns and form nouns, those that 
-#  can appear before \u30b9\u30eb ("suru").
-#  e.g. \u5316, \u8996, \u5206\u3051, \u5165\u308a, \u843d\u3061, \u8cb7\u3044
-#\u540d\u8a5e-\u63a5\u5c3e-\u30b5\u5909\u63a5\u7d9a
-#
-#  noun-suffix-aux: The stem form of \u305d\u3046\u3060 (\u69d8\u614b) that is used to indicate conditions, 
-#  is treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars, and attach to the 
-#  conjunctive form of inflectional words.
-#  e.g. \u305d\u3046
-#\u540d\u8a5e-\u63a5\u5c3e-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix-adjective-base: Suffixes that attach to other nouns or the conjunctive 
-#  form of inflectional words and appear before the copula \u3060 ("da").
-#  e.g. \u7684, \u3052, \u304c\u3061
-#\u540d\u8a5e-\u63a5\u5c3e-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix-adverbial: Suffixes that attach to other nouns and can behave as adverbs.
-#  e.g. \u5f8c (\u3054), \u4ee5\u5f8c, \u4ee5\u964d, \u4ee5\u524d, \u524d\u5f8c, \u4e2d, \u672b, \u4e0a, \u6642 (\u3058)
-#\u540d\u8a5e-\u63a5\u5c3e-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-suffix-classifier: Suffixes that attach to numbers and form nouns. This category 
-#  is more inclusive than \u52a9\u6570\u8a5e ("classifier") and includes common nouns that attach 
-#  to numbers.
-#  e.g. \u500b, \u3064, \u672c, \u518a, \u30d1\u30fc\u30bb\u30f3\u30c8, cm, kg, \u30ab\u6708, \u304b\u56fd, \u533a\u753b, \u6642\u9593, \u6642\u534a
-#\u540d\u8a5e-\u63a5\u5c3e-\u52a9\u6570\u8a5e
-#
-#  noun-suffix-special: Special suffixes that mainly attach to inflecting words.
-#  e.g. (\u697d\u3057) \u3055, (\u8003\u3048) \u65b9
-#\u540d\u8a5e-\u63a5\u5c3e-\u7279\u6b8a
-#
-#  noun-suffix-conjunctive: Nouns that behave like conjunctions and join two words 
-#  together.
-#  e.g. (\u65e5\u672c) \u5bfe (\u30a2\u30e1\u30ea\u30ab), \u5bfe (\u30a2\u30e1\u30ea\u30ab), (3) \u5bfe (5), (\u5973\u512a) \u517c (\u4e3b\u5a66)
-#\u540d\u8a5e-\u63a5\u7d9a\u8a5e\u7684
-#
-#  noun-verbal_aux: Nouns that attach to the conjunctive particle \u3066 ("te") and are 
-#  semantically verb-like.
-#  e.g. \u3054\u3089\u3093, \u3054\u89a7, \u5fa1\u89a7, \u9802\u6234
-#\u540d\u8a5e-\u52d5\u8a5e\u975e\u81ea\u7acb\u7684
-#
-#  noun-quotation: text that cannot be segmented into words, proverbs, Chinese poetry, 
-#  dialects, English, etc. Currently, the only entry for \u540d\u8a5e \u5f15\u7528\u6587\u5b57\u5217 ("noun quotation") 
-#  is \u3044\u308f\u304f ("iwaku").
-#\u540d\u8a5e-\u5f15\u7528\u6587\u5b57\u5217
-#
-#  noun-nai_adjective: Words that appear before the auxiliary verb \u306a\u3044 ("nai") and
-#  behave like an adjective.
-#  e.g. \u7533\u3057\u8a33, \u4ed5\u65b9, \u3068\u3093\u3067\u3082, \u9055\u3044
-#\u540d\u8a5e-\u30ca\u30a4\u5f62\u5bb9\u8a5e\u8a9e\u5e79
-#
-#####
-#  prefix: unclassified prefixes
-#\u63a5\u982d\u8a5e
-#
-#  prefix-nominal: Prefixes that attach to nouns (including adjective stem forms) 
-#  excluding numerical expressions.
-#  e.g. \u304a (\u6c34), \u67d0 (\u6c0f), \u540c (\u793e), \u6545 (\uff5e\u6c0f), \u9ad8 (\u54c1\u8cea), \u304a (\u898b\u4e8b), \u3054 (\u7acb\u6d3e)
-#\u63a5\u982d\u8a5e-\u540d\u8a5e\u63a5\u7d9a
-#
-#  prefix-verbal: Prefixes that attach to the imperative form of a verb or a verb
-#  in conjunctive form followed by \u306a\u308b/\u306a\u3055\u308b/\u304f\u3060\u3055\u308b.
-#  e.g. \u304a (\u8aad\u307f\u306a\u3055\u3044), \u304a (\u5ea7\u308a)
-#\u63a5\u982d\u8a5e-\u52d5\u8a5e\u63a5\u7d9a
-#
-#  prefix-adjectival: Prefixes that attach to adjectives.
-#  e.g. \u304a (\u5bd2\u3044\u3067\u3059\u306d\u3048), \u30d0\u30ab (\u3067\u304b\u3044)
-#\u63a5\u982d\u8a5e-\u5f62\u5bb9\u8a5e\u63a5\u7d9a
-#
-#  prefix-numerical: Prefixes that attach to numerical expressions.
-#  e.g. \u7d04, \u304a\u3088\u305d, \u6bce\u6642
-#\u63a5\u982d\u8a5e-\u6570\u63a5\u7d9a
-#
-#####
-#  verb: unclassified verbs
-#\u52d5\u8a5e
-#
-#  verb-main:
-#\u52d5\u8a5e-\u81ea\u7acb
-#
-#  verb-auxiliary:
-#\u52d5\u8a5e-\u975e\u81ea\u7acb
-#
-#  verb-suffix:
-#\u52d5\u8a5e-\u63a5\u5c3e
-#
-#####
-#  adjective: unclassified adjectives
-#\u5f62\u5bb9\u8a5e
-#
-#  adjective-main:
-#\u5f62\u5bb9\u8a5e-\u81ea\u7acb
-#
-#  adjective-auxiliary:
-#\u5f62\u5bb9\u8a5e-\u975e\u81ea\u7acb
-#
-#  adjective-suffix:
-#\u5f62\u5bb9\u8a5e-\u63a5\u5c3e
-#
-#####
-#  adverb: unclassified adverbs
-#\u526f\u8a5e
-#
-#  adverb-misc: Words that can be segmented into one unit and where adnominal 
-#  modification is not possible.
-#  e.g. \u3042\u3044\u304b\u308f\u3089\u305a, \u591a\u5206
-#\u526f\u8a5e-\u4e00\u822c
-#
-#  adverb-particle_conjunction: Adverbs that can be followed by \u306e, \u306f, \u306b, 
-#  \u306a, \u3059\u308b, \u3060, etc.
-#  e.g. \u3053\u3093\u306a\u306b, \u305d\u3093\u306a\u306b, \u3042\u3093\u306a\u306b, \u306a\u306b\u304b, \u306a\u3093\u3067\u3082
-#\u526f\u8a5e-\u52a9\u8a5e\u985e\u63a5\u7d9a
-#
-#####
-#  adnominal: Words that only have noun-modifying forms.
-#  e.g. \u3053\u306e, \u305d\u306e, \u3042\u306e, \u3069\u306e, \u3044\u308f\u3086\u308b, \u306a\u3093\u3089\u304b\u306e, \u4f55\u3089\u304b\u306e, \u3044\u308d\u3093\u306a, \u3053\u3046\u3044\u3046, \u305d\u3046\u3044\u3046, \u3042\u3042\u3044\u3046, 
-#       \u3069\u3046\u3044\u3046, \u3053\u3093\u306a, \u305d\u3093\u306a, \u3042\u3093\u306a, \u3069\u3093\u306a, \u5927\u304d\u306a, \u5c0f\u3055\u306a, \u304a\u304b\u3057\u306a, \u307b\u3093\u306e, \u305f\u3044\u3057\u305f, 
-#       \u300c(, \u3082) \u3055\u308b (\u3053\u3068\u306a\u304c\u3089)\u300d, \u5fae\u3005\u305f\u308b, \u5802\u3005\u305f\u308b, \u5358\u306a\u308b, \u3044\u304b\u306a\u308b, \u6211\u304c\u300d\u300c\u540c\u3058, \u4ea1\u304d
-#\u9023\u4f53\u8a5e
-#
-#####
-#  conjunction: Conjunctions that can occur independently.
-#  e.g. \u304c, \u3051\u308c\u3069\u3082, \u305d\u3057\u3066, \u3058\u3083\u3042, \u305d\u308c\u3069\u3053\u308d\u304b
-\u63a5\u7d9a\u8a5e
-#
-#####
-#  particle: unclassified particles.
-\u52a9\u8a5e
-#
-#  particle-case: case particles where the subclassification is undefined.
-\u52a9\u8a5e-\u683c\u52a9\u8a5e
-#
-#  particle-case-misc: Case particles.
-#  e.g. \u304b\u3089, \u304c, \u3067, \u3068, \u306b, \u3078, \u3088\u308a, \u3092, \u306e, \u306b\u3066
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u4e00\u822c
-#
-#  particle-case-quote: the "to" that appears after nouns, a person\u2019s speech, 
-#  quotation marks, expressions of decisions from a meeting, reasons, judgements,
-#  conjectures, etc.
-#  e.g. ( \u3060) \u3068 (\u8ff0\u3079\u305f.), ( \u3067\u3042\u308b) \u3068 (\u3057\u3066\u57f7\u884c\u7336\u4e88...)
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u5f15\u7528
-#
-#  particle-case-compound: Compounds of particles and verbs that mainly behave 
-#  like case particles.
-#  e.g. \u3068\u3044\u3046, \u3068\u3044\u3063\u305f, \u3068\u304b\u3044\u3046, \u3068\u3057\u3066, \u3068\u3068\u3082\u306b, \u3068\u5171\u306b, \u3067\u3082\u3063\u3066, \u306b\u3042\u305f\u3063\u3066, \u306b\u5f53\u305f\u3063\u3066, \u306b\u5f53\u3063\u3066,
-#       \u306b\u3042\u305f\u308a, \u306b\u5f53\u305f\u308a, \u306b\u5f53\u308a, \u306b\u5f53\u305f\u308b, \u306b\u3042\u305f\u308b, \u306b\u304a\u3044\u3066, \u306b\u65bc\u3044\u3066,\u306b\u65bc\u3066, \u306b\u304a\u3051\u308b, \u306b\u65bc\u3051\u308b, 
-#       \u306b\u304b\u3051, \u306b\u304b\u3051\u3066, \u306b\u304b\u3093\u3057, \u306b\u95a2\u3057, \u306b\u304b\u3093\u3057\u3066, \u306b\u95a2\u3057\u3066, \u306b\u304b\u3093\u3059\u308b, \u306b\u95a2\u3059\u308b, \u306b\u969b\u3057, 
-#       \u306b\u969b\u3057\u3066, \u306b\u3057\u305f\u304c\u3044, \u306b\u5f93\u3044, \u306b\u5f93\u3046, \u306b\u3057\u305f\u304c\u3063\u3066, \u306b\u5f93\u3063\u3066, \u306b\u305f\u3044\u3057, \u306b\u5bfe\u3057, \u306b\u305f\u3044\u3057\u3066, 
-#       \u306b\u5bfe\u3057\u3066, \u306b\u305f\u3044\u3059\u308b, \u306b\u5bfe\u3059\u308b, \u306b\u3064\u3044\u3066, \u306b\u3064\u304d, \u306b\u3064\u3051, \u306b\u3064\u3051\u3066, \u306b\u3064\u308c, \u306b\u3064\u308c\u3066, \u306b\u3068\u3063\u3066,
-#       \u306b\u3068\u308a, \u306b\u307e\u3064\u308f\u308b, \u306b\u3088\u3063\u3066, \u306b\u4f9d\u3063\u3066, \u306b\u56e0\u3063\u3066, \u306b\u3088\u308a, \u306b\u4f9d\u308a, \u306b\u56e0\u308a, \u306b\u3088\u308b, \u306b\u4f9d\u308b, \u306b\u56e0\u308b, 
-#       \u306b\u308f\u305f\u3063\u3066, \u306b\u308f\u305f\u308b, \u3092\u3082\u3063\u3066, \u3092\u4ee5\u3063\u3066, \u3092\u901a\u3058, \u3092\u901a\u3058\u3066, \u3092\u901a\u3057\u3066, \u3092\u3081\u3050\u3063\u3066, \u3092\u3081\u3050\u308a, \u3092\u3081\u3050\u308b,
-#       \u3063\u3066-\u53e3\u8a9e/, \u3061\u3085\u3046-\u95a2\u897f\u5f01\u300c\u3068\u3044\u3046\u300d/, (\u4f55) \u3066\u3044\u3046 (\u4eba)-\u53e3\u8a9e/, \u3063\u3066\u3044\u3046-\u53e3\u8a9e/, \u3068\u3044\u3075, \u3068\u304b\u3044\u3075
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u9023\u8a9e
-#
-#  particle-conjunctive:
-#  e.g. \u304b\u3089, \u304b\u3089\u306b\u306f, \u304c, \u3051\u308c\u3069, \u3051\u308c\u3069\u3082, \u3051\u3069, \u3057, \u3064\u3064, \u3066, \u3067, \u3068, \u3068\u3053\u308d\u304c, \u3069\u3053\u308d\u304b, \u3068\u3082, \u3069\u3082, 
-#       \u306a\u304c\u3089, \u306a\u308a, \u306e\u3067, \u306e\u306b, \u3070, \u3082\u306e\u306e, \u3084 ( \u3057\u305f), \u3084\u3044\u306a\u3084, (\u3053\u308d\u3093) \u3058\u3083(\u3044\u3051\u306a\u3044)-\u53e3\u8a9e/, 
-#       (\u884c\u3063) \u3061\u3083(\u3044\u3051\u306a\u3044)-\u53e3\u8a9e/, (\u8a00\u3063) \u305f\u3063\u3066 (\u3057\u304b\u305f\u304c\u306a\u3044)-\u53e3\u8a9e/, (\u305d\u308c\u304c\u306a\u304f)\u3063\u305f\u3063\u3066 (\u5e73\u6c17)-\u53e3\u8a9e/
-\u52a9\u8a5e-\u63a5\u7d9a\u52a9\u8a5e
-#
-#  particle-dependency:
-#  e.g. \u3053\u305d, \u3055\u3048, \u3057\u304b, \u3059\u3089, \u306f, \u3082, \u305e
-\u52a9\u8a5e-\u4fc2\u52a9\u8a5e
-#
-#  particle-adverbial:
-#  e.g. \u304c\u3066\u3089, \u304b\u3082, \u304f\u3089\u3044, \u4f4d, \u3050\u3089\u3044, \u3057\u3082, (\u5b66\u6821) \u3058\u3083(\u3053\u308c\u304c\u6d41\u884c\u3063\u3066\u3044\u308b)-\u53e3\u8a9e/, 
-#       (\u305d\u308c)\u3058\u3083\u3042 (\u3088\u304f\u306a\u3044)-\u53e3\u8a9e/, \u305a\u3064, (\u79c1) \u306a\u305e, \u306a\u3069, (\u79c1) \u306a\u308a (\u306b), (\u5148\u751f) \u306a\u3093\u304b (\u5927\u5acc\u3044)-\u53e3\u8a9e/,
-#       (\u79c1) \u306a\u3093\u305e, (\u5148\u751f) \u306a\u3093\u3066 (\u5927\u5acc\u3044)-\u53e3\u8a9e/, \u306e\u307f, \u3060\u3051, (\u79c1) \u3060\u3063\u3066-\u53e3\u8a9e/, \u3060\u306b, 
-#       (\u5f7c)\u3063\u305f\u3089-\u53e3\u8a9e/, (\u304a\u8336) \u3067\u3082 (\u3044\u304b\u304c), \u7b49 (\u3068\u3046), (\u4eca\u5f8c) \u3068\u3082, \u3070\u304b\u308a, \u3070\u3063\u304b-\u53e3\u8a9e/, \u3070\u3063\u304b\u308a-\u53e3\u8a9e/,
-#       \u307b\u3069, \u7a0b, \u307e\u3067, \u8fc4, (\u8ab0) \u3082 (\u304c)([\u52a9\u8a5e-\u683c\u52a9\u8a5e] \u304a\u3088\u3073 [\u52a9\u8a5e-\u4fc2\u52a9\u8a5e] \u306e\u524d\u306b\u4f4d\u7f6e\u3059\u308b\u300c\u3082\u300d)
-\u52a9\u8a5e-\u526f\u52a9\u8a5e
-#
-#  particle-interjective: particles with interjective grammatical roles.
-#  e.g. (\u677e\u5cf6) \u3084
-\u52a9\u8a5e-\u9593\u6295\u52a9\u8a5e
-#
-#  particle-coordinate:
-#  e.g. \u3068, \u305f\u308a, \u3060\u306e, \u3060\u308a, \u3068\u304b, \u306a\u308a, \u3084, \u3084\u3089
-\u52a9\u8a5e-\u4e26\u7acb\u52a9\u8a5e
-#
-#  particle-final:
-#  e.g. \u304b\u3044, \u304b\u3057\u3089, \u3055, \u305c, (\u3060)\u3063\u3051-\u53e3\u8a9e/, (\u3068\u307e\u3063\u3066\u308b) \u3067-\u65b9\u8a00/, \u306a, \u30ca, \u306a\u3042-\u53e3\u8a9e/, \u305e, \u306d, \u30cd, 
-#       \u306d\u3047-\u53e3\u8a9e/, \u306d\u3048-\u53e3\u8a9e/, \u306d\u3093-\u65b9\u8a00/, \u306e, \u306e\u3046-\u53e3\u8a9e/, \u3084, \u3088, \u30e8, \u3088\u3049-\u53e3\u8a9e/, \u308f, \u308f\u3044-\u53e3\u8a9e/
-\u52a9\u8a5e-\u7d42\u52a9\u8a5e
-#
-#  particle-adverbial/conjunctive/final: The particle "ka" when unknown whether it is 
-#  adverbial, conjunctive, or sentence final. For example:
-#       (a) \u300cA \u304b B \u304b\u300d. Ex:\u300c(\u56fd\u5185\u3067\u904b\u7528\u3059\u308b) \u304b,(\u6d77\u5916\u3067\u904b\u7528\u3059\u308b) \u304b (.)\u300d
-#       (b) Inside an adverb phrase. Ex:\u300c(\u5e78\u3044\u3068\u3044\u3046) \u304b (, \u6b7b\u8005\u306f\u3044\u306a\u304b\u3063\u305f.)\u300d
-#           \u300c(\u7948\u308a\u304c\u5c4a\u3044\u305f\u305b\u3044) \u304b (, \u8a66\u9a13\u306b\u5408\u683c\u3057\u305f.)\u300d
-#       (c) \u300c\u304b\u306e\u3088\u3046\u306b\u300d. Ex:\u300c(\u4f55\u3082\u306a\u304b\u3063\u305f) \u304b (\u306e\u3088\u3046\u306b\u632f\u308b\u821e\u3063\u305f.)\u300d
-#  e.g. \u304b
-\u52a9\u8a5e-\u526f\u52a9\u8a5e\uff0f\u4e26\u7acb\u52a9\u8a5e\uff0f\u7d42\u52a9\u8a5e
-#
-#  particle-adnominalizer: The "no" that attaches to nouns and modifies 
-#  non-inflectional words.
-\u52a9\u8a5e-\u9023\u4f53\u5316
-#
-#  particle-adnominalizer: The "ni" and "to" that appear following nouns and adverbs 
-#  that are giongo, giseigo, or gitaigo.
-#  e.g. \u306b, \u3068
-\u52a9\u8a5e-\u526f\u8a5e\u5316
-#
-#  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. \u304b\u306a, \u3051\u3080, ( \u3057\u305f\u3060\u308d\u3046) \u306b, (\u3042\u3093\u305f) \u306b\u3083(\u308f\u304b\u3089\u3093), (\u4ffa) \u3093 (\u5bb6)
-\u52a9\u8a5e-\u7279\u6b8a
-#
-#####
-#  auxiliary-verb:
-\u52a9\u52d5\u8a5e
-#
-#####
-#  interjection: Greetings and other exclamations.
-#  e.g. \u304a\u306f\u3088\u3046, \u304a\u306f\u3088\u3046\u3054\u3056\u3044\u307e\u3059, \u3053\u3093\u306b\u3061\u306f, \u3053\u3093\u3070\u3093\u306f, \u3042\u308a\u304c\u3068\u3046, \u3069\u3046\u3082\u3042\u308a\u304c\u3068\u3046, \u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059, 
-#       \u3044\u305f\u3060\u304d\u307e\u3059, \u3054\u3061\u305d\u3046\u3055\u307e, \u3055\u3088\u306a\u3089, \u3055\u3088\u3046\u306a\u3089, \u306f\u3044, \u3044\u3044\u3048, \u3054\u3081\u3093, \u3054\u3081\u3093\u306a\u3055\u3044
-#\u611f\u52d5\u8a5e
-#
-#####
-#  symbol: unclassified Symbols.
-\u8a18\u53f7
-#
-#  symbol-misc: A general symbol not in one of the categories below.
-#  e.g. [\u25cb\u25ce@$\u3012\u2192+]
-\u8a18\u53f7-\u4e00\u822c
-#
-#  symbol-comma: Commas
-#  e.g. [,\u3001]
-\u8a18\u53f7-\u8aad\u70b9
-#
-#  symbol-period: Periods and full stops.
-#  e.g. [.\uff0e\u3002]
-\u8a18\u53f7-\u53e5\u70b9
-#
-#  symbol-space: Full-width whitespace.
-\u8a18\u53f7-\u7a7a\u767d
-#
-#  symbol-open_bracket:
-#  e.g. [({\u2018\u201c\u300e\u3010]
-\u8a18\u53f7-\u62ec\u5f27\u958b
-#
-#  symbol-close_bracket:
-#  e.g. [)}\u2019\u201d\u300f\u300d\u3011]
-\u8a18\u53f7-\u62ec\u5f27\u9589
-#
-#  symbol-alphabetic:
-#\u8a18\u53f7-\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8
-#
-#####
-#  other: unclassified other
-#\u305d\u306e\u4ed6
-#
-#  other-interjection: Words that are hard to classify as noun-suffixes or 
-#  sentence-final particles.
-#  e.g. (\u3060)\u30a1
-\u305d\u306e\u4ed6-\u9593\u6295
-#
-#####
-#  filler: Aizuchi that occurs during a conversation or sounds inserted as filler.
-#  e.g. \u3042\u306e, \u3046\u3093\u3068, \u3048\u3068
-\u30d5\u30a3\u30e9\u30fc
-#
-#####
-#  non-verbal: non-verbal sound.
-\u975e\u8a00\u8a9e\u97f3
-#
-#####
-#  fragment:
-#\u8a9e\u65ad\u7247
-#
-#####
-#  unknown: unknown part of speech.
-#\u672a\u77e5\u8a9e
-#
-##### End of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ar.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ar.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ar.txt
deleted file mode 100644
index 046829d..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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 \u0623 and \u0627
-\u0645\u0646
-\u0648\u0645\u0646
-\u0645\u0646\u0647\u0627
-\u0645\u0646\u0647
-\u0641\u064a
-\u0648\u0641\u064a
-\u0641\u064a\u0647\u0627
-\u0641\u064a\u0647
-\u0648
-\u0641
-\u062b\u0645
-\u0627\u0648
-\u0623\u0648
-\u0628
-\u0628\u0647\u0627
-\u0628\u0647
-\u0627
-\u0623
-\u0627\u0649
-\u0627\u064a
-\u0623\u064a
-\u0623\u0649
-\u0644\u0627
-\u0648\u0644\u0627
-\u0627\u0644\u0627
-\u0623\u0644\u0627
-\u0625\u0644\u0627
-\u0644\u0643\u0646
-\u0645\u0627
-\u0648\u0645\u0627
-\u0643\u0645\u0627
-\u0641\u0645\u0627
-\u0639\u0646
-\u0645\u0639
-\u0627\u0630\u0627
-\u0625\u0630\u0627
-\u0627\u0646
-\u0623\u0646
-\u0625\u0646
-\u0627\u0646\u0647\u0627
-\u0623\u0646\u0647\u0627
-\u0625\u0646\u0647\u0627
-\u0627\u0646\u0647
-\u0623\u0646\u0647
-\u0625\u0646\u0647
-\u0628\u0627\u0646
-\u0628\u0623\u0646
-\u0641\u0627\u0646
-\u0641\u0623\u0646
-\u0648\u0627\u0646
-\u0648\u0623\u0646
-\u0648\u0625\u0646
-\u0627\u0644\u062a\u0649
-\u0627\u0644\u062a\u064a
-\u0627\u0644\u0630\u0649
-\u0627\u0644\u0630\u064a
-\u0627\u0644\u0630\u064a\u0646
-\u0627\u0644\u0649
-\u0627\u0644\u064a
-\u0625\u0644\u0649
-\u0625\u0644\u064a
-\u0639\u0644\u0649
-\u0639\u0644\u064a\u0647\u0627
-\u0639\u0644\u064a\u0647
-\u0627\u0645\u0627
-\u0623\u0645\u0627
-\u0625\u0645\u0627
-\u0627\u064a\u0636\u0627
-\u0623\u064a\u0636\u0627
-\u0643\u0644
-\u0648\u0643\u0644
-\u0644\u0645
-\u0648\u0644\u0645
-\u0644\u0646
-\u0648\u0644\u0646
-\u0647\u0649
-\u0647\u064a
-\u0647\u0648
-\u0648\u0647\u0649
-\u0648\u0647\u064a
-\u0648\u0647\u0648
-\u0641\u0647\u0649
-\u0641\u0647\u064a
-\u0641\u0647\u0648
-\u0627\u0646\u062a
-\u0623\u0646\u062a
-\u0644\u0643
-\u0644\u0647\u0627
-\u0644\u0647
-\u0647\u0630\u0647
-\u0647\u0630\u0627
-\u062a\u0644\u0643
-\u0630\u0644\u0643
-\u0647\u0646\u0627\u0643
-\u0643\u0627\u0646\u062a
-\u0643\u0627\u0646
-\u064a\u0643\u0648\u0646
-\u062a\u0643\u0648\u0646
-\u0648\u0643\u0627\u0646\u062a
-\u0648\u0643\u0627\u0646
-\u063a\u064a\u0631
-\u0628\u0639\u0636
-\u0642\u062f
-\u0646\u062d\u0648
-\u0628\u064a\u0646
-\u0628\u064a\u0646\u0645\u0627
-\u0645\u0646\u0630
-\u0636\u0645\u0646
-\u062d\u064a\u062b
-\u0627\u0644\u0627\u0646
-\u0627\u0644\u0622\u0646
-\u062e\u0644\u0627\u0644
-\u0628\u0639\u062f
-\u0642\u0628\u0644
-\u062d\u062a\u0649
-\u0639\u0646\u062f
-\u0639\u0646\u062f\u0645\u0627
-\u0644\u062f\u0649
-\u062c\u0645\u064a\u0639

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_bg.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_bg.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_bg.txt
deleted file mode 100644
index 1ae4ba2..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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
-\u0430
-\u0430\u0437
-\u0430\u043a\u043e
-\u0430\u043b\u0430
-\u0431\u0435
-\u0431\u0435\u0437
-\u0431\u0435\u0448\u0435
-\u0431\u0438
-\u0431\u0438\u043b
-\u0431\u0438\u043b\u0430
-\u0431\u0438\u043b\u0438
-\u0431\u0438\u043b\u043e
-\u0431\u043b\u0438\u0437\u043e
-\u0431\u044a\u0434\u0430\u0442
-\u0431\u044a\u0434\u0435
-\u0431\u044f\u0445\u0430
-\u0432
-\u0432\u0430\u0441
-\u0432\u0430\u0448
-\u0432\u0430\u0448\u0430
-\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e
-\u0432\u0435\u0447\u0435
-\u0432\u0437\u0435\u043c\u0430
-\u0432\u0438
-\u0432\u0438\u0435
-\u0432\u0438\u043d\u0430\u0433\u0438
-\u0432\u0441\u0435
-\u0432\u0441\u0435\u043a\u0438
-\u0432\u0441\u0438\u0447\u043a\u0438
-\u0432\u0441\u0438\u0447\u043a\u043e
-\u0432\u0441\u044f\u043a\u0430
-\u0432\u044a\u0432
-\u0432\u044a\u043f\u0440\u0435\u043a\u0438
-\u0432\u044a\u0440\u0445\u0443
-\u0433
-\u0433\u0438
-\u0433\u043b\u0430\u0432\u043d\u043e
-\u0433\u043e
-\u0434
-\u0434\u0430
-\u0434\u0430\u043b\u0438
-\u0434\u043e
-\u0434\u043e\u043a\u0430\u0442\u043e
-\u0434\u043e\u043a\u043e\u0433\u0430
-\u0434\u043e\u0440\u0438
-\u0434\u043e\u0441\u0435\u0433\u0430
-\u0434\u043e\u0441\u0442\u0430
-\u0435
-\u0435\u0434\u0432\u0430
-\u0435\u0434\u0438\u043d
-\u0435\u0442\u043e
-\u0437\u0430
-\u0437\u0430\u0434
-\u0437\u0430\u0435\u0434\u043d\u043e
-\u0437\u0430\u0440\u0430\u0434\u0438
-\u0437\u0430\u0441\u0435\u0433\u0430
-\u0437\u0430\u0442\u043e\u0432\u0430
-\u0437\u0430\u0449\u043e
-\u0437\u0430\u0449\u043e\u0442\u043e
-\u0438
-\u0438\u0437
-\u0438\u043b\u0438
-\u0438\u043c
-\u0438\u043c\u0430
-\u0438\u043c\u0430\u0442
-\u0438\u0441\u043a\u0430
-\u0439
-\u043a\u0430\u0437\u0430
-\u043a\u0430\u043a
-\u043a\u0430\u043a\u0432\u0430
-\u043a\u0430\u043a\u0432\u043e
-\u043a\u0430\u043a\u0442\u043e
-\u043a\u0430\u043a\u044a\u0432
-\u043a\u0430\u0442\u043e
-\u043a\u043e\u0433\u0430
-\u043a\u043e\u0433\u0430\u0442\u043e
-\u043a\u043e\u0435\u0442\u043e
-\u043a\u043e\u0438\u0442\u043e
-\u043a\u043e\u0439
-\u043a\u043e\u0439\u0442\u043e
-\u043a\u043e\u043b\u043a\u043e
-\u043a\u043e\u044f\u0442\u043e
-\u043a\u044a\u0434\u0435
-\u043a\u044a\u0434\u0435\u0442\u043e
-\u043a\u044a\u043c
-\u043b\u0438
-\u043c
-\u043c\u0435
-\u043c\u0435\u0436\u0434\u0443
-\u043c\u0435\u043d
-\u043c\u0438
-\u043c\u043d\u043e\u0437\u0438\u043d\u0430
-\u043c\u043e\u0433\u0430
-\u043c\u043e\u0433\u0430\u0442
-\u043c\u043e\u0436\u0435
-\u043c\u043e\u043b\u044f
-\u043c\u043e\u043c\u0435\u043d\u0442\u0430
-\u043c\u0443
-\u043d
-\u043d\u0430
-\u043d\u0430\u0434
-\u043d\u0430\u0437\u0430\u0434
-\u043d\u0430\u0439
-\u043d\u0430\u043f\u0440\u0430\u0432\u0438
-\u043d\u0430\u043f\u0440\u0435\u0434
-\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440
-\u043d\u0430\u0441
-\u043d\u0435
-\u043d\u0435\u0433\u043e
-\u043d\u0435\u044f
-\u043d\u0438
-\u043d\u0438\u0435
-\u043d\u0438\u043a\u043e\u0439
-\u043d\u0438\u0442\u043e
-\u043d\u043e
-\u043d\u044f\u043a\u043e\u0438
-\u043d\u044f\u043a\u043e\u0439
-\u043d\u044f\u043c\u0430
-\u043e\u0431\u0430\u0447\u0435
-\u043e\u043a\u043e\u043b\u043e
-\u043e\u0441\u0432\u0435\u043d
-\u043e\u0441\u043e\u0431\u0435\u043d\u043e
-\u043e\u0442
-\u043e\u0442\u0433\u043e\u0440\u0435
-\u043e\u0442\u043d\u043e\u0432\u043e
-\u043e\u0449\u0435
-\u043f\u0430\u043a
-\u043f\u043e
-\u043f\u043e\u0432\u0435\u0447\u0435
-\u043f\u043e\u0432\u0435\u0447\u0435\u0442\u043e
-\u043f\u043e\u0434
-\u043f\u043e\u043d\u0435
-\u043f\u043e\u0440\u0430\u0434\u0438
-\u043f\u043e\u0441\u043b\u0435
-\u043f\u043e\u0447\u0442\u0438
-\u043f\u0440\u0430\u0432\u0438
-\u043f\u0440\u0435\u0434
-\u043f\u0440\u0435\u0434\u0438
-\u043f\u0440\u0435\u0437
-\u043f\u0440\u0438
-\u043f\u044a\u043a
-\u043f\u044a\u0440\u0432\u043e
-\u0441
-\u0441\u0430
-\u0441\u0430\u043c\u043e
-\u0441\u0435
-\u0441\u0435\u0433\u0430
-\u0441\u0438
-\u0441\u043a\u043e\u0440\u043e
-\u0441\u043b\u0435\u0434
-\u0441\u043c\u0435
-\u0441\u043f\u043e\u0440\u0435\u0434
-\u0441\u0440\u0435\u0434
-\u0441\u0440\u0435\u0449\u0443
-\u0441\u0442\u0435
-\u0441\u044a\u043c
-\u0441\u044a\u0441
-\u0441\u044a\u0449\u043e
-\u0442
-\u0442\u0430\u0437\u0438
-\u0442\u0430\u043a\u0430
-\u0442\u0430\u043a\u0438\u0432\u0430
-\u0442\u0430\u043a\u044a\u0432
-\u0442\u0430\u043c
-\u0442\u0432\u043e\u0439
-\u0442\u0435
-\u0442\u0435\u0437\u0438
-\u0442\u0438
-\u0442\u043d
-\u0442\u043e
-\u0442\u043e\u0432\u0430
-\u0442\u043e\u0433\u0430\u0432\u0430
-\u0442\u043e\u0437\u0438
-\u0442\u043e\u0439
-\u0442\u043e\u043b\u043a\u043e\u0432\u0430
-\u0442\u043e\u0447\u043d\u043e
-\u0442\u0440\u044f\u0431\u0432\u0430
-\u0442\u0443\u043a
-\u0442\u044a\u0439
-\u0442\u044f
-\u0442\u044f\u0445
-\u0443
-\u0445\u0430\u0440\u0435\u0441\u0432\u0430
-\u0447
-\u0447\u0435
-\u0447\u0435\u0441\u0442\u043e
-\u0447\u0440\u0435\u0437
-\u0449\u0435
-\u0449\u043e\u043c
-\u044f

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ca.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ca.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ca.txt
deleted file mode 100644
index 3da65de..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_cz.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_cz.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_cz.txt
deleted file mode 100644
index 53c6097..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_cz.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-a
-s
-k
-o
-i
-u
-v
-z
-dnes
-cz
-t�mto
-bude\u0161
-budem
-byli
-jse\u0161
-m\u016fj
-sv�m
-ta
-tomto
-tohle
-tuto
-tyto
-jej
-zda
-pro\u010d
-m�te
-tato
-kam
-tohoto
-kdo
-kte\u0159�
-mi
-n�m
-tom
-tomuto
-m�t
-nic
-proto
-kterou
-byla
-toho
-proto\u017ee
-asi
-ho
-na\u0161i
-napi\u0161te
-re
-co\u017e
-t�m
-tak\u017ee
-sv�ch
-jej�
-sv�mi
-jste
-aj
-tu
-tedy
-teto
-bylo
-kde
-ke
-prav�
-ji
-nad
-nejsou
-\u010di
-pod
-t�ma
-mezi
-p\u0159es
-ty
-pak
-v�m
-ani
-kdy\u017e
-v\u0161ak
-neg
-jsem
-tento
-\u010dl�nku
-\u010dl�nky
-aby
-jsme
-p\u0159ed
-pta
-jejich
-byl
-je\u0161t\u011b
-a\u017e
-bez
-tak�
-pouze
-prvn�
-va\u0161e
-kter�
-n�s
-nov�
-tipy
-pokud
-m\u016f\u017ee
-strana
-jeho
-sv�
-jin�
-zpr�vy
-nov�
-nen�
-v�s
-jen
-podle
-zde
-u\u017e
-b�t
-v�ce
-bude
-ji\u017e
-ne\u017e
-kter�
-by
-kter�
-co
-nebo
-ten
-tak
-m�
-p\u0159i
-od
-po
-jsou
-jak
-dal\u0161�
-ale
-si
-se
-ve
-to
-jako
-za
-zp\u011bt
-ze
-do
-pro
-je
-na
-atd
-atp
-jakmile
-p\u0159i\u010dem\u017e
-j�
-on
-ona
-ono
-oni
-ony
-my
-vy
-j�
-ji
-m\u011b
-mne
-jemu
-tomu
-t\u011bm
-t\u011bmu
-n\u011bmu
-n\u011bmu\u017e
-jeho\u017e
-j�\u017e
-jeliko\u017e
-je\u017e
-jako\u017e
-na\u010de\u017e

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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_el.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_el.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_el.txt
deleted file mode 100644
index 232681f..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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 '\u03c3' instead of '\u03c2' 
-\u03bf
-\u03b7
-\u03c4\u03bf
-\u03bf\u03b9
-\u03c4\u03b1
-\u03c4\u03bf\u03c5
-\u03c4\u03b7\u03c3
-\u03c4\u03c9\u03bd
-\u03c4\u03bf\u03bd
-\u03c4\u03b7\u03bd
-\u03ba\u03b1\u03b9 
-\u03ba\u03b9
-\u03ba
-\u03b5\u03b9\u03bc\u03b1\u03b9
-\u03b5\u03b9\u03c3\u03b1\u03b9
-\u03b5\u03b9\u03bd\u03b1\u03b9
-\u03b5\u03b9\u03bc\u03b1\u03c3\u03c4\u03b5
-\u03b5\u03b9\u03c3\u03c4\u03b5
-\u03c3\u03c4\u03bf
-\u03c3\u03c4\u03bf\u03bd
-\u03c3\u03c4\u03b7
-\u03c3\u03c4\u03b7\u03bd
-\u03bc\u03b1
-\u03b1\u03bb\u03bb\u03b1
-\u03b1\u03c0\u03bf
-\u03b3\u03b9\u03b1
-\u03c0\u03c1\u03bf\u03c3
-\u03bc\u03b5
-\u03c3\u03b5
-\u03c9\u03c3
-\u03c0\u03b1\u03c1\u03b1
-\u03b1\u03bd\u03c4\u03b9
-\u03ba\u03b1\u03c4\u03b1
-\u03bc\u03b5\u03c4\u03b1
-\u03b8\u03b1
-\u03bd\u03b1
-\u03b4\u03b5
-\u03b4\u03b5\u03bd
-\u03bc\u03b7
-\u03bc\u03b7\u03bd
-\u03b5\u03c0\u03b9
-\u03b5\u03bd\u03c9
-\u03b5\u03b1\u03bd
-\u03b1\u03bd
-\u03c4\u03bf\u03c4\u03b5
-\u03c0\u03bf\u03c5
-\u03c0\u03c9\u03c3
-\u03c0\u03bf\u03b9\u03bf\u03c3
-\u03c0\u03bf\u03b9\u03b1
-\u03c0\u03bf\u03b9\u03bf
-\u03c0\u03bf\u03b9\u03bf\u03b9
-\u03c0\u03bf\u03b9\u03b5\u03c3
-\u03c0\u03bf\u03b9\u03c9\u03bd
-\u03c0\u03bf\u03b9\u03bf\u03c5\u03c3
-\u03b1\u03c5\u03c4\u03bf\u03c3
-\u03b1\u03c5\u03c4\u03b7
-\u03b1\u03c5\u03c4\u03bf
-\u03b1\u03c5\u03c4\u03bf\u03b9
-\u03b1\u03c5\u03c4\u03c9\u03bd
-\u03b1\u03c5\u03c4\u03bf\u03c5\u03c3
-\u03b1\u03c5\u03c4\u03b5\u03c3
-\u03b1\u03c5\u03c4\u03b1
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03c3
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b7
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03b9
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b5\u03c3
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b1
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03c9\u03bd
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03c5\u03c3
-\u03bf\u03c0\u03c9\u03c3
-\u03bf\u03bc\u03c9\u03c3
-\u03b9\u03c3\u03c9\u03c3
-\u03bf\u03c3\u03bf
-\u03bf\u03c4\u03b9

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_en.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_en.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_en.txt
deleted file mode 100644
index 2c164c0..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_eu.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_eu.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_eu.txt
deleted file mode 100644
index 25f1db9..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_fa.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_fa.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_fa.txt
deleted file mode 100644
index 723641c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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 '\u064a' instead of '\u06cc'
-\u0627\u0646\u0627\u0646
-\u0646\u062f\u0627\u0634\u062a\u0647
-\u0633\u0631\u0627\u0633\u0631
-\u062e\u064a\u0627\u0647
-\u0627\u064a\u0634\u0627\u0646
-\u0648\u064a
-\u062a\u0627\u0643\u0646\u0648\u0646
-\u0628\u064a\u0634\u062a\u0631\u064a
-\u062f\u0648\u0645
-\u067e\u0633
-\u0646\u0627\u0634\u064a
-\u0648\u06af\u0648
-\u064a\u0627
-\u062f\u0627\u0634\u062a\u0646\u062f
-\u0633\u067e\u0633
-\u0647\u0646\u06af\u0627\u0645
-\u0647\u0631\u06af\u0632
-\u067e\u0646\u062c
-\u0646\u0634\u0627\u0646
-\u0627\u0645\u0633\u0627\u0644
-\u062f\u064a\u06af\u0631
-\u06af\u0631\u0648\u0647\u064a
-\u0634\u062f\u0646\u062f
-\u0686\u0637\u0648\u0631
-\u062f\u0647
-\u0648
-\u062f\u0648
-\u0646\u062e\u0633\u062a\u064a\u0646
-\u0648\u0644\u064a
-\u0686\u0631\u0627
-\u0686\u0647
-\u0648\u0633\u0637
-\u0647
-\u0643\u062f\u0627\u0645
-\u0642\u0627\u0628\u0644
-\u064a\u0643
-\u0631\u0641\u062a
-\u0647\u0641\u062a
-\u0647\u0645\u0686\u0646\u064a\u0646
-\u062f\u0631
-\u0647\u0632\u0627\u0631
-\u0628\u0644\u0647
-\u0628\u0644\u064a
-\u0634\u0627\u064a\u062f
-\u0627\u0645\u0627
-\u0634\u0646\u0627\u0633\u064a
-\u06af\u0631\u0641\u062a\u0647
-\u062f\u0647\u062f
-\u062f\u0627\u0634\u062a\u0647
-\u062f\u0627\u0646\u0633\u062a
-\u062f\u0627\u0634\u062a\u0646
-\u062e\u0648\u0627\u0647\u064a\u0645
-\u0645\u064a\u0644\u064a\u0627\u0631\u062f
-\u0648\u0642\u062a\u064a\u0643\u0647
-\u0627\u0645\u062f
-\u062e\u0648\u0627\u0647\u062f
-\u062c\u0632
-\u0627\u0648\u0631\u062f\u0647
-\u0634\u062f\u0647
-\u0628\u0644\u0643\u0647
-\u062e\u062f\u0645\u0627\u062a
-\u0634\u062f\u0646
-\u0628\u0631\u062e\u064a
-\u0646\u0628\u0648\u062f
-\u0628\u0633\u064a\u0627\u0631\u064a
-\u062c\u0644\u0648\u06af\u064a\u0631\u064a
-\u062d\u0642
-\u0643\u0631\u062f\u0646\u062f
-\u0646\u0648\u0639\u064a
-\u0628\u0639\u0631\u064a
-\u0646\u0643\u0631\u062f\u0647
-\u0646\u0638\u064a\u0631
-\u0646\u0628\u0627\u064a\u062f
-\u0628\u0648\u062f\u0647
-\u0628\u0648\u062f\u0646
-\u062f\u0627\u062f
-\u0627\u0648\u0631\u062f
-\u0647\u0633\u062a
-\u062c\u0627\u064a\u064a
-\u0634\u0648\u062f
-\u062f\u0646\u0628\u0627\u0644
-\u062f\u0627\u062f\u0647
-\u0628\u0627\u064a\u062f
-\u0633\u0627\u0628\u0642
-\u0647\u064a\u0686
-\u0647\u0645\u0627\u0646
-\u0627\u0646\u062c\u0627
-\u0643\u0645\u062a\u0631
-\u0643\u062c\u0627\u0633\u062a
-\u06af\u0631\u062f\u062f
-\u0643\u0633\u064a
-\u062a\u0631
-\u0645\u0631\u062f\u0645
-\u062a\u0627\u0646
-\u062f\u0627\u062f\u0646
-\u0628\u0648\u062f\u0646\u062f
-\u0633\u0631\u064a
-\u062c\u062f\u0627
-\u0646\u062f\u0627\u0631\u0646\u062f
-\u0645\u06af\u0631
-\u064a\u0643\u062f\u064a\u06af\u0631
-\u062f\u0627\u0631\u062f
-\u062f\u0647\u0646\u062f
-\u0628\u0646\u0627\u0628\u0631\u0627\u064a\u0646
-\u0647\u0646\u06af\u0627\u0645\u064a
-\u0633\u0645\u062a
-\u062c\u0627
-\u0627\u0646\u0686\u0647
-\u062e\u0648\u062f
-\u062f\u0627\u062f\u0646\u062f
-\u0632\u064a\u0627\u062f
-\u062f\u0627\u0631\u0646\u062f
-\u0627\u062b\u0631
-\u0628\u062f\u0648\u0646
-\u0628\u0647\u062a\u0631\u064a\u0646
-\u0628\u064a\u0634\u062a\u0631
-\u0627\u0644\u0628\u062a\u0647
-\u0628\u0647
-\u0628\u0631\u0627\u0633\u0627\u0633
-\u0628\u064a\u0631\u0648\u0646
-\u0643\u0631\u062f
-\u0628\u0639\u0636\u064a
-\u06af\u0631\u0641\u062a
-\u062a\u0648\u064a
-\u0627\u064a
-\u0645\u064a\u0644\u064a\u0648\u0646
-\u0627\u0648
-\u062c\u0631\u064a\u0627\u0646
-\u062a\u0648\u0644
-\u0628\u0631
-\u0645\u0627\u0646\u0646\u062f
-\u0628\u0631\u0627\u0628\u0631
-\u0628\u0627\u0634\u064a\u0645
-\u0645\u062f\u062a\u064a
-\u06af\u0648\u064a\u0646\u062f
-\u0627\u0643\u0646\u0648\u0646
-\u062a\u0627
-\u062a\u0646\u0647\u0627
-\u062c\u062f\u064a\u062f
-\u0686\u0646\u062f
-\u0628\u064a
-\u0646\u0634\u062f\u0647
-\u0643\u0631\u062f\u0646
-\u0643\u0631\u062f\u0645
-\u06af\u0648\u064a\u062f
-\u0643\u0631\u062f\u0647
-\u0643\u0646\u064a\u0645
-\u0646\u0645\u064a
-\u0646\u0632\u062f
-\u0631\u0648\u064a
-\u0642\u0635\u062f
-\u0641\u0642\u0637
-\u0628\u0627\u0644\u0627\u064a
-\u062f\u064a\u06af\u0631\u0627\u0646
-\u0627\u064a\u0646
-\u062f\u064a\u0631\u0648\u0632
-\u062a\u0648\u0633\u0637
-\u0633\u0648\u0645
-\u0627\u064a\u0645
-\u062f\u0627\u0646\u0646\u062f
-\u0633\u0648\u064a
-\u0627\u0633\u062a\u0641\u0627\u062f\u0647
-\u0634\u0645\u0627
-\u0643\u0646\u0627\u0631
-\u062f\u0627\u0631\u064a\u0645
-\u0633\u0627\u062e\u062a\u0647
-\u0637\u0648\u0631
-\u0627\u0645\u062f\u0647
-\u0631\u0641\u062a\u0647
-\u0646\u062e\u0633\u062a
-\u0628\u064a\u0633\u062a
-\u0646\u0632\u062f\u064a\u0643
-\u0637\u064a
-\u0643\u0646\u064a\u062f
-\u0627\u0632
-\u0627\u0646\u0647\u0627
-\u062a\u0645\u0627\u0645\u064a
-\u062f\u0627\u0634\u062a
-\u064a\u0643\u064a
-\u0637\u0631\u064a\u0642
-\u0627\u0634
-\u0686\u064a\u0633\u062a
-\u0631\u0648\u0628
-\u0646\u0645\u0627\u064a\u062f
-\u06af\u0641\u062a
-\u0686\u0646\u062f\u064a\u0646
-\u0686\u064a\u0632\u064a
-\u062a\u0648\u0627\u0646\u062f
-\u0627\u0645
-\u0627\u064a\u0627
-\u0628\u0627
-\u0627\u0646
-\u0627\u064a\u062f
-\u062a\u0631\u064a\u0646
-\u0627\u064a\u0646\u0643\u0647
-\u062f\u064a\u06af\u0631\u064a
-\u0631\u0627\u0647
-\u0647\u0627\u064a\u064a
-\u0628\u0631\u0648\u0632
-\u0647\u0645\u0686\u0646\u0627\u0646
-\u067e\u0627\u0639\u064a\u0646
-\u0643\u0633
-\u062d\u062f\u0648\u062f
-\u0645\u062e\u062a\u0644\u0641
-\u0645\u0642\u0627\u0628\u0644
-\u0686\u064a\u0632
-\u06af\u064a\u0631\u062f
-\u0646\u062f\u0627\u0631\u062f
-\u0636\u062f
-\u0647\u0645\u0686\u0648\u0646
-\u0633\u0627\u0632\u064a
-\u0634\u0627\u0646
-\u0645\u0648\u0631\u062f
-\u0628\u0627\u0631\u0647
-\u0645\u0631\u0633\u064a
-\u062e\u0648\u064a\u0634
-\u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631
-\u0686\u0648\u0646
-\u062e\u0627\u0631\u062c
-\u0634\u0634
-\u0647\u0646\u0648\u0632
-\u062a\u062d\u062a
-\u0636\u0645\u0646
-\u0647\u0633\u062a\u064a\u0645
-\u06af\u0641\u062a\u0647
-\u0641\u0643\u0631
-\u0628\u0633\u064a\u0627\u0631
-\u067e\u064a\u0634
-\u0628\u0631\u0627\u064a
-\u0631\u0648\u0632\u0647\u0627\u064a
-\u0627\u0646\u0643\u0647
-\u0646\u062e\u0648\u0627\u0647\u062f
-\u0628\u0627\u0644\u0627
-\u0643\u0644
-\u0648\u0642\u062a\u064a
-\u0643\u064a
-\u0686\u0646\u064a\u0646
-\u0643\u0647
-\u06af\u064a\u0631\u064a
-\u0646\u064a\u0633\u062a
-\u0627\u0633\u062a
-\u0643\u062c\u0627
-\u0643\u0646\u062f
-\u0646\u064a\u0632
-\u064a\u0627\u0628\u062f
-\u0628\u0646\u062f\u064a
-\u062d\u062a\u064a
-\u062a\u0648\u0627\u0646\u0646\u062f
-\u0639\u0642\u0628
-\u062e\u0648\u0627\u0633\u062a
-\u0643\u0646\u0646\u062f
-\u0628\u064a\u0646
-\u062a\u0645\u0627\u0645
-\u0647\u0645\u0647
-\u0645\u0627
-\u0628\u0627\u0634\u0646\u062f
-\u0645\u062b\u0644
-\u0634\u062f
-\u0627\u0631\u064a
-\u0628\u0627\u0634\u062f
-\u0627\u0631\u0647
-\u0637\u0628\u0642
-\u0628\u0639\u062f
-\u0627\u06af\u0631
-\u0635\u0648\u0631\u062a
-\u063a\u064a\u0631
-\u062c\u0627\u064a
-\u0628\u064a\u0634
-\u0631\u064a\u0632\u064a
-\u0627\u0646\u062f
-\u0632\u064a\u0631\u0627
-\u0686\u06af\u0648\u0646\u0647
-\u0628\u0627\u0631
-\u0644\u0637\u0641\u0627
-\u0645\u064a
-\u062f\u0631\u0628\u0627\u0631\u0647
-\u0645\u0646
-\u062f\u064a\u062f\u0647
-\u0647\u0645\u064a\u0646
-\u06af\u0630\u0627\u0631\u064a
-\u0628\u0631\u062f\u0627\u0631\u064a
-\u0639\u0644\u062a
-\u06af\u0630\u0627\u0634\u062a\u0647
-\u0647\u0645
-\u0641\u0648\u0642
-\u0646\u0647
-\u0647\u0627
-\u0634\u0648\u0646\u062f
-\u0627\u0628\u0627\u062f
-\u0647\u0645\u0648\u0627\u0631\u0647
-\u0647\u0631
-\u0627\u0648\u0644
-\u062e\u0648\u0627\u0647\u0646\u062f
-\u0686\u0647\u0627\u0631
-\u0646\u0627\u0645
-\u0627\u0645\u0631\u0648\u0632
-\u0645\u0627\u0646
-\u0647\u0627\u064a
-\u0642\u0628\u0644
-\u0643\u0646\u0645
-\u0633\u0639\u064a
-\u062a\u0627\u0632\u0647
-\u0631\u0627
-\u0647\u0633\u062a\u0646\u062f
-\u0632\u064a\u0631
-\u062c\u0644\u0648\u064a
-\u0639\u0646\u0648\u0627\u0646
-\u0628\u0648\u062f

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_fr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_fr.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_fr.txt
deleted file mode 100644
index c00837ea..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_fr.txt
+++ /dev/null
@@ -1,183 +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.
-
- | 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
-cel�          |  that
-cet            |  this
-cette          |  this
-ici            |  here
-ils            |  they
-les            |  the (pl)
-leurs          |  their (pl)
-quel           |  which
-quels          |  which
-quelle         |  which
-quelles        |  which
-sans           |  without
-soi            |  oneself
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ga.txt
deleted file mode 100644
index 9ff88d7..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_gl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_gl.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_gl.txt
deleted file mode 100644
index d8760b1..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hi.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hi.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hi.txt
deleted file mode 100644
index 86286bb..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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. 
-\u0905\u0902\u0926\u0930
-\u0905\u0924
-\u0905\u092a\u0928\u093e
-\u0905\u092a\u0928\u0940
-\u0905\u092a\u0928\u0947
-\u0905\u092d\u0940
-\u0906\u0926\u093f
-\u0906\u092a
-\u0907\u0924\u094d\u092f\u093e\u0926\u093f
-\u0907\u0928 
-\u0907\u0928\u0915\u093e
-\u0907\u0928\u094d\u0939\u0940\u0902
-\u0907\u0928\u094d\u0939\u0947\u0902
-\u0907\u0928\u094d\u0939\u094b\u0902
-\u0907\u0938
-\u0907\u0938\u0915\u093e
-\u0907\u0938\u0915\u0940
-\u0907\u0938\u0915\u0947
-\u0907\u0938\u092e\u0947\u0902
-\u0907\u0938\u0940
-\u0907\u0938\u0947
-\u0909\u0928
-\u0909\u0928\u0915\u093e
-\u0909\u0928\u0915\u0940
-\u0909\u0928\u0915\u0947
-\u0909\u0928\u0915\u094b
-\u0909\u0928\u094d\u0939\u0940\u0902
-\u0909\u0928\u094d\u0939\u0947\u0902
-\u0909\u0928\u094d\u0939\u094b\u0902
-\u0909\u0938
-\u0909\u0938\u0915\u0947
-\u0909\u0938\u0940
-\u0909\u0938\u0947
-\u090f\u0915
-\u090f\u0935\u0902
-\u090f\u0938
-\u0910\u0938\u0947
-\u0914\u0930
-\u0915\u0908
-\u0915\u0930
-\u0915\u0930\u0924\u093e
-\u0915\u0930\u0924\u0947
-\u0915\u0930\u0928\u093e
-\u0915\u0930\u0928\u0947
-\u0915\u0930\u0947\u0902
-\u0915\u0939\u0924\u0947
-\u0915\u0939\u093e
-\u0915\u093e
-\u0915\u093e\u095e\u0940
-\u0915\u093f
-\u0915\u093f\u0924\u0928\u093e
-\u0915\u093f\u0928\u094d\u0939\u0947\u0902
-\u0915\u093f\u0928\u094d\u0939\u094b\u0902
-\u0915\u093f\u092f\u093e
-\u0915\u093f\u0930
-\u0915\u093f\u0938
-\u0915\u093f\u0938\u0940
-\u0915\u093f\u0938\u0947
-\u0915\u0940
-\u0915\u0941\u091b
-\u0915\u0941\u0932
-\u0915\u0947
-\u0915\u094b
-\u0915\u094b\u0908
-\u0915\u094c\u0928
-\u0915\u094c\u0928\u0938\u093e
-\u0917\u092f\u093e
-\u0918\u0930
-\u091c\u092c
-\u091c\u0939\u093e\u0901
-\u091c\u093e
-\u091c\u093f\u0924\u0928\u093e
-\u091c\u093f\u0928
-\u091c\u093f\u0928\u094d\u0939\u0947\u0902
-\u091c\u093f\u0928\u094d\u0939\u094b\u0902
-\u091c\u093f\u0938
-\u091c\u093f\u0938\u0947
-\u091c\u0940\u0927\u0930
-\u091c\u0948\u0938\u093e
-\u091c\u0948\u0938\u0947
-\u091c\u094b
-\u0924\u0915
-\u0924\u092c
-\u0924\u0930\u0939
-\u0924\u093f\u0928
-\u0924\u093f\u0928\u094d\u0939\u0947\u0902
-\u0924\u093f\u0928\u094d\u0939\u094b\u0902
-\u0924\u093f\u0938
-\u0924\u093f\u0938\u0947
-\u0924\u094b
-\u0925\u093e
-\u0925\u0940
-\u0925\u0947
-\u0926\u092c\u093e\u0930\u093e
-\u0926\u093f\u092f\u093e
-\u0926\u0941\u0938\u0930\u093e
-\u0926\u0942\u0938\u0930\u0947
-\u0926\u094b
-\u0926\u094d\u0935\u093e\u0930\u093e
-\u0928
-\u0928\u0939\u0940\u0902
-\u0928\u093e
-\u0928\u093f\u0939\u093e\u092f\u0924
-\u0928\u0940\u091a\u0947
-\u0928\u0947
-\u092a\u0930
-\u092a\u0930  
-\u092a\u0939\u0932\u0947
-\u092a\u0942\u0930\u093e
-\u092a\u0947
-\u092b\u093f\u0930
-\u092c\u0928\u0940
-\u092c\u0939\u0940
-\u092c\u0939\u0941\u0924
-\u092c\u093e\u0926
-\u092c\u093e\u0932\u093e
-\u092c\u093f\u0932\u0915\u0941\u0932
-\u092d\u0940
-\u092d\u0940\u0924\u0930
-\u092e\u0917\u0930
-\u092e\u093e\u0928\u094b
-\u092e\u0947
-\u092e\u0947\u0902
-\u092f\u0926\u093f
-\u092f\u0939
-\u092f\u0939\u093e\u0901
-\u092f\u0939\u0940
-\u092f\u093e
-\u092f\u093f\u0939 
-\u092f\u0947
-\u0930\u0916\u0947\u0902
-\u0930\u0939\u093e
-\u0930\u0939\u0947
-\u0931\u094d\u0935\u093e\u0938\u093e
-\u0932\u093f\u090f
-\u0932\u093f\u092f\u0947
-\u0932\u0947\u0915\u093f\u0928
-\u0935
-\u0935\u0930\u094d\u0917
-\u0935\u0939
-\u0935\u0939 
-\u0935\u0939\u093e\u0901
-\u0935\u0939\u0940\u0902
-\u0935\u093e\u0932\u0947
-\u0935\u0941\u0939 
-\u0935\u0947
-\u0935\u095a\u0948\u0930\u0939
-\u0938\u0902\u0917
-\u0938\u0915\u0924\u093e
-\u0938\u0915\u0924\u0947
-\u0938\u092c\u0938\u0947
-\u0938\u092d\u0940
-\u0938\u093e\u0925
-\u0938\u093e\u092c\u0941\u0924
-\u0938\u093e\u092d
-\u0938\u093e\u0930\u093e
-\u0938\u0947
-\u0938\u094b
-\u0939\u0940
-\u0939\u0941\u0906
-\u0939\u0941\u0908
-\u0939\u0941\u090f
-\u0939\u0948
-\u0939\u0948\u0902
-\u0939\u094b
-\u0939\u094b\u0924\u093e
-\u0939\u094b\u0924\u0940
-\u0939\u094b\u0924\u0947
-\u0939\u094b\u0928\u093e
-\u0939\u094b\u0928\u0947
-# additional normalized forms of the above
-\u0905\u092a\u0928\u093f
-\u091c\u0947\u0938\u0947
-\u0939\u094b\u0924\u093f
-\u0938\u092d\u093f
-\u0924\u093f\u0902\u0939\u094b\u0902
-\u0907\u0902\u0939\u094b\u0902
-\u0926\u0935\u093e\u0930\u093e
-\u0907\u0938\u093f
-\u0915\u093f\u0902\u0939\u0947\u0902
-\u0925\u093f
-\u0909\u0902\u0939\u094b\u0902
-\u0913\u0930
-\u091c\u093f\u0902\u0939\u0947\u0902
-\u0935\u0939\u093f\u0902
-\u0905\u092d\u093f
-\u092c\u0928\u093f
-\u0939\u093f
-\u0909\u0902\u0939\u093f\u0902
-\u0909\u0902\u0939\u0947\u0902
-\u0939\u0947\u0902
-\u0935\u0917\u0947\u0930\u0939
-\u090f\u0938\u0947
-\u0930\u0935\u093e\u0938\u093e
-\u0915\u094b\u0928
-\u0928\u093f\u091a\u0947
-\u0915\u093e\u092b\u093f
-\u0909\u0938\u093f
-\u092a\u0941\u0930\u093e
-\u092d\u093f\u0924\u0930
-\u0939\u0947
-\u092c\u0939\u093f
-\u0935\u0939\u093e\u0902
-\u0915\u094b\u0907
-\u092f\u0939\u093e\u0902
-\u091c\u093f\u0902\u0939\u094b\u0902
-\u0924\u093f\u0902\u0939\u0947\u0902
-\u0915\u093f\u0938\u093f
-\u0915\u0907
-\u092f\u0939\u093f
-\u0907\u0902\u0939\u093f\u0902
-\u091c\u093f\u0927\u0930
-\u0907\u0902\u0939\u0947\u0902
-\u0905\u0926\u093f
-\u0907\u0924\u092f\u093e\u0926\u093f
-\u0939\u0941\u0907
-\u0915\u094b\u0928\u0938\u093e
-\u0907\u0938\u0915\u093f
-\u0926\u0941\u0938\u0930\u0947
-\u091c\u0939\u093e\u0902
-\u0905\u092a
-\u0915\u093f\u0902\u0939\u094b\u0902
-\u0909\u0928\u0915\u093f
-\u092d\u093f
-\u0935\u0930\u0917
-\u0939\u0941\u0905
-\u091c\u0947\u0938\u093e
-\u0928\u0939\u093f\u0902

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hu.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hu.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hu.txt
deleted file mode 100644
index 1a96f1d..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hu.txt
+++ /dev/null
@@ -1,209 +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.
- 
-| 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\u0151
-el\u0151sz�r
-el\u0151tt
-els\u0151
-�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
-\u0151
-\u0151k
-\u0151ket
-pedig
-persze
-r�
-s
-saj�t
-sem
-semmi
-sok
-sokat
-sokkal
-sz�m�ra
-szemben
-szerint
-szinte
-tal�n
-teh�t
-teljes
-tov�bb
-tov�bb�
-t�bb
-�gy
-ugyanis
-�j
-�jabb
-�jra
-ut�n
-ut�na
-utols�
-vagy
-vagyis
-valaki
-valami
-valamint
-val�
-vagyok
-van
-vannak
-volt
-voltam
-voltak
-voltunk
-vissza
-vele
-viszont
-volna

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hy.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hy.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hy.txt
deleted file mode 100644
index 60c1c50..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_hy.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-# example set of Armenian stopwords.
-\u0561\u0575\u0564
-\u0561\u0575\u056c
-\u0561\u0575\u0576
-\u0561\u0575\u057d
-\u0564\u0578\u0582
-\u0564\u0578\u0582\u0584
-\u0565\u0574
-\u0565\u0576
-\u0565\u0576\u0584
-\u0565\u057d
-\u0565\u0584
-\u0567
-\u0567\u056b
-\u0567\u056b\u0576
-\u0567\u056b\u0576\u0584
-\u0567\u056b\u0580
-\u0567\u056b\u0584
-\u0567\u0580
-\u0568\u057d\u057f
-\u0569
-\u056b
-\u056b\u0576
-\u056b\u057d\u056f
-\u056b\u0580
-\u056f\u0561\u0574
-\u0570\u0561\u0574\u0561\u0580
-\u0570\u0565\u057f
-\u0570\u0565\u057f\u0578
-\u0574\u0565\u0576\u0584
-\u0574\u0565\u057b
-\u0574\u056b
-\u0576
-\u0576\u0561
-\u0576\u0561\u0587
-\u0576\u0580\u0561
-\u0576\u0580\u0561\u0576\u0584
-\u0578\u0580
-\u0578\u0580\u0568
-\u0578\u0580\u0578\u0576\u0584
-\u0578\u0580\u057a\u0565\u057d
-\u0578\u0582
-\u0578\u0582\u0574
-\u057a\u056b\u057f\u056b
-\u057e\u0580\u0561
-\u0587

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_id.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_id.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_id.txt
deleted file mode 100644
index 4617f83..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ja.txt
deleted file mode 100644
index d4321be..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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.
-#
-\u306e
-\u306b
-\u306f
-\u3092
-\u305f
-\u304c
-\u3067
-\u3066
-\u3068
-\u3057
-\u308c
-\u3055
-\u3042\u308b
-\u3044\u308b
-\u3082
-\u3059\u308b
-\u304b\u3089
-\u306a
-\u3053\u3068
-\u3068\u3057\u3066
-\u3044
-\u3084
-\u308c\u308b
-\u306a\u3069
-\u306a\u3063
-\u306a\u3044
-\u3053\u306e
-\u305f\u3081
-\u305d\u306e
-\u3042\u3063
-\u3088\u3046
-\u307e\u305f
-\u3082\u306e
-\u3068\u3044\u3046
-\u3042\u308a
-\u307e\u3067
-\u3089\u308c
-\u306a\u308b
-\u3078
-\u304b
-\u3060
-\u3053\u308c
-\u306b\u3088\u3063\u3066
-\u306b\u3088\u308a
-\u304a\u308a
-\u3088\u308a
-\u306b\u3088\u308b
-\u305a
-\u306a\u308a
-\u3089\u308c\u308b
-\u306b\u304a\u3044\u3066
-\u3070
-\u306a\u304b\u3063
-\u306a\u304f
-\u3057\u304b\u3057
-\u306b\u3064\u3044\u3066
-\u305b
-\u3060\u3063
-\u305d\u306e\u5f8c
-\u3067\u304d\u308b
-\u305d\u308c
-\u3046
-\u306e\u3067
-\u306a\u304a
-\u306e\u307f
-\u3067\u304d
-\u304d
-\u3064
-\u306b\u304a\u3051\u308b
-\u304a\u3088\u3073
-\u3044\u3046
-\u3055\u3089\u306b
-\u3067\u3082
-\u3089
-\u305f\u308a
-\u305d\u306e\u4ed6
-\u306b\u95a2\u3059\u308b
-\u305f\u3061
-\u307e\u3059
-\u3093
-\u306a\u3089
-\u306b\u5bfe\u3057\u3066
-\u7279\u306b
-\u305b\u308b
-\u53ca\u3073
-\u3053\u308c\u3089
-\u3068\u304d
-\u3067\u306f
-\u306b\u3066
-\u307b\u304b
-\u306a\u304c\u3089
-\u3046\u3061
-\u305d\u3057\u3066
-\u3068\u3068\u3082\u306b
-\u305f\u3060\u3057
-\u304b\u3064\u3066
-\u305d\u308c\u305e\u308c
-\u307e\u305f\u306f
-\u304a
-\u307b\u3069
-\u3082\u306e\u306e
-\u306b\u5bfe\u3059\u308b
-\u307b\u3068\u3093\u3069
-\u3068\u5171\u306b
-\u3068\u3044\u3063\u305f
-\u3067\u3059
-\u3068\u3082
-\u3068\u3053\u308d
-\u3053\u3053
-##### End of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_lv.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_lv.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_lv.txt
deleted file mode 100644
index e21a23c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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\u0161
-\u0101rpus
-aug\u0161pus
-bez
-caur
-d\u0113\u013c
-gar
-iek\u0161
-iz
-kop\u0161
-labad
-lejpus
-l\u012bdz
-no
-otrpus
-pa
-par
-p\u0101r
-p\u0113c
-pie
-pirms
-pret
-priek\u0161
-starp
-\u0161aipus
-uz
-vi\u0146pus
-virs
-virspus
-zem
-apak\u0161pus
-# Conjunctions
-un
-bet
-jo
-ja
-ka
-lai
-tom\u0113r
-tikko
-turpret\u012b
-ar\u012b
-kaut
-gan
-t\u0101d\u0113\u013c
-t\u0101
-ne
-tikvien
-vien
-k\u0101
-ir
-te
-vai
-kam\u0113r
-# Particles
-ar
-diezin
-dro\u0161i
-diem\u017e\u0113l
-neb\u016bt
-ik
-it
-ta\u010du
-nu
-pat
-tiklab
-iek\u0161pus
-nedz
-tik
-nevis
-turpretim
-jeb
-iekam
-iek\u0101m
-iek\u0101ms
-kol\u012bdz
-l\u012bdzko
-tikl\u012bdz
-jeb\u0161u
-t\u0101lab
-t\u0101p\u0113c
-nek\u0101
-itin
-j\u0101
-jau
-jel
-n\u0113
-nezin
-tad
-tikai
-vis
-tak
-iekams
-vien
-# modal verbs
-b\u016bt  
-biju 
-biji
-bija
-bij\u0101m
-bij\u0101t
-esmu
-esi
-esam
-esat 
-b\u016b\u0161u     
-b\u016bsi
-b\u016bs
-b\u016bsim
-b\u016bsiet
-tikt
-tiku
-tiki
-tika
-tik\u0101m
-tik\u0101t
-tieku
-tiec
-tiek
-tiekam
-tiekat
-tik\u0161u
-tiks
-tiksim
-tiksiet
-tapt
-tapi
-tap\u0101t
-topat
-tap\u0161u
-tapsi
-taps
-tapsim
-tapsiet
-k\u013c\u016bt
-k\u013cuvu
-k\u013cuvi
-k\u013cuva
-k\u013cuv\u0101m
-k\u013cuv\u0101t
-k\u013c\u016bstu
-k\u013c\u016bsti
-k\u013c\u016bst
-k\u013c\u016bstam
-k\u013c\u016bstat
-k\u013c\u016b\u0161u
-k\u013c\u016bsi
-k\u013c\u016bs
-k\u013c\u016bsim
-k\u013c\u016bsiet
-# verbs
-var\u0113t
-var\u0113ju
-var\u0113j\u0101m
-var\u0113\u0161u
-var\u0113sim
-var
-var\u0113ji
-var\u0113j\u0101t
-var\u0113si
-var\u0113siet
-varat
-var\u0113ja
-var\u0113s

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_nl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_nl.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_nl.txt
deleted file mode 100644
index f4d61f5..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_nl.txt
+++ /dev/null
@@ -1,117 +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.
-
- | 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


[31/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell


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

Branch: refs/heads/jira/solr-6203
Commit: 53e5f34f66d264c8f0ea2861e77389902b2a36c4
Parents: 6665aed
Author: Steve Rowe <sa...@apache.org>
Authored: Fri Mar 24 12:31:16 2017 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Fri Mar 24 12:31:16 2017 -0400

----------------------------------------------------------------------
 .gitignore                                      |    1 -
 dev-tools/idea/.idea/ant.xml                    |    3 -
 .../libraries/Solr_morphlines_cell_library.xml  |   10 -
 .../libraries/Solr_morphlines_core_library.xml  |   10 -
 .../Solr_morphlines_core_test_library.xml       |   10 -
 dev-tools/idea/.idea/modules.xml                |    3 -
 dev-tools/idea/.idea/workspace.xml              |   37 +-
 .../idea/solr/contrib/map-reduce/map-reduce.iml |   43 -
 .../contrib/morphlines-cell/morphlines-cell.iml |   29 -
 .../contrib/morphlines-core/morphlines-core.iml |   28 -
 .../solr/contrib/map-reduce/pom.xml.template    |   90 --
 .../contrib/morphlines-cell/pom.xml.template    |   90 --
 .../contrib/morphlines-core/pom.xml.template    |   91 --
 dev-tools/maven/solr/contrib/pom.xml.template   |    3 -
 lucene/ivy-ignore-conflicts.properties          |    1 -
 lucene/ivy-versions.properties                  |   59 -
 solr/CHANGES.txt                                |   10 +
 solr/contrib/map-reduce/README.txt              |   20 -
 solr/contrib/map-reduce/build.xml               |  157 --
 solr/contrib/map-reduce/ivy.xml                 |   37 -
 .../map-reduce/src/java/assembly/hadoop-job.xml |   39 -
 .../solr/hadoop/AlphaNumericComparator.java     |   75 -
 .../org/apache/solr/hadoop/BatchWriter.java     |  243 ---
 .../solr/hadoop/DataInputInputStream.java       |   58 -
 .../solr/hadoop/DataOutputOutputStream.java     |   66 -
 .../solr/hadoop/DryRunDocumentLoader.java       |   57 -
 .../src/java/org/apache/solr/hadoop/GoLive.java |  182 ---
 .../apache/solr/hadoop/HdfsFileFieldNames.java  |   41 -
 .../org/apache/solr/hadoop/HeartBeater.java     |  159 --
 .../solr/hadoop/LineRandomizerMapper.java       |   67 -
 .../solr/hadoop/LineRandomizerReducer.java      |   48 -
 .../solr/hadoop/MapReduceIndexerTool.java       | 1388 -----------------
 .../apache/solr/hadoop/PathArgumentType.java    |  233 ---
 .../java/org/apache/solr/hadoop/PathParts.java  |  130 --
 .../solr/hadoop/SolrCloudPartitioner.java       |  143 --
 .../org/apache/solr/hadoop/SolrCounters.java    |   53 -
 .../solr/hadoop/SolrInputDocumentWritable.java  |   66 -
 .../java/org/apache/solr/hadoop/SolrMapper.java |   39 -
 .../apache/solr/hadoop/SolrOutputFormat.java    |  280 ----
 .../apache/solr/hadoop/SolrRecordWriter.java    |  479 ------
 .../org/apache/solr/hadoop/SolrReducer.java     |  188 ---
 .../solr/hadoop/ToolRunnerHelpFormatter.java    |   90 --
 .../org/apache/solr/hadoop/TreeMergeMapper.java |   46 -
 .../solr/hadoop/TreeMergeOutputFormat.java      |  201 ---
 .../hadoop/UnbufferedDataInputInputStream.java  |  114 --
 .../src/java/org/apache/solr/hadoop/Utils.java  |   59 -
 .../apache/solr/hadoop/ZooKeeperInspector.java  |  213 ---
 .../dedup/NoChangeUpdateConflictResolver.java   |   36 -
 .../dedup/RejectingUpdateConflictResolver.java  |   48 -
 .../RetainMostRecentUpdateConflictResolver.java |  114 --
 .../dedup/SolrInputDocumentComparator.java      |   84 -
 .../dedup/SortingUpdateConflictResolver.java    |   79 -
 .../hadoop/dedup/UpdateConflictResolver.java    |   71 -
 .../apache/solr/hadoop/dedup/package-info.java  |   25 -
 .../hadoop/morphline/MorphlineCounters.java     |   47 -
 .../hadoop/morphline/MorphlineMapRunner.java    |  268 ----
 .../solr/hadoop/morphline/MorphlineMapper.java  |  193 ---
 .../solr/hadoop/morphline/package-info.java     |   25 -
 .../org/apache/solr/hadoop/package-info.java    |   25 -
 solr/contrib/map-reduce/src/java/overview.html  |   21 -
 .../map-reduce/src/test-files/README.txt        |    1 -
 .../solr/hadoop/AlphaNumericComparatorTest.java |   46 -
 .../org/apache/solr/hadoop/IdentityMapper.java  |   38 -
 .../org/apache/solr/hadoop/IdentityReducer.java |   37 -
 .../hadoop/LineRandomizerMapperReducerTest.java |   94 --
 .../test/org/apache/solr/hadoop/MRUnitBase.java |   64 -
 .../MapReduceIndexerToolArgumentParserTest.java |  468 ------
 .../solr/hadoop/MorphlineBasicMiniMRTest.java   |  415 -----
 .../solr/hadoop/MorphlineGoLiveMiniMRTest.java  |  881 -----------
 .../apache/solr/hadoop/MorphlineMapperTest.java |   76 -
 .../solr/hadoop/MorphlineReducerTest.java       |  131 --
 .../org/apache/solr/hadoop/UtilsForTests.java   |   57 -
 .../solr/hadoop/hack/MiniMRClientCluster.java   |   41 -
 .../hadoop/hack/MiniMRClientClusterFactory.java |   88 --
 .../apache/solr/hadoop/hack/MiniMRCluster.java  |  266 ----
 .../solr/hadoop/hack/MiniMRYarnCluster.java     |  205 ---
 .../hadoop/hack/MiniMRYarnClusterAdapter.java   |   78 -
 .../solr/hadoop/hack/MiniYARNCluster.java       |  409 -----
 solr/contrib/morphlines-cell/README.txt         |    6 -
 solr/contrib/morphlines-cell/build.xml          |  144 --
 solr/contrib/morphlines-cell/ivy.xml            |   35 -
 .../solr/morphlines/cell/SolrCellBuilder.java   |  348 -----
 .../StripNonCharSolrContentHandlerFactory.java  |   81 -
 .../cell/TrimSolrContentHandlerFactory.java     |   58 -
 .../solr/morphlines/cell/package-info.java      |   25 -
 .../morphlines-cell/src/java/overview.html      |   21 -
 .../morphlines-cell/src/test-files/README.txt   |    1 -
 .../morphlines/cell/SolrCellMorphlineTest.java  |  292 ----
 solr/contrib/morphlines-core/README.txt         |    6 -
 solr/contrib/morphlines-core/build.xml          |  105 --
 solr/contrib/morphlines-core/ivy.xml            |  128 --
 .../solr/morphlines/solr/DocumentLoader.java    |   73 -
 .../apache/solr/morphlines/solr/FileUtils.java  |  140 --
 .../solr/GenerateSolrSequenceKeyBuilder.java    |  143 --
 .../solr/morphlines/solr/LoadSolrBuilder.java   |  153 --
 .../solr/SafeConcurrentUpdateSolrClient.java    |   70 -
 .../solr/SanitizeUnknownSolrFieldsBuilder.java  |  101 --
 .../solr/SolrClientDocumentLoader.java          |  124 --
 .../solr/morphlines/solr/SolrLocator.java       |  254 ---
 .../morphlines/solr/SolrMorphlineContext.java   |   80 -
 .../morphlines/solr/TokenizeTextBuilder.java    |  154 --
 .../morphlines/solr/ZooKeeperDownloader.java    |  142 --
 .../solr/morphlines/solr/package-info.java      |   25 -
 .../morphlines-core/src/java/overview.html      |   21 -
 .../src/test-files/custom-mimetypes.xml         |   38 -
 .../src/test-files/log4j.properties             |    7 -
 .../src/test-files/morphlines-core.marker       |    1 -
 .../solr/collection1/conf/currency.xml          |   67 -
 .../solr/collection1/conf/elevate.xml           |   42 -
 .../collection1/conf/lang/contractions_ca.txt   |    8 -
 .../collection1/conf/lang/contractions_fr.txt   |    9 -
 .../collection1/conf/lang/contractions_ga.txt   |    5 -
 .../collection1/conf/lang/contractions_it.txt   |   23 -
 .../collection1/conf/lang/hyphenations_ga.txt   |    5 -
 .../solr/collection1/conf/lang/stemdict_nl.txt  |    6 -
 .../solr/collection1/conf/lang/stoptags_ja.txt  |  420 -----
 .../solr/collection1/conf/lang/stopwords_ar.txt |  125 --
 .../solr/collection1/conf/lang/stopwords_bg.txt |  193 ---
 .../solr/collection1/conf/lang/stopwords_ca.txt |  220 ---
 .../solr/collection1/conf/lang/stopwords_cz.txt |  172 ---
 .../solr/collection1/conf/lang/stopwords_da.txt |  108 --
 .../solr/collection1/conf/lang/stopwords_de.txt |  292 ----
 .../solr/collection1/conf/lang/stopwords_el.txt |   78 -
 .../solr/collection1/conf/lang/stopwords_en.txt |   54 -
 .../solr/collection1/conf/lang/stopwords_es.txt |  354 -----
 .../solr/collection1/conf/lang/stopwords_eu.txt |   99 --
 .../solr/collection1/conf/lang/stopwords_fa.txt |  313 ----
 .../solr/collection1/conf/lang/stopwords_fi.txt |   95 --
 .../solr/collection1/conf/lang/stopwords_fr.txt |  183 ---
 .../solr/collection1/conf/lang/stopwords_ga.txt |  110 --
 .../solr/collection1/conf/lang/stopwords_gl.txt |  161 --
 .../solr/collection1/conf/lang/stopwords_hi.txt |  235 ---
 .../solr/collection1/conf/lang/stopwords_hu.txt |  209 ---
 .../solr/collection1/conf/lang/stopwords_hy.txt |   46 -
 .../solr/collection1/conf/lang/stopwords_id.txt |  359 -----
 .../solr/collection1/conf/lang/stopwords_it.txt |  301 ----
 .../solr/collection1/conf/lang/stopwords_ja.txt |  127 --
 .../solr/collection1/conf/lang/stopwords_lv.txt |  172 ---
 .../solr/collection1/conf/lang/stopwords_nl.txt |  117 --
 .../solr/collection1/conf/lang/stopwords_no.txt |  192 ---
 .../solr/collection1/conf/lang/stopwords_pt.txt |  251 ---
 .../solr/collection1/conf/lang/stopwords_ro.txt |  233 ---
 .../solr/collection1/conf/lang/stopwords_ru.txt |  241 ---
 .../solr/collection1/conf/lang/stopwords_sv.txt |  131 --
 .../solr/collection1/conf/lang/stopwords_th.txt |  119 --
 .../solr/collection1/conf/lang/stopwords_tr.txt |  212 ---
 .../solr/collection1/conf/lang/userdict_ja.txt  |   29 -
 .../solr/collection1/conf/protwords.txt         |   21 -
 .../test-files/solr/collection1/conf/schema.xml |  927 -----------
 .../solr/collection1/conf/solrconfig.xml        | 1426 -----------------
 .../solr/collection1/conf/stopwords.txt         |   14 -
 .../solr/collection1/conf/synonyms.txt          |   29 -
 .../test-files/solr/minimr/conf/currency.xml    |   67 -
 .../src/test-files/solr/minimr/conf/elevate.xml |   42 -
 .../solr/minimr/conf/lang/contractions_ca.txt   |    8 -
 .../solr/minimr/conf/lang/contractions_fr.txt   |    9 -
 .../solr/minimr/conf/lang/contractions_ga.txt   |    5 -
 .../solr/minimr/conf/lang/contractions_it.txt   |   23 -
 .../solr/minimr/conf/lang/hyphenations_ga.txt   |    5 -
 .../solr/minimr/conf/lang/stemdict_nl.txt       |    6 -
 .../solr/minimr/conf/lang/stoptags_ja.txt       |  420 -----
 .../solr/minimr/conf/lang/stopwords_ar.txt      |  125 --
 .../solr/minimr/conf/lang/stopwords_bg.txt      |  193 ---
 .../solr/minimr/conf/lang/stopwords_ca.txt      |  220 ---
 .../solr/minimr/conf/lang/stopwords_cz.txt      |  172 ---
 .../solr/minimr/conf/lang/stopwords_da.txt      |  108 --
 .../solr/minimr/conf/lang/stopwords_de.txt      |  292 ----
 .../solr/minimr/conf/lang/stopwords_el.txt      |   78 -
 .../solr/minimr/conf/lang/stopwords_en.txt      |   54 -
 .../solr/minimr/conf/lang/stopwords_es.txt      |  354 -----
 .../solr/minimr/conf/lang/stopwords_eu.txt      |   99 --
 .../solr/minimr/conf/lang/stopwords_fa.txt      |  313 ----
 .../solr/minimr/conf/lang/stopwords_fi.txt      |   95 --
 .../solr/minimr/conf/lang/stopwords_fr.txt      |  183 ---
 .../solr/minimr/conf/lang/stopwords_ga.txt      |  110 --
 .../solr/minimr/conf/lang/stopwords_gl.txt      |  161 --
 .../solr/minimr/conf/lang/stopwords_hi.txt      |  235 ---
 .../solr/minimr/conf/lang/stopwords_hu.txt      |  209 ---
 .../solr/minimr/conf/lang/stopwords_hy.txt      |   46 -
 .../solr/minimr/conf/lang/stopwords_id.txt      |  359 -----
 .../solr/minimr/conf/lang/stopwords_it.txt      |  301 ----
 .../solr/minimr/conf/lang/stopwords_ja.txt      |  127 --
 .../solr/minimr/conf/lang/stopwords_lv.txt      |  172 ---
 .../solr/minimr/conf/lang/stopwords_nl.txt      |  117 --
 .../solr/minimr/conf/lang/stopwords_no.txt      |  192 ---
 .../solr/minimr/conf/lang/stopwords_pt.txt      |  251 ---
 .../solr/minimr/conf/lang/stopwords_ro.txt      |  233 ---
 .../solr/minimr/conf/lang/stopwords_ru.txt      |  241 ---
 .../solr/minimr/conf/lang/stopwords_sv.txt      |  131 --
 .../solr/minimr/conf/lang/stopwords_th.txt      |  119 --
 .../solr/minimr/conf/lang/stopwords_tr.txt      |  212 ---
 .../solr/minimr/conf/lang/userdict_ja.txt       |   29 -
 .../test-files/solr/minimr/conf/protwords.txt   |   21 -
 .../src/test-files/solr/minimr/conf/schema.xml  |  941 ------------
 .../test-files/solr/minimr/conf/solrconfig.xml  | 1446 -----------------
 .../test-files/solr/minimr/conf/stopwords.txt   |   14 -
 .../test-files/solr/minimr/conf/synonyms.txt    |   29 -
 .../src/test-files/solr/minimr/solr.xml         |   46 -
 .../test-files/solr/mrunit/conf/currency.xml    |   67 -
 .../src/test-files/solr/mrunit/conf/elevate.xml |   42 -
 .../solr/mrunit/conf/lang/contractions_ca.txt   |    8 -
 .../solr/mrunit/conf/lang/contractions_fr.txt   |    9 -
 .../solr/mrunit/conf/lang/contractions_ga.txt   |    5 -
 .../solr/mrunit/conf/lang/contractions_it.txt   |   23 -
 .../solr/mrunit/conf/lang/hyphenations_ga.txt   |    5 -
 .../solr/mrunit/conf/lang/stemdict_nl.txt       |    6 -
 .../solr/mrunit/conf/lang/stoptags_ja.txt       |  420 -----
 .../solr/mrunit/conf/lang/stopwords_ar.txt      |  125 --
 .../solr/mrunit/conf/lang/stopwords_bg.txt      |  193 ---
 .../solr/mrunit/conf/lang/stopwords_ca.txt      |  220 ---
 .../solr/mrunit/conf/lang/stopwords_cz.txt      |  172 ---
 .../solr/mrunit/conf/lang/stopwords_da.txt      |  108 --
 .../solr/mrunit/conf/lang/stopwords_de.txt      |  292 ----
 .../solr/mrunit/conf/lang/stopwords_el.txt      |   78 -
 .../solr/mrunit/conf/lang/stopwords_en.txt      |   54 -
 .../solr/mrunit/conf/lang/stopwords_es.txt      |  354 -----
 .../solr/mrunit/conf/lang/stopwords_eu.txt      |   99 --
 .../solr/mrunit/conf/lang/stopwords_fa.txt      |  313 ----
 .../solr/mrunit/conf/lang/stopwords_fi.txt      |   95 --
 .../solr/mrunit/conf/lang/stopwords_fr.txt      |  183 ---
 .../solr/mrunit/conf/lang/stopwords_ga.txt      |  110 --
 .../solr/mrunit/conf/lang/stopwords_gl.txt      |  161 --
 .../solr/mrunit/conf/lang/stopwords_hi.txt      |  235 ---
 .../solr/mrunit/conf/lang/stopwords_hu.txt      |  209 ---
 .../solr/mrunit/conf/lang/stopwords_hy.txt      |   46 -
 .../solr/mrunit/conf/lang/stopwords_id.txt      |  359 -----
 .../solr/mrunit/conf/lang/stopwords_it.txt      |  301 ----
 .../solr/mrunit/conf/lang/stopwords_ja.txt      |  127 --
 .../solr/mrunit/conf/lang/stopwords_lv.txt      |  172 ---
 .../solr/mrunit/conf/lang/stopwords_nl.txt      |  117 --
 .../solr/mrunit/conf/lang/stopwords_no.txt      |  192 ---
 .../solr/mrunit/conf/lang/stopwords_pt.txt      |  251 ---
 .../solr/mrunit/conf/lang/stopwords_ro.txt      |  233 ---
 .../solr/mrunit/conf/lang/stopwords_ru.txt      |  241 ---
 .../solr/mrunit/conf/lang/stopwords_sv.txt      |  131 --
 .../solr/mrunit/conf/lang/stopwords_th.txt      |  119 --
 .../solr/mrunit/conf/lang/stopwords_tr.txt      |  212 ---
 .../solr/mrunit/conf/lang/userdict_ja.txt       |   29 -
 .../test-files/solr/mrunit/conf/protwords.txt   |   21 -
 .../src/test-files/solr/mrunit/conf/schema.xml  |  940 ------------
 .../test-files/solr/mrunit/conf/solrconfig.xml  | 1449 ------------------
 .../test-files/solr/mrunit/conf/stopwords.txt   |   14 -
 .../test-files/solr/mrunit/conf/synonyms.txt    |   29 -
 .../src/test-files/solr/mrunit/solr.xml         |   45 -
 .../src/test-files/solr/solr.xml                |   34 -
 .../solrcelltest/collection1/conf/currency.xml  |   67 -
 .../solrcelltest/collection1/conf/elevate.xml   |   42 -
 .../collection1/conf/lang/contractions_ca.txt   |    8 -
 .../collection1/conf/lang/contractions_fr.txt   |    9 -
 .../collection1/conf/lang/contractions_ga.txt   |    5 -
 .../collection1/conf/lang/contractions_it.txt   |   23 -
 .../collection1/conf/lang/hyphenations_ga.txt   |    5 -
 .../collection1/conf/lang/stemdict_nl.txt       |    6 -
 .../collection1/conf/lang/stoptags_ja.txt       |  420 -----
 .../collection1/conf/lang/stopwords_ar.txt      |  125 --
 .../collection1/conf/lang/stopwords_bg.txt      |  193 ---
 .../collection1/conf/lang/stopwords_ca.txt      |  220 ---
 .../collection1/conf/lang/stopwords_cz.txt      |  172 ---
 .../collection1/conf/lang/stopwords_da.txt      |  108 --
 .../collection1/conf/lang/stopwords_de.txt      |  292 ----
 .../collection1/conf/lang/stopwords_el.txt      |   78 -
 .../collection1/conf/lang/stopwords_en.txt      |   54 -
 .../collection1/conf/lang/stopwords_es.txt      |  354 -----
 .../collection1/conf/lang/stopwords_eu.txt      |   99 --
 .../collection1/conf/lang/stopwords_fa.txt      |  313 ----
 .../collection1/conf/lang/stopwords_fi.txt      |   95 --
 .../collection1/conf/lang/stopwords_fr.txt      |  183 ---
 .../collection1/conf/lang/stopwords_ga.txt      |  110 --
 .../collection1/conf/lang/stopwords_gl.txt      |  161 --
 .../collection1/conf/lang/stopwords_hi.txt      |  235 ---
 .../collection1/conf/lang/stopwords_hu.txt      |  209 ---
 .../collection1/conf/lang/stopwords_hy.txt      |   46 -
 .../collection1/conf/lang/stopwords_id.txt      |  359 -----
 .../collection1/conf/lang/stopwords_it.txt      |  301 ----
 .../collection1/conf/lang/stopwords_ja.txt      |  127 --
 .../collection1/conf/lang/stopwords_lv.txt      |  172 ---
 .../collection1/conf/lang/stopwords_nl.txt      |  117 --
 .../collection1/conf/lang/stopwords_no.txt      |  192 ---
 .../collection1/conf/lang/stopwords_pt.txt      |  251 ---
 .../collection1/conf/lang/stopwords_ro.txt      |  233 ---
 .../collection1/conf/lang/stopwords_ru.txt      |  241 ---
 .../collection1/conf/lang/stopwords_sv.txt      |  131 --
 .../collection1/conf/lang/stopwords_th.txt      |  119 --
 .../collection1/conf/lang/stopwords_tr.txt      |  212 ---
 .../collection1/conf/lang/userdict_ja.txt       |   29 -
 .../solrcelltest/collection1/conf/protwords.txt |   21 -
 .../solrcelltest/collection1/conf/schema.xml    |  893 -----------
 .../collection1/conf/solrconfig.xml             | 1426 -----------------
 .../solrcelltest/collection1/conf/stopwords.txt |   14 -
 .../solrcelltest/collection1/conf/synonyms.txt  |   29 -
 .../solr/solrcloud/conf/solrconfig.xml          | 1437 -----------------
 .../test-files/test-documents/NullHeader.docx   |  Bin 4355 -> 0 bytes
 .../test-files/test-documents/boilerplate.html  |   58 -
 .../src/test-files/test-documents/cars.csv      |    6 -
 .../src/test-files/test-documents/cars.csv.gz   |  Bin 167 -> 0 bytes
 .../src/test-files/test-documents/cars.tar.gz   |  Bin 298 -> 0 bytes
 .../src/test-files/test-documents/complex.mbox  |  291 ----
 .../src/test-files/test-documents/email.eml     |   40 -
 .../src/test-files/test-documents/rsstest.rss   |   36 -
 .../sample-statuses-20120521-100919.avro        |  Bin 3192 -> 0 bytes
 .../sample-statuses-20120906-141433             |    4 -
 .../sample-statuses-20120906-141433-medium.avro |  Bin 249540 -> 0 bytes
 .../sample-statuses-20120906-141433.avro        |  Bin 1208 -> 0 bytes
 .../sample-statuses-20120906-141433.bz2         |  Bin 1054 -> 0 bytes
 .../sample-statuses-20120906-141433.gz          |  Bin 907 -> 0 bytes
 .../test-files/test-documents/test-outlook.msg  |  Bin 19968 -> 0 bytes
 .../src/test-files/test-documents/testAIFF.aif  |  Bin 3894 -> 0 bytes
 .../src/test-files/test-documents/testBMP.bmp   |  Bin 22554 -> 0 bytes
 .../src/test-files/test-documents/testBMPfp.txt |    3 -
 .../src/test-files/test-documents/testEMLX.emlx |   72 -
 .../src/test-files/test-documents/testEXCEL.xls |  Bin 13824 -> 0 bytes
 .../test-files/test-documents/testEXCEL.xlsx    |  Bin 9453 -> 0 bytes
 .../src/test-files/test-documents/testFLAC.flac |  Bin 10604 -> 0 bytes
 .../src/test-files/test-documents/testFLV.flv   |  Bin 90580 -> 0 bytes
 .../test-files/test-documents/testJPEG_EXIF.jpg |  Bin 16357 -> 0 bytes
 .../test-documents/testJPEG_EXIF.jpg.gz         |  Bin 8595 -> 0 bytes
 .../test-documents/testJPEG_EXIF.jpg.tar.gz     |  Bin 8722 -> 0 bytes
 .../test-files/test-documents/testMP3i18n.mp3   |  Bin 40832 -> 0 bytes
 .../src/test-files/test-documents/testMP4.m4a   |  Bin 4770 -> 0 bytes
 .../src/test-files/test-documents/testPDF.pdf   |  Bin 34824 -> 0 bytes
 .../src/test-files/test-documents/testPNG.png   |  Bin 17041 -> 0 bytes
 .../test-documents/testPPT_various.ppt          |  Bin 164352 -> 0 bytes
 .../test-documents/testPPT_various.pptx         |  Bin 56659 -> 0 bytes
 .../src/test-files/test-documents/testPSD.psd   |  Bin 69410 -> 0 bytes
 .../test-files/test-documents/testPages.pages   |  Bin 134152 -> 0 bytes
 .../src/test-files/test-documents/testRFC822    |   41 -
 .../test-documents/testRTFVarious.rtf           |  329 ----
 .../src/test-files/test-documents/testSVG.svg   |   23 -
 .../src/test-files/test-documents/testTIFF.tif  |  Bin 25584 -> 0 bytes
 .../src/test-files/test-documents/testVISIO.vsd |  Bin 45568 -> 0 bytes
 .../src/test-files/test-documents/testWAV.wav   |  Bin 3884 -> 0 bytes
 .../test-documents/testWORD_various.doc         |  Bin 35328 -> 0 bytes
 .../src/test-files/test-documents/testXML.xml   |   48 -
 .../src/test-files/test-documents/testXML2.xml  |   22 -
 .../test-morphlines/loadSolrBasic.conf          |   68 -
 .../test-morphlines/solrCellDocumentTypes.conf  |  304 ----
 .../test-morphlines/solrCellJPGCompressed.conf  |  150 --
 .../test-files/test-morphlines/solrCellXML.conf |   78 -
 .../test-morphlines/tokenizeText.conf           |   38 -
 .../tutorialReadAvroContainer.conf              |  145 --
 .../solr/AbstractSolrMorphlineTestBase.java     |  318 ----
 .../solr/AbstractSolrMorphlineZkTestBase.java   |  141 --
 .../solr/CollectingDocumentLoader.java          |   95 --
 .../morphlines/solr/EmbeddedTestSolrServer.java |   46 -
 .../solr/morphlines/solr/SolrMorphlineTest.java |   69 -
 .../solr/SolrMorphlineZkAliasTest.java          |   96 --
 .../solr/SolrMorphlineZkAvroTest.java           |  140 --
 .../morphlines/solr/SolrMorphlineZkTest.java    |   92 --
 solr/licenses/Saxon-HE-9.6.0-2.jar.sha1         |    1 -
 solr/licenses/Saxon-HE-LICENSE-MPL.txt          |  108 --
 solr/licenses/aopalliance-1.0.jar.sha1          |    1 -
 solr/licenses/aopalliance-LICENSE-PD.txt        |    1 -
 solr/licenses/argparse4j-0.4.3.jar.sha1         |    1 -
 solr/licenses/argparse4j-LICENSE-MIT.txt        |   23 -
 solr/licenses/avro-1.7.5.jar.sha1               |    1 -
 solr/licenses/avro-LICENSE-ASL.txt              |  308 ----
 solr/licenses/avro-NOTICE.txt                   |    9 -
 solr/licenses/bcpkix-jdk15on-1.47.jar.sha1      |    1 -
 .../bcpkix-jdk15on-LICENSE-BSD_LIKE.txt         |   15 -
 solr/licenses/bcpkix-jdk15on-NOTICE.txt         |    2 -
 solr/licenses/config-1.0.2.jar.sha1             |    1 -
 solr/licenses/config-LICENSE-ASL.txt            |  202 ---
 solr/licenses/config-NOTICE.txt                 |    0
 solr/licenses/guice-3.0.jar.sha1                |    1 -
 solr/licenses/guice-LICENSE-ASL.txt             |  202 ---
 solr/licenses/guice-NOTICE.txt                  |    0
 solr/licenses/guice-servlet-3.0.jar.sha1        |    1 -
 solr/licenses/guice-servlet-LICENSE-ASL.txt     |  202 ---
 solr/licenses/guice-servlet-NOTICE.txt          |    0
 .../hadoop-mapreduce-client-app-2.7.2.jar.sha1  |    1 -
 .../hadoop-mapreduce-client-app-LICENSE-ASL.txt |  244 ---
 .../hadoop-mapreduce-client-app-NOTICE.txt      |    2 -
 ...adoop-mapreduce-client-common-2.7.2.jar.sha1 |    1 -
 ...doop-mapreduce-client-common-LICENSE-ASL.txt |  244 ---
 .../hadoop-mapreduce-client-common-NOTICE.txt   |    2 -
 .../hadoop-mapreduce-client-core-2.7.2.jar.sha1 |    1 -
 ...hadoop-mapreduce-client-core-LICENSE-ASL.txt |  244 ---
 .../hadoop-mapreduce-client-core-NOTICE.txt     |    2 -
 .../hadoop-mapreduce-client-hs-2.7.2.jar.sha1   |    1 -
 .../hadoop-mapreduce-client-hs-LICENSE-ASL.txt  |  244 ---
 .../hadoop-mapreduce-client-hs-NOTICE.txt       |    2 -
 ...reduce-client-jobclient-2.7.2-tests.jar.sha1 |    1 -
 ...op-mapreduce-client-jobclient-2.7.2.jar.sha1 |    1 -
 ...p-mapreduce-client-jobclient-LICENSE-ASL.txt |  244 ---
 ...hadoop-mapreduce-client-jobclient-NOTICE.txt |    2 -
 ...doop-mapreduce-client-shuffle-2.7.2.jar.sha1 |    1 -
 ...oop-mapreduce-client-shuffle-LICENSE-ASL.txt |  244 ---
 .../hadoop-mapreduce-client-shuffle-NOTICE.txt  |    2 -
 solr/licenses/hadoop-yarn-api-2.7.2.jar.sha1    |    1 -
 solr/licenses/hadoop-yarn-api-LICENSE-ASL.txt   |  244 ---
 solr/licenses/hadoop-yarn-api-NOTICE.txt        |    2 -
 solr/licenses/hadoop-yarn-client-2.7.2.jar.sha1 |    1 -
 .../licenses/hadoop-yarn-client-LICENSE-ASL.txt |  244 ---
 solr/licenses/hadoop-yarn-client-NOTICE.txt     |    2 -
 solr/licenses/hadoop-yarn-common-2.7.2.jar.sha1 |    1 -
 .../licenses/hadoop-yarn-common-LICENSE-ASL.txt |  244 ---
 solr/licenses/hadoop-yarn-common-NOTICE.txt     |    2 -
 ...ver-applicationhistoryservice-2.7.2.jar.sha1 |    1 -
 ...er-applicationhistoryservice-LICENSE-ASL.txt |  244 ---
 ...-server-applicationhistoryservice-NOTICE.txt |    2 -
 .../hadoop-yarn-server-common-2.7.2.jar.sha1    |    1 -
 .../hadoop-yarn-server-common-LICENSE-ASL.txt   |  244 ---
 .../hadoop-yarn-server-common-NOTICE.txt        |    2 -
 ...adoop-yarn-server-nodemanager-2.7.2.jar.sha1 |    1 -
 ...doop-yarn-server-nodemanager-LICENSE-ASL.txt |  244 ---
 .../hadoop-yarn-server-nodemanager-NOTICE.txt   |    2 -
 ...p-yarn-server-resourcemanager-2.7.2.jar.sha1 |    1 -
 ...-yarn-server-resourcemanager-LICENSE-ASL.txt |  244 ---
 ...adoop-yarn-server-resourcemanager-NOTICE.txt |    2 -
 ...adoop-yarn-server-tests-2.7.2-tests.jar.sha1 |    1 -
 .../hadoop-yarn-server-tests-LICENSE-ASL.txt    |  244 ---
 .../hadoop-yarn-server-tests-NOTICE.txt         |    2 -
 .../hadoop-yarn-server-web-proxy-2.7.2.jar.sha1 |    1 -
 ...hadoop-yarn-server-web-proxy-LICENSE-ASL.txt |  244 ---
 .../hadoop-yarn-server-web-proxy-NOTICE.txt     |    2 -
 solr/licenses/jackson-jaxrs-1.9.13.jar.sha1     |    1 -
 solr/licenses/jackson-jaxrs-LICENSE-ASL.txt     |   13 -
 solr/licenses/jackson-jaxrs-NOTICE.txt          |    7 -
 solr/licenses/javax.inject-1.jar.sha1           |    1 -
 solr/licenses/javax.inject-LICENSE-ASL.txt      |  202 ---
 solr/licenses/javax.inject-NOTICE.txt           |    0
 solr/licenses/jaxb-impl-2.2.3-1.jar.sha1        |    1 -
 solr/licenses/jaxb-impl-LICENSE-CDDL.txt        |  135 --
 solr/licenses/jersey-bundle-1.9.jar.sha1        |    1 -
 solr/licenses/jersey-bundle-LICENSE-CDDL.txt    |   85 -
 solr/licenses/jersey-guice-1.9.jar.sha1         |    1 -
 solr/licenses/jersey-guice-LICENSE-CDDL.txt     |   85 -
 solr/licenses/jersey-json-1.9.jar.sha1          |    1 -
 solr/licenses/jersey-json-LICENSE-CDDL.txt      |   85 -
 .../kite-morphlines-avro-1.1.0.jar.sha1         |    1 -
 .../kite-morphlines-avro-LICENSE-ASL.txt        |  202 ---
 solr/licenses/kite-morphlines-avro-NOTICE.txt   |    8 -
 .../kite-morphlines-core-1.1.0-tests.jar.sha1   |    1 -
 .../kite-morphlines-core-1.1.0.jar.sha1         |    1 -
 .../kite-morphlines-core-LICENSE-ASL.txt        |  202 ---
 solr/licenses/kite-morphlines-core-NOTICE.txt   |    8 -
 ...orphlines-hadoop-sequencefile-1.1.0.jar.sha1 |    1 -
 ...rphlines-hadoop-sequencefile-LICENSE-ASL.txt |  202 ---
 ...te-morphlines-hadoop-sequencefile-NOTICE.txt |    8 -
 .../kite-morphlines-json-1.1.0.jar.sha1         |    1 -
 .../kite-morphlines-json-LICENSE-ASL.txt        |  202 ---
 solr/licenses/kite-morphlines-json-NOTICE.txt   |    8 -
 .../kite-morphlines-saxon-1.1.0.jar.sha1        |    1 -
 .../kite-morphlines-saxon-LICENSE-ASL.txt       |  202 ---
 solr/licenses/kite-morphlines-saxon-NOTICE.txt  |    8 -
 .../kite-morphlines-tika-core-1.1.0.jar.sha1    |    1 -
 .../kite-morphlines-tika-core-LICENSE-ASL.txt   |  202 ---
 .../kite-morphlines-tika-core-NOTICE.txt        |    8 -
 ...te-morphlines-tika-decompress-1.1.0.jar.sha1 |    1 -
 ...e-morphlines-tika-decompress-LICENSE-ASL.txt |  202 ---
 .../kite-morphlines-tika-decompress-NOTICE.txt  |    8 -
 .../kite-morphlines-twitter-1.1.0.jar.sha1      |    1 -
 .../kite-morphlines-twitter-LICENSE-ASL.txt     |  202 ---
 .../licenses/kite-morphlines-twitter-NOTICE.txt |    8 -
 solr/licenses/leveldb-0.7.jar.sha1              |    1 -
 solr/licenses/leveldb-LICENSE-BSD.txt           |   27 -
 solr/licenses/leveldb-NOTICE.txt                |    0
 solr/licenses/leveldb-api-0.7.jar.sha1          |    1 -
 solr/licenses/leveldb-api-LICENSE-BSD.txt       |   27 -
 solr/licenses/leveldb-api-NOTICE.txt            |    0
 solr/licenses/leveldbjni-1.8.jar.sha1           |    1 -
 solr/licenses/leveldbjni-LICENSE-BSD.txt        |   27 -
 solr/licenses/leveldbjni-NOTICE.txt             |    0
 .../metrics-healthchecks-3.1.2.jar.sha1         |    1 -
 .../metrics-healthchecks-LICENSE-ASL.txt        |  202 ---
 solr/licenses/metrics-healthchecks-NOTICE.txt   |   11 -
 solr/licenses/mrunit-1.0.0-hadoop2.jar.sha1     |    1 -
 solr/licenses/mrunit-LICENSE-ASL.txt            |  479 ------
 solr/licenses/mrunit-NOTICE.txt                 |    5 -
 solr/licenses/netty-3.2.4.Final.jar.sha1        |    1 -
 solr/licenses/netty-LICENSE-ASL.txt             |  202 ---
 solr/licenses/netty-NOTICE.txt                  |   98 --
 solr/licenses/paranamer-2.3.jar.sha1            |    1 -
 solr/licenses/paranamer-LICENSE-BSD.txt         |   28 -
 solr/licenses/paranamer-NOTICE.txt              |    0
 solr/licenses/rome-1.6.1.jar.sha1               |    1 -
 solr/licenses/snappy-java-1.0.5.jar.sha1        |    1 -
 solr/licenses/snappy-java-LICENSE-ASL.txt       |  201 ---
 solr/licenses/snappy-java-NOTICE.txt            |    0
 .../map-reduce/set-map-reduce-classpath.sh      |   52 -
 480 files changed, 15 insertions(+), 59625 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 625cfa9..4962ab9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,7 +45,6 @@ parent.iml
 /solr/example/example-DIH/solr/mail/lib/*.jar
 
 solr/contrib/dataimporthandler/test-lib/
-solr/contrib/morphlines-core/test-lib/
 
 solr/core/test-lib/
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/idea/.idea/ant.xml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/.idea/ant.xml b/dev-tools/idea/.idea/ant.xml
index 8d454ad..8723e63 100644
--- a/dev-tools/idea/.idea/ant.xml
+++ b/dev-tools/idea/.idea/ant.xml
@@ -46,9 +46,6 @@
     <buildFile url="file://$PROJECT_DIR$/solr/contrib/dataimporthandler/build.xml" />
     <buildFile url="file://$PROJECT_DIR$/solr/contrib/extraction/build.xml" />
     <buildFile url="file://$PROJECT_DIR$/solr/contrib/langid/build.xml" />
-    <buildFile url="file://$PROJECT_DIR$/solr/contrib/morphlines-cell/build.xml" />
-    <buildFile url="file://$PROJECT_DIR$/solr/contrib/morphlines-core/build.xml" />
-    <buildFile url="file://$PROJECT_DIR$/solr/contrib/map-reduce/build.xml" />
     <buildFile url="file://$PROJECT_DIR$/solr/contrib/uima/build.xml" />
     <buildFile url="file://$PROJECT_DIR$/solr/contrib/velocity/build.xml" />
     <buildFile url="file://$PROJECT_DIR$/solr/solrj/build.xml" />

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/idea/.idea/libraries/Solr_morphlines_cell_library.xml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/.idea/libraries/Solr_morphlines_cell_library.xml b/dev-tools/idea/.idea/libraries/Solr_morphlines_cell_library.xml
deleted file mode 100644
index cbc9907..0000000
--- a/dev-tools/idea/.idea/libraries/Solr_morphlines_cell_library.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="libraryTable">
-  <library name="Solr morphlines cell library">
-    <CLASSES>
-      <root url="file://$PROJECT_DIR$/solr/contrib/morphlines-cell/lib" />
-    </CLASSES>
-    <JAVADOC />
-    <SOURCES />
-    <jarDirectory url="file://$PROJECT_DIR$/solr/contrib/morphlines-cell/lib" recursive="false" />
-  </library>
-</component>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/idea/.idea/libraries/Solr_morphlines_core_library.xml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/.idea/libraries/Solr_morphlines_core_library.xml b/dev-tools/idea/.idea/libraries/Solr_morphlines_core_library.xml
deleted file mode 100644
index 4260f58..0000000
--- a/dev-tools/idea/.idea/libraries/Solr_morphlines_core_library.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="libraryTable">
-  <library name="Solr morphlines core library">
-    <CLASSES>
-      <root url="file://$PROJECT_DIR$/solr/contrib/morphlines-core/lib" />
-    </CLASSES>
-    <JAVADOC />
-    <SOURCES />
-    <jarDirectory url="file://$PROJECT_DIR$/solr/contrib/morphlines-core/lib" recursive="false" />
-  </library>
-</component>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/idea/.idea/libraries/Solr_morphlines_core_test_library.xml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/.idea/libraries/Solr_morphlines_core_test_library.xml b/dev-tools/idea/.idea/libraries/Solr_morphlines_core_test_library.xml
deleted file mode 100644
index 74699f4..0000000
--- a/dev-tools/idea/.idea/libraries/Solr_morphlines_core_test_library.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="libraryTable">
-  <library name="Solr morphlines core test library">
-    <CLASSES>
-      <root url="file://$PROJECT_DIR$/solr/contrib/morphlines-core/test-lib" />
-    </CLASSES>
-    <JAVADOC />
-    <SOURCES />
-    <jarDirectory url="file://$PROJECT_DIR$/solr/contrib/morphlines-core/test-lib" recursive="false" />
-  </library>
-</component>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/idea/.idea/modules.xml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/.idea/modules.xml b/dev-tools/idea/.idea/modules.xml
index d6b44f4..7ad2a78 100644
--- a/dev-tools/idea/.idea/modules.xml
+++ b/dev-tools/idea/.idea/modules.xml
@@ -56,9 +56,6 @@
       <module group="Solr/Contrib" filepath="$PROJECT_DIR$/solr/contrib/extraction/extraction.iml" />
       <module group="Solr/Contrib" filepath="$PROJECT_DIR$/solr/contrib/langid/langid.iml" />
       <module group="Solr/Contrib" filepath="$PROJECT_DIR$/solr/contrib/ltr/ltr.iml" />
-      <module group="Solr/Contrib" filepath="$PROJECT_DIR$/solr/contrib/map-reduce/map-reduce.iml" />
-      <module group="Solr/Contrib" filepath="$PROJECT_DIR$/solr/contrib/morphlines-cell/morphlines-cell.iml" />
-      <module group="Solr/Contrib" filepath="$PROJECT_DIR$/solr/contrib/morphlines-core/morphlines-core.iml" />
       <module group="Solr/Contrib" filepath="$PROJECT_DIR$/solr/contrib/uima/uima.iml" />
       <module group="Solr/Contrib" filepath="$PROJECT_DIR$/solr/contrib/velocity/velocity.iml" />
     </modules>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/idea/.idea/workspace.xml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/.idea/workspace.xml b/dev-tools/idea/.idea/workspace.xml
index 65be571..0ca7f0c 100644
--- a/dev-tools/idea/.idea/workspace.xml
+++ b/dev-tools/idea/.idea/workspace.xml
@@ -316,30 +316,6 @@
       <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
       <patterns><pattern testClass=".*\.Test[^.]*|.*\.[^.]*Test" /></patterns>
     </configuration>
-    <configuration default="false" name="Solr map-reduce contrib" type="JUnit" factoryName="JUnit">
-      <module name="map-reduce" />
-      <option name="TEST_OBJECT" value="pattern" />
-      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/idea-build/solr/contrib/map-reduce" />
-      <option name="VM_PARAMETERS" value="-ea -DtempDir=temp -Djetty.testMode=1 -Djetty.insecurerandom=1 -Dsolr.directoryFactory=org.apache.solr.core.MockDirectoryFactory" />
-      <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
-      <patterns><pattern testClass=".*\.Test[^.]*|.*\.[^.]*Test" /></patterns>
-    </configuration>
-    <configuration default="false" name="Solr morphlines-cell contrib" type="JUnit" factoryName="JUnit">
-      <module name="morphlines-cell" />
-      <option name="TEST_OBJECT" value="pattern" />
-      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/idea-build/solr/contrib/morphlines-cell" />
-      <option name="VM_PARAMETERS" value="-ea -DtempDir=temp -Djetty.testMode=1 -Djetty.insecurerandom=1 -Dsolr.directoryFactory=org.apache.solr.core.MockDirectoryFactory" />
-      <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
-      <patterns><pattern testClass=".*\.Test[^.]*|.*\.[^.]*Test" /></patterns>
-    </configuration>
-    <configuration default="false" name="Solr morphlines-core contrib" type="JUnit" factoryName="JUnit">
-      <module name="morphlines-core" />
-      <option name="TEST_OBJECT" value="pattern" />
-      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/idea-build/solr/contrib/morphlines-core" />
-      <option name="VM_PARAMETERS" value="-ea -DtempDir=temp -Djetty.testMode=1 -Djetty.insecurerandom=1 -Dsolr.directoryFactory=org.apache.solr.core.MockDirectoryFactory" />
-      <option name="TEST_SEARCH_SCOPE"><value defaultName="singleModule" /></option>
-      <patterns><pattern testClass=".*\.Test[^.]*|.*\.[^.]*Test" /></patterns>
-    </configuration>
     <configuration default="false" name="Solr uima contrib" type="JUnit" factoryName="JUnit">
       <module name="uima" />
       <option name="TEST_OBJECT" value="pattern" />
@@ -357,7 +333,7 @@
       <patterns><pattern testClass=".*\.Test[^.]*|.*\.[^.]*Test" /></patterns>
     </configuration>
 
-    <list size="44">
+    <list size="41">
       <item index="0" class="java.lang.String" itemvalue="JUnit.Lucene core" />
       <item index="1" class="java.lang.String" itemvalue="JUnit.Module analyzers-common" />
       <item index="2" class="java.lang.String" itemvalue="JUnit.Module analyzers-icu" />
@@ -395,13 +371,10 @@
       <item index="34" class="java.lang.String" itemvalue="JUnit.Solr dataimporthandler contrib" />
       <item index="35" class="java.lang.String" itemvalue="JUnit.Solr dataimporthandler-extras contrib" />
       <item index="36" class="java.lang.String" itemvalue="JUnit.Solr extraction contrib" />
-      <item index="37" class="java.lang.String" itemvalue="JUnit.Solr map-reduce contrib" />
-      <item index="38" class="java.lang.String" itemvalue="JUnit.Solr morphlines-cell contrib" />
-      <item index="39" class="java.lang.String" itemvalue="JUnit.Solr morphlines-core contrib" />
-      <item index="40" class="java.lang.String" itemvalue="JUnit.Solr langid contrib" />
-      <item index="41" class="java.lang.String" itemvalue="JUnit.Solr ltr contrib" />
-      <item index="42" class="java.lang.String" itemvalue="JUnit.Solr uima contrib" />
-      <item index="43" class="java.lang.String" itemvalue="JUnit.Solr velocity contrib" />
+      <item index="37" class="java.lang.String" itemvalue="JUnit.Solr langid contrib" />
+      <item index="38" class="java.lang.String" itemvalue="JUnit.Solr ltr contrib" />
+      <item index="39" class="java.lang.String" itemvalue="JUnit.Solr uima contrib" />
+      <item index="40" class="java.lang.String" itemvalue="JUnit.Solr velocity contrib" />
     </list>
   </component>
 </project>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/idea/solr/contrib/map-reduce/map-reduce.iml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/solr/contrib/map-reduce/map-reduce.iml b/dev-tools/idea/solr/contrib/map-reduce/map-reduce.iml
deleted file mode 100644
index af266b0..0000000
--- a/dev-tools/idea/solr/contrib/map-reduce/map-reduce.iml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/../../../idea-build/solr/contrib/map-reduce/classes/java" />
-    <output-test url="file://$MODULE_DIR$/../../../idea-build/solr/contrib/map-reduce/classes/test" />
-    <exclude-output />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test-files" type="java-test-resource" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" scope="TEST" name="JUnit" level="project" />
-    <orderEntry type="library" name="Solr core library" level="project" />
-    <orderEntry type="library" name="Solrj library" level="project" />
-    <orderEntry type="library" name="Solr extraction library" level="project" />
-    <orderEntry type="library" name="Solr morphlines core library" level="project" />
-    <orderEntry type="library" name="Solr morphlines cell library" level="project" />
-    <orderEntry type="library" scope="TEST" name="Solr morphlines core test library" level="project" />
-    <orderEntry type="library" scope="TEST" name="Solr example library" level="project" />
-    <orderEntry type="library" scope="TEST" name="Solr core test library" level="project" />
-    <orderEntry type="module" scope="TEST" module-name="lucene-test-framework" />
-    <orderEntry type="module" scope="TEST" module-name="solr-test-framework" />
-    <orderEntry type="module" module-name="solr-core" />
-    <orderEntry type="module" module-name="solrj" />
-    <orderEntry type="module" module-name="misc" />
-    <orderEntry type="module" module-name="extraction" />
-    <orderEntry type="module" module-name="lucene-core" />
-    <orderEntry type="module" module-name="morphlines-core" />
-    <orderEntry type="module" module-name="analysis-common" />
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="file://$MODULE_DIR$/lib" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-        <jarDirectory url="file://$MODULE_DIR$/lib" recursive="false" />
-      </library>
-    </orderEntry>
-  </component>
-</module>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/idea/solr/contrib/morphlines-cell/morphlines-cell.iml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/solr/contrib/morphlines-cell/morphlines-cell.iml b/dev-tools/idea/solr/contrib/morphlines-cell/morphlines-cell.iml
deleted file mode 100644
index f6f3900..0000000
--- a/dev-tools/idea/solr/contrib/morphlines-cell/morphlines-cell.iml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/../../../idea-build/solr/contrib/morphlines-cell/classes/java" />
-    <output-test url="file://$MODULE_DIR$/../../../idea-build/solr/contrib/morphlines-cell/classes/test" />
-    <exclude-output />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test-files" type="java-test-resource" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" scope="TEST" name="JUnit" level="project" />
-    <orderEntry type="library" name="Solr core library" level="project" />
-    <orderEntry type="library" name="Solrj library" level="project" />
-    <orderEntry type="library" name="Solr extraction library" level="project" />
-    <orderEntry type="library" name="Solr morphlines core library" level="project" />
-    <orderEntry type="library" name="Solr morphlines cell library" level="project" />
-    <orderEntry type="library" scope="TEST" name="Solr morphlines core test library" level="project" />
-    <orderEntry type="module" scope="TEST" module-name="lucene-test-framework" />
-    <orderEntry type="module" scope="TEST" module-name="solr-test-framework" />
-    <orderEntry type="module" scope="TEST" module-name="lucene-core" />
-    <orderEntry type="module" module-name="solr-core" />
-    <orderEntry type="module" module-name="solrj" />
-    <orderEntry type="module" module-name="extraction" />
-    <orderEntry type="module" module-name="morphlines-core" />
-  </component>
-</module>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/idea/solr/contrib/morphlines-core/morphlines-core.iml
----------------------------------------------------------------------
diff --git a/dev-tools/idea/solr/contrib/morphlines-core/morphlines-core.iml b/dev-tools/idea/solr/contrib/morphlines-core/morphlines-core.iml
deleted file mode 100644
index 15f26f2..0000000
--- a/dev-tools/idea/solr/contrib/morphlines-core/morphlines-core.iml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/../../../idea-build/solr/contrib/morphlines-core/classes/java" />
-    <output-test url="file://$MODULE_DIR$/../../../idea-build/solr/contrib/morphlines-core/classes/test" />
-    <exclude-output />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test-files" type="java-test-resource" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" scope="TEST" name="JUnit" level="project" />
-    <orderEntry type="library" name="Solr example library" level="project" />
-    <orderEntry type="library" name="Solr core library" level="project" />
-    <orderEntry type="library" name="Solrj library" level="project" />
-    <orderEntry type="library" name="Solr extraction library" level="project" />
-    <orderEntry type="library" name="Solr morphlines core library" level="project" />
-    <orderEntry type="library" scope="TEST" name="Solr morphlines core test library" level="project" />
-    <orderEntry type="module" scope="TEST" module-name="lucene-test-framework" />
-    <orderEntry type="module" scope="TEST" module-name="solr-test-framework" />
-    <orderEntry type="module" module-name="solr-core" />
-    <orderEntry type="module" module-name="solrj" />
-    <orderEntry type="module" module-name="lucene-core" />
-    <orderEntry type="module" module-name="analysis-common" />
-  </component>
-</module>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/maven/solr/contrib/map-reduce/pom.xml.template
----------------------------------------------------------------------
diff --git a/dev-tools/maven/solr/contrib/map-reduce/pom.xml.template b/dev-tools/maven/solr/contrib/map-reduce/pom.xml.template
deleted file mode 100644
index 623c8cb..0000000
--- a/dev-tools/maven/solr/contrib/map-reduce/pom.xml.template
+++ /dev/null
@@ -1,90 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.solr</groupId>
-    <artifactId>solr-parent</artifactId>
-    <version>@version@</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
-  <groupId>org.apache.solr</groupId>
-  <artifactId>solr-map-reduce</artifactId>
-  <packaging>jar</packaging>
-  <name>Apache Solr map-reduce index construction</name>
-  <description>Apache Solr - map-reduce index construction</description>
-  <properties>
-    <module-directory>solr/contrib/map-reduce</module-directory>
-    <relative-top-level>../../../..</relative-top-level>
-    <module-path>${relative-top-level}/${module-directory}</module-path>
-  </properties>
-  <scm>
-    <connection>scm:git:${vc-anonymous-base-url}</connection>
-    <developerConnection>scm:git:${vc-dev-base-url}</developerConnection>
-    <url>${vc-browse-base-url};f=${module-directory}</url>
-  </scm>
-  <dependencies>
-    <dependency>
-      <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <!-- This dependency cannot be put into solr-parent, because local        -->
-      <!-- dependencies are always ordered before inherited dependencies.       -->
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-test-framework</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.solr</groupId>
-      <artifactId>solr-test-framework</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.solr</groupId>
-      <artifactId>solr-morphlines-core</artifactId>
-      <version>${project.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-@solr-map-reduce.internal.dependencies@
-@solr-map-reduce.external.dependencies@
-@solr-map-reduce.internal.test.dependencies@
-@solr-map-reduce.external.test.dependencies@
-  </dependencies>
-  <build>
-    <sourceDirectory>${module-path}/src/java</sourceDirectory>
-    <testSourceDirectory>${module-path}/src/test</testSourceDirectory>
-    <testResources>
-      <testResource>
-        <directory>${module-path}/src/test-files</directory>
-      </testResource>
-      <testResource>
-        <!-- TODO: This is a hack, because the shared test-files folder seems not to be
-          included by the dependency, maybe because the dependency test-jar is not unpacked? -->
-        <directory>${module-path}/../morphlines-core/src/test-files</directory>
-      </testResource>
-      <testResource>
-        <directory>${top-level}/dev-tools/maven/solr</directory>
-        <includes>
-          <include>maven.testlogging.properties</include>
-        </includes>
-      </testResource>
-    </testResources>
-  </build>
-</project>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/maven/solr/contrib/morphlines-cell/pom.xml.template
----------------------------------------------------------------------
diff --git a/dev-tools/maven/solr/contrib/morphlines-cell/pom.xml.template b/dev-tools/maven/solr/contrib/morphlines-cell/pom.xml.template
deleted file mode 100644
index 2849e90..0000000
--- a/dev-tools/maven/solr/contrib/morphlines-cell/pom.xml.template
+++ /dev/null
@@ -1,90 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.solr</groupId>
-    <artifactId>solr-parent</artifactId>
-    <version>@version@</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
-  <groupId>org.apache.solr</groupId>
-  <artifactId>solr-morphlines-cell</artifactId>
-  <packaging>jar</packaging>
-  <name>Apache Solr Cell Morphlines</name>
-  <description>Apache Solr - Cell Morphlines</description>
-  <properties>
-    <module-directory>solr/contrib/morphlines-cell</module-directory>
-    <relative-top-level>../../../..</relative-top-level>
-    <module-path>${relative-top-level}/${module-directory}</module-path>
-  </properties>
-  <scm>
-    <connection>scm:git:${vc-anonymous-base-url}</connection>
-    <developerConnection>scm:git:${vc-dev-base-url}</developerConnection>
-    <url>${vc-browse-base-url};f=${module-directory}</url>
-  </scm>
-  <dependencies>
-    <dependency>
-      <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <!-- This dependency cannot be put into solr-parent, because local        -->
-      <!-- dependencies are always ordered before inherited dependencies.       -->
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-test-framework</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.solr</groupId>
-      <artifactId>solr-test-framework</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.solr</groupId>
-      <artifactId>solr-morphlines-core</artifactId>
-      <version>${project.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-@solr-morphlines-cell.internal.dependencies@
-@solr-morphlines-cell.external.dependencies@
-@solr-morphlines-cell.internal.test.dependencies@
-@solr-morphlines-cell.external.test.dependencies@
-  </dependencies>
-  <build>
-    <sourceDirectory>${module-path}/src/java</sourceDirectory>
-    <testSourceDirectory>${module-path}/src/test</testSourceDirectory>
-    <testResources>
-      <testResource>
-        <directory>${module-path}/src/test-files</directory>
-      </testResource>
-      <testResource>
-        <!-- TODO: This is a hack, because the shared test-files folder seems not to be
-          included by the dependency, maybe because the dependency test-jar is not unpacked? -->
-        <directory>${module-path}/../morphlines-core/src/test-files</directory>
-      </testResource>
-      <testResource>
-        <directory>${top-level}/dev-tools/maven/solr</directory>
-        <includes>
-          <include>maven.testlogging.properties</include>
-        </includes>
-      </testResource>
-    </testResources>
-  </build>
-</project>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/maven/solr/contrib/morphlines-core/pom.xml.template
----------------------------------------------------------------------
diff --git a/dev-tools/maven/solr/contrib/morphlines-core/pom.xml.template b/dev-tools/maven/solr/contrib/morphlines-core/pom.xml.template
deleted file mode 100644
index a14707d..0000000
--- a/dev-tools/maven/solr/contrib/morphlines-core/pom.xml.template
+++ /dev/null
@@ -1,91 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.solr</groupId>
-    <artifactId>solr-parent</artifactId>
-    <version>@version@</version>
-    <relativePath>../../pom.xml</relativePath>
-  </parent>
-  <groupId>org.apache.solr</groupId>
-  <artifactId>solr-morphlines-core</artifactId>
-  <packaging>jar</packaging>
-  <name>Apache Solr Morphlines Core</name>
-  <description>Apache Solr - Morphlines Core</description>
-  <properties>
-    <module-directory>solr/contrib/morphlines-core</module-directory>
-    <relative-top-level>../../../..</relative-top-level>
-    <module-path>${relative-top-level}/${module-directory}</module-path>
-  </properties>
-  <scm>
-    <connection>scm:git:${vc-anonymous-base-url}</connection>
-    <developerConnection>scm:git:${vc-dev-base-url}</developerConnection>
-    <url>${vc-browse-base-url};f=${module-directory}</url>
-  </scm>
-  <dependencies>
-    <dependency>
-      <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <!-- This dependency cannot be put into solr-parent, because local        -->
-      <!-- dependencies are always ordered before inherited dependencies.       -->
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-test-framework</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.solr</groupId>
-      <artifactId>solr-test-framework</artifactId>
-      <scope>test</scope>
-    </dependency>
-@solr-morphlines-core.internal.dependencies@
-@solr-morphlines-core.external.dependencies@
-@solr-morphlines-core.internal.test.dependencies@
-@solr-morphlines-core.external.test.dependencies@
-  </dependencies>
-  <build>
-    <sourceDirectory>${module-path}/src/java</sourceDirectory>
-    <testSourceDirectory>${module-path}/src/test</testSourceDirectory>
-    <testResources>
-      <testResource>
-        <directory>${module-path}/src/test-files</directory>
-      </testResource>
-      <testResource>
-        <directory>${top-level}/dev-tools/maven/solr</directory>
-        <includes>
-          <include>maven.testlogging.properties</include>
-        </includes>
-      </testResource>
-    </testResources>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>test-jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/dev-tools/maven/solr/contrib/pom.xml.template
----------------------------------------------------------------------
diff --git a/dev-tools/maven/solr/contrib/pom.xml.template b/dev-tools/maven/solr/contrib/pom.xml.template
index 20cbac5..8159ecc 100644
--- a/dev-tools/maven/solr/contrib/pom.xml.template
+++ b/dev-tools/maven/solr/contrib/pom.xml.template
@@ -39,9 +39,6 @@
     <module>extraction</module>
     <module>langid</module>
     <module>ltr</module>
-    <module>morphlines-cell</module>
-    <module>morphlines-core</module>
-    <module>map-reduce</module>
     <module>uima</module>
     <module>velocity</module>
   </modules>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/lucene/ivy-ignore-conflicts.properties
----------------------------------------------------------------------
diff --git a/lucene/ivy-ignore-conflicts.properties b/lucene/ivy-ignore-conflicts.properties
index 34b6bca..3e80311 100644
--- a/lucene/ivy-ignore-conflicts.properties
+++ b/lucene/ivy-ignore-conflicts.properties
@@ -10,6 +10,5 @@
 # trigger a conflict) when the ant check-lib-versions target is run.
 
 /com.google.guava/guava = 16.0.1
-/com.google.inject/guice=4.0-beta5
 /javax.servlet/servlet-api = 2.5, 3.0-alpha-1
 /org.ow2.asm/asm = 5.0_BETA
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/lucene/ivy-versions.properties
----------------------------------------------------------------------
diff --git a/lucene/ivy-versions.properties b/lucene/ivy-versions.properties
index 7f57fed..6bd3f8d 100644
--- a/lucene/ivy-versions.properties
+++ b/lucene/ivy-versions.properties
@@ -3,7 +3,6 @@
 # when the lexical sort check is performed by the ant check-lib-versions target.
 
 /antlr/antlr = 2.7.7
-/aopalliance/aopalliance = 1.0
 /com.adobe.xmp/xmpcore = 5.1.2
 
 com.carrotsearch.randomizedtesting.version = 2.5.0
@@ -26,10 +25,6 @@ com.fasterxml.jackson.core.version = 2.5.4
 
 /com.google.guava/guava = 14.0.1
 
-com.google.inject.guice.version = 3.0
-/com.google.inject.extensions/guice-servlet = ${com.google.inject.guice.version}
-/com.google.inject/guice = ${com.google.inject.guice.version}
-
 /com.google.protobuf/protobuf-java = 3.1.0
 /com.googlecode.juniversalchardet/juniversalchardet = 1.0.3
 /com.googlecode.mp4parser/isoparser = 1.1.18
@@ -37,24 +32,14 @@ com.google.inject.guice.version = 3.0
 /com.ibm.icu/icu4j = 56.1
 /com.pff/java-libpst = 0.8.1
 
-com.rometools.version = 1.6.1
-/com.rometools/rome = ${com.rometools.version}
-
 com.sun.jersey.version = 1.9
-/com.sun.jersey.contribs/jersey-guice = ${com.sun.jersey.version}
-/com.sun.jersey/jersey-bundle = ${com.sun.jersey.version}
 /com.sun.jersey/jersey-core = ${com.sun.jersey.version}
-/com.sun.jersey/jersey-json = ${com.sun.jersey.version}
 /com.sun.jersey/jersey-server = ${com.sun.jersey.version}
 
 /com.sun.mail/gimap = 1.5.1
 /com.sun.mail/javax.mail = 1.5.1
 
-/com.sun.xml.bind/jaxb-impl = 2.2.3-1
-
 /com.tdunning/t-digest = 3.1
-/com.thoughtworks.paranamer/paranamer = 2.3
-/com.typesafe/config = 1.0.2
 /commons-beanutils/commons-beanutils = 1.8.3
 /commons-cli/commons-cli = 1.2
 /commons-codec/commons-codec = 1.10
@@ -74,7 +59,6 @@ io.dropwizard.metrics.version = 3.1.2
 /io.dropwizard.metrics/metrics-core = ${io.dropwizard.metrics.version}
 /io.dropwizard.metrics/metrics-ganglia = ${io.dropwizard.metrics.version}
 /io.dropwizard.metrics/metrics-graphite = ${io.dropwizard.metrics.version}
-/io.dropwizard.metrics/metrics-healthchecks = ${io.dropwizard.metrics.version}
 /io.dropwizard.metrics/metrics-jetty9 = ${io.dropwizard.metrics.version}
 /io.dropwizard.metrics/metrics-jvm = ${io.dropwizard.metrics.version}
 
@@ -82,7 +66,6 @@ io.netty.netty-all.version = 4.0.36.Final
 /io.netty/netty-all = ${io.netty.netty-all.version}
 
 /javax.activation/activation = 1.1.1
-/javax.inject/javax.inject= 1
 /javax.servlet/javax.servlet-api = 3.1.0
 /javax.servlet/servlet-api = 2.4
 /jdom/jdom = 1.0
@@ -95,14 +78,11 @@ io.netty.netty-all.version = 4.0.36.Final
 /net.bytebuddy/byte-buddy = 1.6.2
 /net.hydromatic/eigenbase-properties = 1.1.5
 /net.sf.ehcache/ehcache-core = 2.4.4
-/net.sf.saxon/Saxon-HE = 9.6.0-2
-/net.sourceforge.argparse4j/argparse4j = 0.4.3
 /net.sourceforge.jmatio/jmatio = 1.0
 /net.sourceforge.nekohtml/nekohtml = 1.9.17
 /org.antlr/antlr4-runtime = 4.5.1-1
 
 /org.apache.ant/ant = 1.8.2
-/org.apache.avro/avro = 1.7.5
 
 org.apache.calcite.avatica.version = 1.9.0
 /org.apache.calcite.avatica/avatica-core = ${org.apache.calcite.avatica.version}
@@ -160,23 +140,7 @@ org.apache.hadoop.version = 2.7.2
 /org.apache.hadoop/hadoop-auth = ${org.apache.hadoop.version}
 /org.apache.hadoop/hadoop-common = ${org.apache.hadoop.version}
 /org.apache.hadoop/hadoop-hdfs = ${org.apache.hadoop.version}
-
-/org.apache.hadoop/hadoop-mapreduce-client-app = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-mapreduce-client-common = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-mapreduce-client-core = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-mapreduce-client-hs = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-mapreduce-client-jobclient = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-mapreduce-client-shuffle = ${org.apache.hadoop.version}
 /org.apache.hadoop/hadoop-minikdc = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-yarn-api = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-yarn-client = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-yarn-common = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-yarn-server-applicationhistoryservice = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-yarn-server-common = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-yarn-server-nodemanager = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-yarn-server-resourcemanager = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-yarn-server-tests = ${org.apache.hadoop.version}
-/org.apache.hadoop/hadoop-yarn-server-web-proxy = ${org.apache.hadoop.version}
 
 /org.apache.htrace/htrace-core = 3.2.0-incubating
 
@@ -193,7 +157,6 @@ org.apache.james.apache.mime4j.version = 0.7.2
 /org.apache.james/apache-mime4j-dom = ${org.apache.james.apache.mime4j.version}
 
 /org.apache.mina/mina-core = 2.0.0-M5
-/org.apache.mrunit/mrunit = 1.0.0
 
 org.apache.pdfbox.version = 2.0.1
 /org.apache.pdfbox/fontbox = ${org.apache.pdfbox.version}
@@ -228,7 +191,6 @@ org.apache.uima.version = 2.3.1
 
 org.bouncycastle.version = 1.45
 /org.bouncycastle/bcmail-jdk15 = ${org.bouncycastle.version}
-/org.bouncycastle/bcpkix-jdk15on = 1.47
 /org.bouncycastle/bcprov-jdk15 = ${org.bouncycastle.version}
 
 /org.carrot2.attributes/attributes-binder = 1.3.1
@@ -245,7 +207,6 @@ org.carrot2.morfologik.version = 2.1.1
 
 org.codehaus.jackson.version = 1.9.13
 /org.codehaus.jackson/jackson-core-asl = ${org.codehaus.jackson.version}
-/org.codehaus.jackson/jackson-jaxrs = ${org.codehaus.jackson.version}
 /org.codehaus.jackson/jackson-mapper-asl = ${org.codehaus.jackson.version}
 
 org.codehaus.janino.version = 2.7.6
@@ -271,29 +232,10 @@ org.eclipse.jetty.version = 9.3.14.v20161028
 /org.eclipse.jetty/jetty-webapp = ${org.eclipse.jetty.version}
 /org.eclipse.jetty/jetty-xml = ${org.eclipse.jetty.version}
 
-/org.fusesource.leveldbjni/leveldbjni = 1.8
-
 org.gagravarr.vorbis.java.version = 0.8
 /org.gagravarr/vorbis-java-core = ${org.gagravarr.vorbis.java.version}
 /org.gagravarr/vorbis-java-tika = ${org.gagravarr.vorbis.java.version}
 
-org.iq80.leveldb.version = 0.7
-/org.iq80.leveldb/leveldb = ${org.iq80.leveldb.version}
-/org.iq80.leveldb/leveldb-api = ${org.iq80.leveldb.version}
-
-org.jboss.netty.netty.version = 3.2.4.Final
-/org.jboss.netty/netty = ${org.jboss.netty.netty.version}
-
-org.kitesdk.kite-morphlines.version = 1.1.0
-/org.kitesdk/kite-morphlines-avro = ${org.kitesdk.kite-morphlines.version}
-/org.kitesdk/kite-morphlines-core = ${org.kitesdk.kite-morphlines.version}
-/org.kitesdk/kite-morphlines-hadoop-sequencefile = ${org.kitesdk.kite-morphlines.version}
-/org.kitesdk/kite-morphlines-json = ${org.kitesdk.kite-morphlines.version}
-/org.kitesdk/kite-morphlines-saxon = ${org.kitesdk.kite-morphlines.version}
-/org.kitesdk/kite-morphlines-tika-core = ${org.kitesdk.kite-morphlines.version}
-/org.kitesdk/kite-morphlines-tika-decompress = ${org.kitesdk.kite-morphlines.version}
-/org.kitesdk/kite-morphlines-twitter = ${org.kitesdk.kite-morphlines.version}
-
 /org.locationtech.spatial4j/spatial4j = 0.6
 
 /org.mockito/mockito-core = 2.6.2
@@ -322,7 +264,6 @@ org.slf4j.version = 1.7.7
 /org.slf4j/slf4j-log4j12 = ${org.slf4j.version}
 
 /org.tukaani/xz = 1.5
-/org.xerial.snappy/snappy-java = 1.0.5
 /rome/rome = 1.0
 /xerces/xercesImpl = 2.9.1
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index e74e4ae..428bde4 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -104,6 +104,11 @@ Apache UIMA 2.3.1
 Apache ZooKeeper 3.4.6
 Jetty 9.3.14.v20161028
 
+Upgrade Notes
+----------------------
+
+* Solr contribs map-reduce, morphlines-core and morphlines-cell have been removed.
+
 Detailed Change List
 ----------------------
 
@@ -128,6 +133,11 @@ Bug Fixes
 * SOLR-10281: ADMIN_PATHS is duplicated in two places and inconsistent. This can cause automatic
   retries to /admin/metrics handler by the CloudSolrClient. (shalin)
 
+Other Changes
+----------------------
+
+* SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell. (Steve Rowe)
+
 ==================  6.5.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/README.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/README.txt b/solr/contrib/map-reduce/README.txt
deleted file mode 100644
index a655aca..0000000
--- a/solr/contrib/map-reduce/README.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Apache Solr MapReduce
-
-*Experimental* - This contrib is currently subject to change in ways that may 
-break back compatibility.
-
-The Solr MapReduce contrib provides an a mapreduce job that allows you to build
-Solr indexes and optionally merge them into a live Solr cluster.
-
-Example:
-
-# Build an index with map-reduce and deploy it to SolrCloud
-
-source $solr_distrib/example/scripts/map-reduce/set-map-reduce-classpath.sh
-
-$hadoop_distrib/bin/hadoop --config $hadoop_conf_dir jar \
-$solr_distrib/dist/solr-map-reduce-*.jar -D 'mapred.child.java.opts=-Xmx500m' \
--libjars "$HADOOP_LIBJAR" --morphline-file readAvroContainer.conf \
---zk-host 127.0.0.1:9983 --output-dir hdfs://127.0.0.1:8020/outdir \
---collection $collection --log4j log4j.properties --go-live \
---verbose "hdfs://127.0.0.1:8020/indir"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/build.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/build.xml b/solr/contrib/map-reduce/build.xml
deleted file mode 100644
index d6aefc7..0000000
--- a/solr/contrib/map-reduce/build.xml
+++ /dev/null
@@ -1,157 +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.
- -->
-
-<project name="solr-map-reduce" default="default">
-
-  <description>
-    Solr map-reduce index construction.
-  </description>
-
-  <!-- <property name="name" value="MapReduceIndexerTool" /> -->
-
-  <import file="../contrib-build.xml"/>
-  
-  <solr-contrib-uptodate name="extraction"
-                         property="solr-extraction.uptodate" 
-                         classpath.property="solr-cell.jar"/>
-  
-  <target name="compile-solr-extraction" unless="solr-extraction.uptodate">
-   <ant dir="${common-solr.dir}/contrib/extraction" target="compile-core" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <solr-contrib-uptodate name="morphlines-core" 
-                         property="solr-morphlines-core.uptodate"/>
-  
-  <target name="compile-morphlines-core" unless="solr-morphlines-core.uptodate">
-   <ant dir="${common-solr.dir}/contrib/morphlines-core" target="compile-core" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <solr-contrib-uptodate name="morphlines-cell" 
-                         property="solr-morphlines-cell.uptodate"/>
-  
-  <target name="compile-morphlines-cell" unless="solr-morphlines-cell.uptodate">
-   <ant dir="${common-solr.dir}/contrib/morphlines-cell" target="compile-core" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="resolve-extraction-libs">
-    <ant dir="${common-solr.dir}/contrib/extraction" target="resolve" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-
-  <target name="resolve-morphlines-core-libs">
-    <ant dir="${common-solr.dir}/contrib/morphlines-core" target="resolve" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="resolve-morphlines-cell-libs">
-    <ant dir="${common-solr.dir}/contrib/morphlines-cell" target="resolve" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-
-  <path id="classpath.additions">
-    <pathelement location="${common-solr.dir}/build/contrib/solr-cell/classes/java"/>
-    <fileset dir="${common-solr.dir}/contrib/extraction/lib" excludes="${common.classpath.excludes}"/>
-    <pathelement location="${common-solr.dir}/build/contrib/solr-morphlines-core/classes/java"/>
-    <fileset dir="${common-solr.dir}/contrib/morphlines-core/lib" excludes="${common.classpath.excludes}"/>
-    <pathelement location="${common-solr.dir}/build/contrib/solr-morphlines-cell/classes/java"/>
-    <fileset dir="${common-solr.dir}/contrib/morphlines-cell/lib" excludes="${common.classpath.excludes}"/>
-  </path>
-
-  <path id="classpath">
-    <path refid="solr.base.classpath"/>
-    <path refid="classpath.additions"/>
-  </path>
-  
-  <path id="test.classpath">
-    <path refid="solr.test.base.classpath"/>
-    <path refid="classpath.additions"/>
-    <pathelement location="${common-solr.dir}/build/contrib/solr-morphlines-core/classes/test"/>
-    <pathelement location="${common-solr.dir}/contrib/morphlines-core/src/test-files"/>
-    <fileset dir="${common-solr.dir}/contrib/morphlines-core/test-lib" excludes="${common.classpath.excludes}"/>
-  </path>
-
-  <path id="javadoc.classpath">
-    <path refid="junit-path"/>
-    <path refid="classpath"/>
-    <pathelement location="${ant.home}/lib/ant.jar"/>
-    <fileset dir=".">
-      <exclude name="build/**/*.jar"/>
-      <include name="**/lib/*.jar"/> 
-    </fileset>
-  </path>
-  
-  <!-- TODO: make this nicer like lucene? -->
-  <target name="javadocs" depends="compile-core,define-lucene-javadoc-url,lucene-javadocs,javadocs-solr-core,javadocs-extraction,javadocs-morphlines-core,javadocs-morphlines-cell,check-javadocs-uptodate" unless="javadocs-uptodate-${name}">
-        <sequential>
-      <mkdir dir="${javadoc.dir}/${name}"/>
-      <solr-invoke-javadoc>
-        <solrsources>
-          <packageset dir="${src.dir}"/>
-        </solrsources>
-        <links>
-          <link href="../solr-solrj"/>
-          <link href="../solr-morphlines-core"/>
-          <link href="../solr-cell"/>
-        </links>
-      </solr-invoke-javadoc>
-      <solr-jarify basedir="${javadoc.dir}/${name}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
-     </sequential>
-  </target>
-  
-  <target name="javadocs-extraction">
-    <ant dir="${common-solr.dir}/contrib/extraction" target="javadocs" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="javadocs-morphlines-core">
-    <ant dir="${common-solr.dir}/contrib/morphlines-core" target="javadocs" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="javadocs-morphlines-cell">
-    <ant dir="${common-solr.dir}/contrib/morphlines-cell" target="javadocs" inheritAll="false">
-     <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="compile-core" depends="resolve-extraction-libs, resolve-morphlines-core-libs, resolve-morphlines-cell-libs, compile-solr-extraction, compile-morphlines-core, compile-morphlines-cell, solr-contrib-build.compile-core"/>
-
-  <property name="main.class" value="org.apache.solr.hadoop.MapReduceIndexerTool" />
-  <target name="jar-core" depends="compile-core">
-    <solr-jarify>
-      <solr-jarify-additional-manifest-attributes>
-        <attribute name="Main-Class" value="${main.class}"/>
-      </solr-jarify-additional-manifest-attributes>
-    </solr-jarify>
-  </target>
-
-  <target name="dist" depends="common-solr.dist"/>
-
-</project>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/ivy.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/ivy.xml b/solr/contrib/map-reduce/ivy.xml
deleted file mode 100644
index d2e158e..0000000
--- a/solr/contrib/map-reduce/ivy.xml
+++ /dev/null
@@ -1,37 +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.    
--->
-<ivy-module version="2.0">
-  <info organisation="org.apache.solr" module="map-reduce" />
-  <configurations defaultconfmapping="compile->master;test->master">
-    <conf name="compile" transitive="false" />
-    <conf name="test" transitive="false" />
-  </configurations>
-
-  <dependencies>
-    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-core" rev="${/org.apache.hadoop/hadoop-mapreduce-client-core}" conf="compile" />
-    <dependency org="net.sourceforge.argparse4j" name="argparse4j" rev="${/net.sourceforge.argparse4j/argparse4j}" conf="compile" />
-    <dependency org="org.kitesdk" name="kite-morphlines-saxon" rev="${/org.kitesdk/kite-morphlines-saxon}" conf="compile" />
-    <dependency org="net.sf.saxon" name="Saxon-HE" rev="${/net.sf.saxon/Saxon-HE}" conf="compile" />
-    <dependency org="org.kitesdk" name="kite-morphlines-hadoop-sequencefile" rev="${/org.kitesdk/kite-morphlines-hadoop-sequencefile}" conf="compile" />
-    <dependency org="org.jboss.netty" name="netty" rev="${/org.jboss.netty/netty}" conf="test" />
-    <dependency org="org.bouncycastle" name="bcpkix-jdk15on" rev="${/org.bouncycastle/bcpkix-jdk15on}" conf="test"/>
-    <dependency org="com.rometools" name="rome" rev="${/com.rometools/rome}" conf="test"/>
-    <exclude org="*" ext="*" matcher="regexp" type="${ivy.exclude.types}" />
-  </dependencies>
-</ivy-module>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/assembly/hadoop-job.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/assembly/hadoop-job.xml b/solr/contrib/map-reduce/src/java/assembly/hadoop-job.xml
deleted file mode 100644
index 1640b6f..0000000
--- a/solr/contrib/map-reduce/src/java/assembly/hadoop-job.xml
+++ /dev/null
@@ -1,39 +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. -->
-
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0
-                        http://maven.apache.org/xsd/assembly-1.1.0.xsd">
-
-  <id>job</id>
-  <formats>
-    <format>jar</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-   <dependencySets>
-    <dependencySet>
-      <unpack>false</unpack>
-      <scope>runtime</scope>
-      <outputDirectory>lib</outputDirectory>
-      <excludes>
-        <exclude>${groupId}:${artifactId}</exclude>
-      </excludes>
-    </dependencySet>
-    <dependencySet>
-      <unpack>true</unpack>
-      <includes>
-        <include>${groupId}:${artifactId}</include>
-      </includes>
-    </dependencySet>
-  </dependencySets>
-</assembly>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/AlphaNumericComparator.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/AlphaNumericComparator.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/AlphaNumericComparator.java
deleted file mode 100644
index f596a88..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/AlphaNumericComparator.java
+++ /dev/null
@@ -1,75 +0,0 @@
-//The MIT License
-//
-// Copyright (c) 2003 Ron Alford, Mike Grove, Bijan Parsia, Evren Sirin
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-// IN THE SOFTWARE.
-package org.apache.solr.hadoop;
-
-import java.util.Comparator;
-
-/**
- * This is a comparator to perform a mix of alphabetical+numeric comparison. For
- * example, if there is a list {"test10", "test2", "test150", "test25", "test1"}
- * then what we generally expect from the ordering is the result {"test1",
- * "test2", "test10", "test25", "test150"}. However, standard lexigraphic
- * ordering does not do that and "test10" comes before "test2". This class is
- * provided to overcome that problem. This functionality is useful to sort the
- * benchmark files (like the ones in in DL-benchmark-suite) from smallest to the
- * largest. Comparisons are done on the String values retuned by toString() so
- * care should be taken when this comparator is used to sort arbitrary Java
- * objects.
- * 
- */
-final class AlphaNumericComparator implements Comparator {
-
-    public AlphaNumericComparator() {
-    }
-
-    public int compare(Object o1, Object o2) {
-        String s1 = o1.toString();
-        String s2 = o2.toString();
-        int n1 = s1.length(), n2 = s2.length();
-        int i1 = 0, i2 = 0;
-        while (i1 < n1 && i2 < n2) {
-            int p1 = i1;
-            int p2 = i2;
-            char c1 = s1.charAt(i1++);
-            char c2 = s2.charAt(i2++);
-            if(c1 != c2) {
-                if (Character.isDigit(c1) && Character.isDigit(c2)) {
-                    int value1 = 0, value2 = 0;
-                    while (i1 < n1 && Character.isDigit(c1 = s1.charAt(i1))) {
-                      i1++;
-                    }
-                    value1 = Integer.parseInt(s1.substring(p1, i1));
-                    while (i2 < n2 && Character.isDigit(c2 = s2.charAt(i2))) {
-                      i2++;
-                    }
-                    value2 = Integer.parseInt(s2.substring(p2, i2));                    
-                    if (value1 != value2) {
-                      return value1 - value2;
-                    }
-                }
-                return c1 - c2;
-            }
-        }
-
-        return n1 - n2;
-    }
-}
\ No newline at end of file


[33/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10249: Refactor IndexFetcher to return detailed result

Posted by cp...@apache.org.
SOLR-10249: Refactor IndexFetcher to return detailed result


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

Branch: refs/heads/jira/solr-6203
Commit: 8664f1f38a3741a7aff5988221cb7a1a7dda9e5b
Parents: fec87fc
Author: David Smiley <ds...@apache.org>
Authored: Fri Mar 24 22:46:24 2017 -0400
Committer: David Smiley <ds...@apache.org>
Committed: Fri Mar 24 22:46:24 2017 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  2 +
 .../org/apache/solr/cloud/RecoveryStrategy.java |  2 +-
 .../apache/solr/handler/CdcrRequestHandler.java |  2 +-
 .../org/apache/solr/handler/IndexFetcher.java   | 81 ++++++++++++++++----
 .../apache/solr/handler/ReplicationHandler.java | 10 +--
 5 files changed, 77 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8664f1f3/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 428bde4..f2937bf 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -138,6 +138,8 @@ Other Changes
 
 * SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell. (Steve Rowe)
 
+* SOLR-10249: Refactor IndexFetcher.doFetch() to return a more detailed result. (Jeff Miller via David Smiley)
+
 ==================  6.5.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8664f1f3/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
index cb6c69c..2cbc394 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
@@ -219,7 +219,7 @@ public class RecoveryStrategy extends Thread implements Closeable {
     solrParams.set(ReplicationHandler.MASTER_URL, leaderUrl);
     
     if (isClosed()) return; // we check closed on return
-    boolean success = replicationHandler.doFetch(solrParams, false);
+    boolean success = replicationHandler.doFetch(solrParams, false).getSuccessful();
     
     if (!success) {
       throw new SolrException(ErrorCode.SERVER_ERROR, "Replication for recovery failed.");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8664f1f3/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
index fcc4bbe..ba174f9 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
@@ -754,7 +754,7 @@ public class CdcrRequestHandler extends RequestHandlerBase implements SolrCoreAw
         // we do not want the raw tlog files from the source
         solrParams.set(ReplicationHandler.TLOG_FILES, false);
 
-        success = replicationHandler.doFetch(solrParams, false);
+        success = replicationHandler.doFetch(solrParams, false).getSuccessful();
 
         // this is required because this callable can race with HttpSolrCall#destroy
         // which clears the request info.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8664f1f3/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
index 33e8091..5efb6c5 100644
--- a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
+++ b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
@@ -104,6 +104,8 @@ import static org.apache.solr.common.params.CommonParams.JAVABIN;
 import static org.apache.solr.common.params.CommonParams.NAME;
 import static org.apache.solr.handler.ReplicationHandler.*;
 
+import com.google.common.base.Strings;
+
 /**
  * <p> Provides functionality of downloading changed index files as well as config files and a timer for scheduling fetches from the
  * master. </p>
@@ -161,6 +163,52 @@ public class IndexFetcher {
 
   private Integer soTimeout;
 
+  private static final String INTERRUPT_RESPONSE_MESSAGE = "Interrupted while waiting for modify lock";
+
+  public static class IndexFetchResult {
+    private final String message;
+    private final boolean successful;
+    private final Throwable exception;
+
+    public static final String FAILED_BY_INTERRUPT_MESSAGE = "Fetching index failed by interrupt";
+    public static final String FAILED_BY_EXCEPTION_MESSAGE = "Fetching index failed by exception";
+
+    /** pre-defined results */
+    public static final IndexFetchResult ALREADY_IN_SYNC = new IndexFetchResult("Local index commit is already in sync with peer", true, null);
+    public static final IndexFetchResult INDEX_FETCH_FAILURE = new IndexFetchResult("Fetching lastest index is failed", false, null);
+    public static final IndexFetchResult INDEX_FETCH_SUCCESS = new IndexFetchResult("Fetching latest index is successful", true, null);
+    public static final IndexFetchResult LOCK_OBTAIN_FAILED = new IndexFetchResult("Obtaining SnapPuller lock failed", false, null);
+    public static final IndexFetchResult MASTER_VERSION_ZERO = new IndexFetchResult("Index in peer is empty and never committed yet", true, null);
+    public static final IndexFetchResult NO_INDEX_COMMIT_EXIST = new IndexFetchResult("No IndexCommit in local index", false, null);
+    public static final IndexFetchResult PEER_INDEX_COMMIT_DELETED = new IndexFetchResult("No files to download because IndexCommit in peer was deleted", false, null);
+    public static final IndexFetchResult LOCAL_ACTIVITY_DURING_REPLICATION = new IndexFetchResult("Local index modification during replication", false, null);
+    public static final IndexFetchResult EXPECTING_NON_LEADER = new IndexFetchResult("Replicating from leader but I'm the shard leader", false, null);
+
+    IndexFetchResult(String message, boolean successful, Throwable exception) {
+      this.message = message;
+      this.successful = successful;
+      this.exception = exception;
+    }
+
+    /*
+     * @return exception thrown if failed by exception or interrupt, otherwise null
+     */
+    public Throwable getException() {
+      return this.exception;
+    }
+
+    /*
+     * @return true if index fetch was successful, false otherwise
+     */
+    public boolean getSuccessful() {
+      return this.successful;
+    }
+
+    public String getMessage() {
+      return this.message;
+    }
+  }
+
   private static HttpClient createHttpClient(SolrCore core, String httpBasicAuthUser, String httpBasicAuthPassword, boolean useCompression) {
     final ModifiableSolrParams httpClientParams = new ModifiableSolrParams();
     httpClientParams.set(HttpClientUtil.PROP_BASIC_AUTH_USER, httpBasicAuthUser);
@@ -274,7 +322,7 @@ public class IndexFetcher {
     }
   }
 
-  boolean fetchLatestIndex(boolean forceReplication) throws IOException, InterruptedException {
+  IndexFetchResult fetchLatestIndex(boolean forceReplication) throws IOException, InterruptedException {
     return fetchLatestIndex(forceReplication, false);
   }
 
@@ -287,7 +335,7 @@ public class IndexFetcher {
    * @return true on success, false if slave is already in sync
    * @throws IOException if an exception occurs
    */
-  boolean fetchLatestIndex(boolean forceReplication, boolean forceCoreReload) throws IOException, InterruptedException {
+  IndexFetchResult fetchLatestIndex(boolean forceReplication, boolean forceCoreReload) throws IOException, InterruptedException {
 
     boolean cleanupDone = false;
     boolean successfulInstall = false;
@@ -311,7 +359,7 @@ public class IndexFetcher {
         Replica replica = getLeaderReplica();
         CloudDescriptor cd = solrCore.getCoreDescriptor().getCloudDescriptor();
         if (cd.getCoreNodeName().equals(replica.getName())) {
-          return false;
+          return IndexFetchResult.EXPECTING_NON_LEADER;
         }
         masterUrl = replica.getCoreUrl();
         LOG.info("Updated masterUrl to " + masterUrl);
@@ -321,9 +369,16 @@ public class IndexFetcher {
       try {
         response = getLatestVersion();
       } catch (Exception e) {
-        LOG.error("Master at: " + masterUrl + " is not available. Index fetch failed. Exception: " + e.getMessage());
-        return false;
-      }
+        final String errorMsg = e.toString();
+        if (!Strings.isNullOrEmpty(errorMsg) && errorMsg.contains(INTERRUPT_RESPONSE_MESSAGE)) {
+            LOG.warn("Master at: " + masterUrl + " is not available. Index fetch failed by interrupt. Exception: " + errorMsg);
+            return new IndexFetchResult(IndexFetchResult.FAILED_BY_INTERRUPT_MESSAGE, false, e);
+        } else {
+            LOG.warn("Master at: " + masterUrl + " is not available. Index fetch failed by exception: " + errorMsg);
+            return new IndexFetchResult(IndexFetchResult.FAILED_BY_EXCEPTION_MESSAGE, false, e);
+        }
+    }
+
       long latestVersion = (Long) response.get(CMD_INDEX_VERSION);
       long latestGeneration = (Long) response.get(GENERATION);
 
@@ -339,7 +394,7 @@ public class IndexFetcher {
           searcherRefCounted = solrCore.getNewestSearcher(false);
           if (searcherRefCounted == null) {
             LOG.warn("No open searcher found - fetch aborted");
-            return false;
+            return IndexFetchResult.NO_INDEX_COMMIT_EXIST;
           }
           commit = searcherRefCounted.get().getIndexReader().getIndexCommit();
         } finally {
@@ -367,7 +422,7 @@ public class IndexFetcher {
 
         //there is nothing to be replicated
         successfulInstall = true;
-        return true;
+        return IndexFetchResult.MASTER_VERSION_ZERO;
       }
 
       // TODO: Should we be comparing timestamps (across machines) here?
@@ -375,14 +430,14 @@ public class IndexFetcher {
         //master and slave are already in sync just return
         LOG.info("Slave in sync with master.");
         successfulInstall = true;
-        return true;
+        return IndexFetchResult.ALREADY_IN_SYNC;
       }
       LOG.info("Starting replication process");
       // get the list of files first
       fetchFileList(latestGeneration);
       // this can happen if the commit point is deleted before we fetch the file list.
       if (filesToDownload.isEmpty()) {
-        return false;
+        return IndexFetchResult.PEER_INDEX_COMMIT_DELETED;
       }
       LOG.info("Number of files in latest index in master: " + filesToDownload.size());
       if (tlogFilesToDownload != null) {
@@ -561,14 +616,14 @@ public class IndexFetcher {
           LOG.warn(
               "Replication attempt was not successful - trying a full index replication reloadCore={}",
               reloadCore);
-          successfulInstall = fetchLatestIndex(true, reloadCore);
+          successfulInstall = fetchLatestIndex(true, reloadCore).getSuccessful();
         }
 
         markReplicationStop();
-        return successfulInstall;
+        return successfulInstall ? IndexFetchResult.INDEX_FETCH_SUCCESS : IndexFetchResult.INDEX_FETCH_FAILURE;
       } catch (ReplicationHandlerException e) {
         LOG.error("User aborted Replication");
-        return false;
+        return new IndexFetchResult(IndexFetchResult.FAILED_BY_EXCEPTION_MESSAGE, false, e);
       } catch (SolrException e) {
         throw e;
       } catch (InterruptedException e) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8664f1f3/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
index 4f6a408..98bf11a 100644
--- a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
@@ -90,6 +90,7 @@ import org.apache.solr.core.SolrEventListener;
 import org.apache.solr.core.backup.repository.BackupRepository;
 import org.apache.solr.core.backup.repository.LocalFileSystemRepository;
 import org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager;
+import org.apache.solr.handler.IndexFetcher.IndexFetchResult;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.search.SolrIndexSearcher;
@@ -392,10 +393,10 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
 
   private volatile IndexFetcher currentIndexFetcher;
 
-  public boolean doFetch(SolrParams solrParams, boolean forceReplication) {
+  public IndexFetchResult doFetch(SolrParams solrParams, boolean forceReplication) {
     String masterUrl = solrParams == null ? null : solrParams.get(MASTER_URL);
     if (!indexFetchLock.tryLock())
-      return false;
+      return IndexFetchResult.LOCK_OBTAIN_FAILED;
     try {
       if (masterUrl != null) {
         if (currentIndexFetcher != null && currentIndexFetcher != pollingIndexFetcher) {
@@ -411,17 +412,16 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
       if (currentIndexFetcher != pollingIndexFetcher) {
         currentIndexFetcher.destroy();
       }
+      return new IndexFetchResult(IndexFetchResult.FAILED_BY_EXCEPTION_MESSAGE, false, e);
     } finally {
       if (pollingIndexFetcher != null) {
        if( currentIndexFetcher != pollingIndexFetcher) {
          currentIndexFetcher.destroy();
        }
-        
         currentIndexFetcher = pollingIndexFetcher;
       }
       indexFetchLock.unlock();
     }
-    return false;
   }
 
   boolean isReplicating() {
@@ -1151,7 +1151,7 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
       try {
         LOG.debug("Polling for index modifications");
         markScheduledExecutionStart();
-        boolean pollSuccess = doFetch(null, false);
+        boolean pollSuccess = doFetch(null, false).getSuccessful();
         if (pollListener != null) pollListener.onComplete(core, pollSuccess);
       } catch (Exception e) {
         LOG.error("Exception in fetching index", e);


[17/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stoptags_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stoptags_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stoptags_ja.txt
deleted file mode 100644
index 71b7508..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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
-#\u540d\u8a5e
-#
-#  noun-common: Common nouns or nouns where the sub-classification is undefined
-#\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-proper: Proper nouns where the sub-classification is undefined 
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e
-#
-#  noun-proper-misc: miscellaneous proper nouns
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-proper-person: Personal names where the sub-classification is undefined
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d
-#
-#  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. \u304a\u5e02\u306e\u65b9
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u4e00\u822c
-#
-#  noun-proper-person-surname: Mainly Japanese surnames.
-#  e.g. \u5c71\u7530
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u59d3
-#
-#  noun-proper-person-given_name: Mainly Japanese given names.
-#  e.g. \u592a\u90ce
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u4eba\u540d-\u540d
-#
-#  noun-proper-organization: Names representing organizations.
-#  e.g. \u901a\u7523\u7701, NHK
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u7d44\u7e54
-#
-#  noun-proper-place: Place names where the sub-classification is undefined
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df
-#
-#  noun-proper-place-misc: Place names excluding countries.
-#  e.g. \u30a2\u30b8\u30a2, \u30d0\u30eb\u30bb\u30ed\u30ca, \u4eac\u90fd
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df-\u4e00\u822c
-#
-#  noun-proper-place-country: Country names. 
-#  e.g. \u65e5\u672c, \u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2
-#\u540d\u8a5e-\u56fa\u6709\u540d\u8a5e-\u5730\u57df-\u56fd
-#
-#  noun-pronoun: Pronouns where the sub-classification is undefined
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e
-#
-#  noun-pronoun-misc: miscellaneous pronouns: 
-#  e.g. \u305d\u308c, \u3053\u3053, \u3042\u3044\u3064, \u3042\u306a\u305f, \u3042\u3061\u3053\u3061, \u3044\u304f\u3064, \u3069\u3053\u304b, \u306a\u306b, \u307f\u306a\u3055\u3093, \u307f\u3093\u306a, \u308f\u305f\u304f\u3057, \u308f\u308c\u308f\u308c
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e-\u4e00\u822c
-#
-#  noun-pronoun-contraction: Spoken language contraction made by combining a 
-#  pronoun and the particle 'wa'.
-#  e.g. \u3042\u308a\u3083, \u3053\u308a\u3083, \u3053\u308a\u3083\u3042, \u305d\u308a\u3083, \u305d\u308a\u3083\u3042 
-#\u540d\u8a5e-\u4ee3\u540d\u8a5e-\u7e2e\u7d04
-#
-#  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. \u91d1\u66dc, \u4e00\u6708, \u5348\u5f8c, \u5c11\u91cf
-#\u540d\u8a5e-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-verbal: Nouns that take arguments with case and can appear followed by 
-#  'suru' and related verbs (\u3059\u308b, \u3067\u304d\u308b, \u306a\u3055\u308b, \u304f\u3060\u3055\u308b)
-#  e.g. \u30a4\u30f3\u30d7\u30c3\u30c8, \u611b\u7740, \u60aa\u5316, \u60aa\u6226\u82e6\u95d8, \u4e00\u5b89\u5fc3, \u4e0b\u53d6\u308a
-#\u540d\u8a5e-\u30b5\u5909\u63a5\u7d9a
-#
-#  noun-adjective-base: The base form of adjectives, words that appear before \u306a ("na")
-#  e.g. \u5065\u5eb7, \u5b89\u6613, \u99c4\u76ee, \u3060\u3081
-#\u540d\u8a5e-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-numeric: Arabic numbers, Chinese numerals, and counters like \u4f55 (\u56de), \u6570.
-#  e.g. 0, 1, 2, \u4f55, \u6570, \u5e7e
-#\u540d\u8a5e-\u6570
-#
-#  noun-affix: noun affixes where the sub-classification is undefined
-#\u540d\u8a5e-\u975e\u81ea\u7acb
-#
-#  noun-affix-misc: Of adnominalizers, the case-marker \u306e ("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. \u3042\u304b\u3064\u304d, \u6681, \u304b\u3044, \u7532\u6590, \u6c17, \u304d\u3089\u3044, \u5acc\u3044, \u304f\u305b, \u7656, \u3053\u3068, \u4e8b, \u3054\u3068, \u6bce, \u3057\u3060\u3044, \u6b21\u7b2c, 
-#       \u9806, \u305b\u3044, \u6240\u70ba, \u3064\u3044\u3067, \u5e8f\u3067, \u3064\u3082\u308a, \u7a4d\u3082\u308a, \u70b9, \u3069\u3053\u308d, \u306e, \u306f\u305a, \u7b48, \u306f\u305a\u307f, \u5f3e\u307f, 
-#       \u62cd\u5b50, \u3075\u3046, \u3075\u308a, \u632f\u308a, \u307b\u3046, \u65b9, \u65e8, \u3082\u306e, \u7269, \u8005, \u3086\u3048, \u6545, \u3086\u3048\u3093, \u6240\u4ee5, \u308f\u3051, \u8a33,
-#       \u308f\u308a, \u5272\u308a, \u5272, \u3093-\u53e3\u8a9e/, \u3082\u3093-\u53e3\u8a9e/
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u4e00\u822c
-#
-#  noun-affix-adverbial: noun affixes that that can behave as adverbs.
-#  e.g. \u3042\u3044\u3060, \u9593, \u3042\u3052\u304f, \u6319\u3052\u53e5, \u3042\u3068, \u5f8c, \u4f59\u308a, \u4ee5\u5916, \u4ee5\u964d, \u4ee5\u5f8c, \u4ee5\u4e0a, \u4ee5\u524d, \u4e00\u65b9, \u3046\u3048, 
-#       \u4e0a, \u3046\u3061, \u5185, \u304a\u308a, \u6298\u308a, \u304b\u304e\u308a, \u9650\u308a, \u304d\u308a, \u3063\u304d\u308a, \u7d50\u679c, \u3053\u308d, \u9803, \u3055\u3044, \u969b, \u6700\u4e2d, \u3055\u306a\u304b, 
-#       \u6700\u4e2d, \u3058\u305f\u3044, \u81ea\u4f53, \u305f\u3073, \u5ea6, \u305f\u3081, \u70ba, \u3064\u3069, \u90fd\u5ea6, \u3068\u304a\u308a, \u901a\u308a, \u3068\u304d, \u6642, \u3068\u3053\u308d, \u6240, 
-#       \u3068\u305f\u3093, \u9014\u7aef, \u306a\u304b, \u4e2d, \u306e\u3061, \u5f8c, \u3070\u3042\u3044, \u5834\u5408, \u65e5, \u3076\u3093, \u5206, \u307b\u304b, \u4ed6, \u307e\u3048, \u524d, \u307e\u307e, 
-#       \u5118, \u4fad, \u307f\u304e\u308a, \u77e2\u5148
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-affix-aux: noun affixes treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars 
-#  with the stem \u3088\u3046(\u3060) ("you(da)").
-#  e.g.  \u3088\u3046, \u3084\u3046, \u69d8 (\u3088\u3046)
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#  
-#  noun-affix-adjective-base: noun affixes that can connect to the indeclinable
-#  connection form \u306a (aux "da").
-#  e.g. \u307f\u305f\u3044, \u3075\u3046
-#\u540d\u8a5e-\u975e\u81ea\u7acb-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-special: special nouns where the sub-classification is undefined.
-#\u540d\u8a5e-\u7279\u6b8a
-#
-#  noun-special-aux: The \u305d\u3046\u3060 ("souda") stem form that is used for reporting news, is 
-#  treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars, and attach to the base 
-#  form of inflectional words.
-#  e.g. \u305d\u3046
-#\u540d\u8a5e-\u7279\u6b8a-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix: noun suffixes where the sub-classification is undefined.
-#\u540d\u8a5e-\u63a5\u5c3e
-#
-#  noun-suffix-misc: Of the nouns or stem forms of other parts of speech that connect 
-#  to \u30ac\u30eb or \u30bf\u30a4 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 
-#  \u63a5\u5c3e\u8a9e ("suffix") and is usually the last element in a compound noun.
-#  e.g. \u304a\u304d, \u304b\u305f, \u65b9, \u7532\u6590 (\u304c\u3044), \u304c\u304b\u308a, \u304e\u307f, \u6c17\u5473, \u3050\u308b\u307f, (\uff5e\u3057\u305f) \u3055, \u6b21\u7b2c, \u6e08 (\u305a) \u307f,
-#       \u3088\u3046, (\u3067\u304d)\u3063\u3053, \u611f, \u89b3, \u6027, \u5b66, \u985e, \u9762, \u7528
-#\u540d\u8a5e-\u63a5\u5c3e-\u4e00\u822c
-#
-#  noun-suffix-person: Suffixes that form nouns and attach to person names more often
-#  than other nouns.
-#  e.g. \u541b, \u69d8, \u8457
-#\u540d\u8a5e-\u63a5\u5c3e-\u4eba\u540d
-#
-#  noun-suffix-place: Suffixes that form nouns and attach to place names more often 
-#  than other nouns.
-#  e.g. \u753a, \u5e02, \u770c
-#\u540d\u8a5e-\u63a5\u5c3e-\u5730\u57df
-#
-#  noun-suffix-verbal: Of the suffixes that attach to nouns and form nouns, those that 
-#  can appear before \u30b9\u30eb ("suru").
-#  e.g. \u5316, \u8996, \u5206\u3051, \u5165\u308a, \u843d\u3061, \u8cb7\u3044
-#\u540d\u8a5e-\u63a5\u5c3e-\u30b5\u5909\u63a5\u7d9a
-#
-#  noun-suffix-aux: The stem form of \u305d\u3046\u3060 (\u69d8\u614b) that is used to indicate conditions, 
-#  is treated as \u52a9\u52d5\u8a5e ("auxiliary verb") in school grammars, and attach to the 
-#  conjunctive form of inflectional words.
-#  e.g. \u305d\u3046
-#\u540d\u8a5e-\u63a5\u5c3e-\u52a9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix-adjective-base: Suffixes that attach to other nouns or the conjunctive 
-#  form of inflectional words and appear before the copula \u3060 ("da").
-#  e.g. \u7684, \u3052, \u304c\u3061
-#\u540d\u8a5e-\u63a5\u5c3e-\u5f62\u5bb9\u52d5\u8a5e\u8a9e\u5e79
-#
-#  noun-suffix-adverbial: Suffixes that attach to other nouns and can behave as adverbs.
-#  e.g. \u5f8c (\u3054), \u4ee5\u5f8c, \u4ee5\u964d, \u4ee5\u524d, \u524d\u5f8c, \u4e2d, \u672b, \u4e0a, \u6642 (\u3058)
-#\u540d\u8a5e-\u63a5\u5c3e-\u526f\u8a5e\u53ef\u80fd
-#
-#  noun-suffix-classifier: Suffixes that attach to numbers and form nouns. This category 
-#  is more inclusive than \u52a9\u6570\u8a5e ("classifier") and includes common nouns that attach 
-#  to numbers.
-#  e.g. \u500b, \u3064, \u672c, \u518a, \u30d1\u30fc\u30bb\u30f3\u30c8, cm, kg, \u30ab\u6708, \u304b\u56fd, \u533a\u753b, \u6642\u9593, \u6642\u534a
-#\u540d\u8a5e-\u63a5\u5c3e-\u52a9\u6570\u8a5e
-#
-#  noun-suffix-special: Special suffixes that mainly attach to inflecting words.
-#  e.g. (\u697d\u3057) \u3055, (\u8003\u3048) \u65b9
-#\u540d\u8a5e-\u63a5\u5c3e-\u7279\u6b8a
-#
-#  noun-suffix-conjunctive: Nouns that behave like conjunctions and join two words 
-#  together.
-#  e.g. (\u65e5\u672c) \u5bfe (\u30a2\u30e1\u30ea\u30ab), \u5bfe (\u30a2\u30e1\u30ea\u30ab), (3) \u5bfe (5), (\u5973\u512a) \u517c (\u4e3b\u5a66)
-#\u540d\u8a5e-\u63a5\u7d9a\u8a5e\u7684
-#
-#  noun-verbal_aux: Nouns that attach to the conjunctive particle \u3066 ("te") and are 
-#  semantically verb-like.
-#  e.g. \u3054\u3089\u3093, \u3054\u89a7, \u5fa1\u89a7, \u9802\u6234
-#\u540d\u8a5e-\u52d5\u8a5e\u975e\u81ea\u7acb\u7684
-#
-#  noun-quotation: text that cannot be segmented into words, proverbs, Chinese poetry, 
-#  dialects, English, etc. Currently, the only entry for \u540d\u8a5e \u5f15\u7528\u6587\u5b57\u5217 ("noun quotation") 
-#  is \u3044\u308f\u304f ("iwaku").
-#\u540d\u8a5e-\u5f15\u7528\u6587\u5b57\u5217
-#
-#  noun-nai_adjective: Words that appear before the auxiliary verb \u306a\u3044 ("nai") and
-#  behave like an adjective.
-#  e.g. \u7533\u3057\u8a33, \u4ed5\u65b9, \u3068\u3093\u3067\u3082, \u9055\u3044
-#\u540d\u8a5e-\u30ca\u30a4\u5f62\u5bb9\u8a5e\u8a9e\u5e79
-#
-#####
-#  prefix: unclassified prefixes
-#\u63a5\u982d\u8a5e
-#
-#  prefix-nominal: Prefixes that attach to nouns (including adjective stem forms) 
-#  excluding numerical expressions.
-#  e.g. \u304a (\u6c34), \u67d0 (\u6c0f), \u540c (\u793e), \u6545 (\uff5e\u6c0f), \u9ad8 (\u54c1\u8cea), \u304a (\u898b\u4e8b), \u3054 (\u7acb\u6d3e)
-#\u63a5\u982d\u8a5e-\u540d\u8a5e\u63a5\u7d9a
-#
-#  prefix-verbal: Prefixes that attach to the imperative form of a verb or a verb
-#  in conjunctive form followed by \u306a\u308b/\u306a\u3055\u308b/\u304f\u3060\u3055\u308b.
-#  e.g. \u304a (\u8aad\u307f\u306a\u3055\u3044), \u304a (\u5ea7\u308a)
-#\u63a5\u982d\u8a5e-\u52d5\u8a5e\u63a5\u7d9a
-#
-#  prefix-adjectival: Prefixes that attach to adjectives.
-#  e.g. \u304a (\u5bd2\u3044\u3067\u3059\u306d\u3048), \u30d0\u30ab (\u3067\u304b\u3044)
-#\u63a5\u982d\u8a5e-\u5f62\u5bb9\u8a5e\u63a5\u7d9a
-#
-#  prefix-numerical: Prefixes that attach to numerical expressions.
-#  e.g. \u7d04, \u304a\u3088\u305d, \u6bce\u6642
-#\u63a5\u982d\u8a5e-\u6570\u63a5\u7d9a
-#
-#####
-#  verb: unclassified verbs
-#\u52d5\u8a5e
-#
-#  verb-main:
-#\u52d5\u8a5e-\u81ea\u7acb
-#
-#  verb-auxiliary:
-#\u52d5\u8a5e-\u975e\u81ea\u7acb
-#
-#  verb-suffix:
-#\u52d5\u8a5e-\u63a5\u5c3e
-#
-#####
-#  adjective: unclassified adjectives
-#\u5f62\u5bb9\u8a5e
-#
-#  adjective-main:
-#\u5f62\u5bb9\u8a5e-\u81ea\u7acb
-#
-#  adjective-auxiliary:
-#\u5f62\u5bb9\u8a5e-\u975e\u81ea\u7acb
-#
-#  adjective-suffix:
-#\u5f62\u5bb9\u8a5e-\u63a5\u5c3e
-#
-#####
-#  adverb: unclassified adverbs
-#\u526f\u8a5e
-#
-#  adverb-misc: Words that can be segmented into one unit and where adnominal 
-#  modification is not possible.
-#  e.g. \u3042\u3044\u304b\u308f\u3089\u305a, \u591a\u5206
-#\u526f\u8a5e-\u4e00\u822c
-#
-#  adverb-particle_conjunction: Adverbs that can be followed by \u306e, \u306f, \u306b, 
-#  \u306a, \u3059\u308b, \u3060, etc.
-#  e.g. \u3053\u3093\u306a\u306b, \u305d\u3093\u306a\u306b, \u3042\u3093\u306a\u306b, \u306a\u306b\u304b, \u306a\u3093\u3067\u3082
-#\u526f\u8a5e-\u52a9\u8a5e\u985e\u63a5\u7d9a
-#
-#####
-#  adnominal: Words that only have noun-modifying forms.
-#  e.g. \u3053\u306e, \u305d\u306e, \u3042\u306e, \u3069\u306e, \u3044\u308f\u3086\u308b, \u306a\u3093\u3089\u304b\u306e, \u4f55\u3089\u304b\u306e, \u3044\u308d\u3093\u306a, \u3053\u3046\u3044\u3046, \u305d\u3046\u3044\u3046, \u3042\u3042\u3044\u3046, 
-#       \u3069\u3046\u3044\u3046, \u3053\u3093\u306a, \u305d\u3093\u306a, \u3042\u3093\u306a, \u3069\u3093\u306a, \u5927\u304d\u306a, \u5c0f\u3055\u306a, \u304a\u304b\u3057\u306a, \u307b\u3093\u306e, \u305f\u3044\u3057\u305f, 
-#       \u300c(, \u3082) \u3055\u308b (\u3053\u3068\u306a\u304c\u3089)\u300d, \u5fae\u3005\u305f\u308b, \u5802\u3005\u305f\u308b, \u5358\u306a\u308b, \u3044\u304b\u306a\u308b, \u6211\u304c\u300d\u300c\u540c\u3058, \u4ea1\u304d
-#\u9023\u4f53\u8a5e
-#
-#####
-#  conjunction: Conjunctions that can occur independently.
-#  e.g. \u304c, \u3051\u308c\u3069\u3082, \u305d\u3057\u3066, \u3058\u3083\u3042, \u305d\u308c\u3069\u3053\u308d\u304b
-\u63a5\u7d9a\u8a5e
-#
-#####
-#  particle: unclassified particles.
-\u52a9\u8a5e
-#
-#  particle-case: case particles where the subclassification is undefined.
-\u52a9\u8a5e-\u683c\u52a9\u8a5e
-#
-#  particle-case-misc: Case particles.
-#  e.g. \u304b\u3089, \u304c, \u3067, \u3068, \u306b, \u3078, \u3088\u308a, \u3092, \u306e, \u306b\u3066
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u4e00\u822c
-#
-#  particle-case-quote: the "to" that appears after nouns, a person\u2019s speech, 
-#  quotation marks, expressions of decisions from a meeting, reasons, judgements,
-#  conjectures, etc.
-#  e.g. ( \u3060) \u3068 (\u8ff0\u3079\u305f.), ( \u3067\u3042\u308b) \u3068 (\u3057\u3066\u57f7\u884c\u7336\u4e88...)
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u5f15\u7528
-#
-#  particle-case-compound: Compounds of particles and verbs that mainly behave 
-#  like case particles.
-#  e.g. \u3068\u3044\u3046, \u3068\u3044\u3063\u305f, \u3068\u304b\u3044\u3046, \u3068\u3057\u3066, \u3068\u3068\u3082\u306b, \u3068\u5171\u306b, \u3067\u3082\u3063\u3066, \u306b\u3042\u305f\u3063\u3066, \u306b\u5f53\u305f\u3063\u3066, \u306b\u5f53\u3063\u3066,
-#       \u306b\u3042\u305f\u308a, \u306b\u5f53\u305f\u308a, \u306b\u5f53\u308a, \u306b\u5f53\u305f\u308b, \u306b\u3042\u305f\u308b, \u306b\u304a\u3044\u3066, \u306b\u65bc\u3044\u3066,\u306b\u65bc\u3066, \u306b\u304a\u3051\u308b, \u306b\u65bc\u3051\u308b, 
-#       \u306b\u304b\u3051, \u306b\u304b\u3051\u3066, \u306b\u304b\u3093\u3057, \u306b\u95a2\u3057, \u306b\u304b\u3093\u3057\u3066, \u306b\u95a2\u3057\u3066, \u306b\u304b\u3093\u3059\u308b, \u306b\u95a2\u3059\u308b, \u306b\u969b\u3057, 
-#       \u306b\u969b\u3057\u3066, \u306b\u3057\u305f\u304c\u3044, \u306b\u5f93\u3044, \u306b\u5f93\u3046, \u306b\u3057\u305f\u304c\u3063\u3066, \u306b\u5f93\u3063\u3066, \u306b\u305f\u3044\u3057, \u306b\u5bfe\u3057, \u306b\u305f\u3044\u3057\u3066, 
-#       \u306b\u5bfe\u3057\u3066, \u306b\u305f\u3044\u3059\u308b, \u306b\u5bfe\u3059\u308b, \u306b\u3064\u3044\u3066, \u306b\u3064\u304d, \u306b\u3064\u3051, \u306b\u3064\u3051\u3066, \u306b\u3064\u308c, \u306b\u3064\u308c\u3066, \u306b\u3068\u3063\u3066,
-#       \u306b\u3068\u308a, \u306b\u307e\u3064\u308f\u308b, \u306b\u3088\u3063\u3066, \u306b\u4f9d\u3063\u3066, \u306b\u56e0\u3063\u3066, \u306b\u3088\u308a, \u306b\u4f9d\u308a, \u306b\u56e0\u308a, \u306b\u3088\u308b, \u306b\u4f9d\u308b, \u306b\u56e0\u308b, 
-#       \u306b\u308f\u305f\u3063\u3066, \u306b\u308f\u305f\u308b, \u3092\u3082\u3063\u3066, \u3092\u4ee5\u3063\u3066, \u3092\u901a\u3058, \u3092\u901a\u3058\u3066, \u3092\u901a\u3057\u3066, \u3092\u3081\u3050\u3063\u3066, \u3092\u3081\u3050\u308a, \u3092\u3081\u3050\u308b,
-#       \u3063\u3066-\u53e3\u8a9e/, \u3061\u3085\u3046-\u95a2\u897f\u5f01\u300c\u3068\u3044\u3046\u300d/, (\u4f55) \u3066\u3044\u3046 (\u4eba)-\u53e3\u8a9e/, \u3063\u3066\u3044\u3046-\u53e3\u8a9e/, \u3068\u3044\u3075, \u3068\u304b\u3044\u3075
-\u52a9\u8a5e-\u683c\u52a9\u8a5e-\u9023\u8a9e
-#
-#  particle-conjunctive:
-#  e.g. \u304b\u3089, \u304b\u3089\u306b\u306f, \u304c, \u3051\u308c\u3069, \u3051\u308c\u3069\u3082, \u3051\u3069, \u3057, \u3064\u3064, \u3066, \u3067, \u3068, \u3068\u3053\u308d\u304c, \u3069\u3053\u308d\u304b, \u3068\u3082, \u3069\u3082, 
-#       \u306a\u304c\u3089, \u306a\u308a, \u306e\u3067, \u306e\u306b, \u3070, \u3082\u306e\u306e, \u3084 ( \u3057\u305f), \u3084\u3044\u306a\u3084, (\u3053\u308d\u3093) \u3058\u3083(\u3044\u3051\u306a\u3044)-\u53e3\u8a9e/, 
-#       (\u884c\u3063) \u3061\u3083(\u3044\u3051\u306a\u3044)-\u53e3\u8a9e/, (\u8a00\u3063) \u305f\u3063\u3066 (\u3057\u304b\u305f\u304c\u306a\u3044)-\u53e3\u8a9e/, (\u305d\u308c\u304c\u306a\u304f)\u3063\u305f\u3063\u3066 (\u5e73\u6c17)-\u53e3\u8a9e/
-\u52a9\u8a5e-\u63a5\u7d9a\u52a9\u8a5e
-#
-#  particle-dependency:
-#  e.g. \u3053\u305d, \u3055\u3048, \u3057\u304b, \u3059\u3089, \u306f, \u3082, \u305e
-\u52a9\u8a5e-\u4fc2\u52a9\u8a5e
-#
-#  particle-adverbial:
-#  e.g. \u304c\u3066\u3089, \u304b\u3082, \u304f\u3089\u3044, \u4f4d, \u3050\u3089\u3044, \u3057\u3082, (\u5b66\u6821) \u3058\u3083(\u3053\u308c\u304c\u6d41\u884c\u3063\u3066\u3044\u308b)-\u53e3\u8a9e/, 
-#       (\u305d\u308c)\u3058\u3083\u3042 (\u3088\u304f\u306a\u3044)-\u53e3\u8a9e/, \u305a\u3064, (\u79c1) \u306a\u305e, \u306a\u3069, (\u79c1) \u306a\u308a (\u306b), (\u5148\u751f) \u306a\u3093\u304b (\u5927\u5acc\u3044)-\u53e3\u8a9e/,
-#       (\u79c1) \u306a\u3093\u305e, (\u5148\u751f) \u306a\u3093\u3066 (\u5927\u5acc\u3044)-\u53e3\u8a9e/, \u306e\u307f, \u3060\u3051, (\u79c1) \u3060\u3063\u3066-\u53e3\u8a9e/, \u3060\u306b, 
-#       (\u5f7c)\u3063\u305f\u3089-\u53e3\u8a9e/, (\u304a\u8336) \u3067\u3082 (\u3044\u304b\u304c), \u7b49 (\u3068\u3046), (\u4eca\u5f8c) \u3068\u3082, \u3070\u304b\u308a, \u3070\u3063\u304b-\u53e3\u8a9e/, \u3070\u3063\u304b\u308a-\u53e3\u8a9e/,
-#       \u307b\u3069, \u7a0b, \u307e\u3067, \u8fc4, (\u8ab0) \u3082 (\u304c)([\u52a9\u8a5e-\u683c\u52a9\u8a5e] \u304a\u3088\u3073 [\u52a9\u8a5e-\u4fc2\u52a9\u8a5e] \u306e\u524d\u306b\u4f4d\u7f6e\u3059\u308b\u300c\u3082\u300d)
-\u52a9\u8a5e-\u526f\u52a9\u8a5e
-#
-#  particle-interjective: particles with interjective grammatical roles.
-#  e.g. (\u677e\u5cf6) \u3084
-\u52a9\u8a5e-\u9593\u6295\u52a9\u8a5e
-#
-#  particle-coordinate:
-#  e.g. \u3068, \u305f\u308a, \u3060\u306e, \u3060\u308a, \u3068\u304b, \u306a\u308a, \u3084, \u3084\u3089
-\u52a9\u8a5e-\u4e26\u7acb\u52a9\u8a5e
-#
-#  particle-final:
-#  e.g. \u304b\u3044, \u304b\u3057\u3089, \u3055, \u305c, (\u3060)\u3063\u3051-\u53e3\u8a9e/, (\u3068\u307e\u3063\u3066\u308b) \u3067-\u65b9\u8a00/, \u306a, \u30ca, \u306a\u3042-\u53e3\u8a9e/, \u305e, \u306d, \u30cd, 
-#       \u306d\u3047-\u53e3\u8a9e/, \u306d\u3048-\u53e3\u8a9e/, \u306d\u3093-\u65b9\u8a00/, \u306e, \u306e\u3046-\u53e3\u8a9e/, \u3084, \u3088, \u30e8, \u3088\u3049-\u53e3\u8a9e/, \u308f, \u308f\u3044-\u53e3\u8a9e/
-\u52a9\u8a5e-\u7d42\u52a9\u8a5e
-#
-#  particle-adverbial/conjunctive/final: The particle "ka" when unknown whether it is 
-#  adverbial, conjunctive, or sentence final. For example:
-#       (a) \u300cA \u304b B \u304b\u300d. Ex:\u300c(\u56fd\u5185\u3067\u904b\u7528\u3059\u308b) \u304b,(\u6d77\u5916\u3067\u904b\u7528\u3059\u308b) \u304b (.)\u300d
-#       (b) Inside an adverb phrase. Ex:\u300c(\u5e78\u3044\u3068\u3044\u3046) \u304b (, \u6b7b\u8005\u306f\u3044\u306a\u304b\u3063\u305f.)\u300d
-#           \u300c(\u7948\u308a\u304c\u5c4a\u3044\u305f\u305b\u3044) \u304b (, \u8a66\u9a13\u306b\u5408\u683c\u3057\u305f.)\u300d
-#       (c) \u300c\u304b\u306e\u3088\u3046\u306b\u300d. Ex:\u300c(\u4f55\u3082\u306a\u304b\u3063\u305f) \u304b (\u306e\u3088\u3046\u306b\u632f\u308b\u821e\u3063\u305f.)\u300d
-#  e.g. \u304b
-\u52a9\u8a5e-\u526f\u52a9\u8a5e\uff0f\u4e26\u7acb\u52a9\u8a5e\uff0f\u7d42\u52a9\u8a5e
-#
-#  particle-adnominalizer: The "no" that attaches to nouns and modifies 
-#  non-inflectional words.
-\u52a9\u8a5e-\u9023\u4f53\u5316
-#
-#  particle-adnominalizer: The "ni" and "to" that appear following nouns and adverbs 
-#  that are giongo, giseigo, or gitaigo.
-#  e.g. \u306b, \u3068
-\u52a9\u8a5e-\u526f\u8a5e\u5316
-#
-#  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. \u304b\u306a, \u3051\u3080, ( \u3057\u305f\u3060\u308d\u3046) \u306b, (\u3042\u3093\u305f) \u306b\u3083(\u308f\u304b\u3089\u3093), (\u4ffa) \u3093 (\u5bb6)
-\u52a9\u8a5e-\u7279\u6b8a
-#
-#####
-#  auxiliary-verb:
-\u52a9\u52d5\u8a5e
-#
-#####
-#  interjection: Greetings and other exclamations.
-#  e.g. \u304a\u306f\u3088\u3046, \u304a\u306f\u3088\u3046\u3054\u3056\u3044\u307e\u3059, \u3053\u3093\u306b\u3061\u306f, \u3053\u3093\u3070\u3093\u306f, \u3042\u308a\u304c\u3068\u3046, \u3069\u3046\u3082\u3042\u308a\u304c\u3068\u3046, \u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059, 
-#       \u3044\u305f\u3060\u304d\u307e\u3059, \u3054\u3061\u305d\u3046\u3055\u307e, \u3055\u3088\u306a\u3089, \u3055\u3088\u3046\u306a\u3089, \u306f\u3044, \u3044\u3044\u3048, \u3054\u3081\u3093, \u3054\u3081\u3093\u306a\u3055\u3044
-#\u611f\u52d5\u8a5e
-#
-#####
-#  symbol: unclassified Symbols.
-\u8a18\u53f7
-#
-#  symbol-misc: A general symbol not in one of the categories below.
-#  e.g. [\u25cb\u25ce@$\u3012\u2192+]
-\u8a18\u53f7-\u4e00\u822c
-#
-#  symbol-comma: Commas
-#  e.g. [,\u3001]
-\u8a18\u53f7-\u8aad\u70b9
-#
-#  symbol-period: Periods and full stops.
-#  e.g. [.\uff0e\u3002]
-\u8a18\u53f7-\u53e5\u70b9
-#
-#  symbol-space: Full-width whitespace.
-\u8a18\u53f7-\u7a7a\u767d
-#
-#  symbol-open_bracket:
-#  e.g. [({\u2018\u201c\u300e\u3010]
-\u8a18\u53f7-\u62ec\u5f27\u958b
-#
-#  symbol-close_bracket:
-#  e.g. [)}\u2019\u201d\u300f\u300d\u3011]
-\u8a18\u53f7-\u62ec\u5f27\u9589
-#
-#  symbol-alphabetic:
-#\u8a18\u53f7-\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8
-#
-#####
-#  other: unclassified other
-#\u305d\u306e\u4ed6
-#
-#  other-interjection: Words that are hard to classify as noun-suffixes or 
-#  sentence-final particles.
-#  e.g. (\u3060)\u30a1
-\u305d\u306e\u4ed6-\u9593\u6295
-#
-#####
-#  filler: Aizuchi that occurs during a conversation or sounds inserted as filler.
-#  e.g. \u3042\u306e, \u3046\u3093\u3068, \u3048\u3068
-\u30d5\u30a3\u30e9\u30fc
-#
-#####
-#  non-verbal: non-verbal sound.
-\u975e\u8a00\u8a9e\u97f3
-#
-#####
-#  fragment:
-#\u8a9e\u65ad\u7247
-#
-#####
-#  unknown: unknown part of speech.
-#\u672a\u77e5\u8a9e
-#
-##### End of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ar.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ar.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ar.txt
deleted file mode 100644
index 046829d..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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 \u0623 and \u0627
-\u0645\u0646
-\u0648\u0645\u0646
-\u0645\u0646\u0647\u0627
-\u0645\u0646\u0647
-\u0641\u064a
-\u0648\u0641\u064a
-\u0641\u064a\u0647\u0627
-\u0641\u064a\u0647
-\u0648
-\u0641
-\u062b\u0645
-\u0627\u0648
-\u0623\u0648
-\u0628
-\u0628\u0647\u0627
-\u0628\u0647
-\u0627
-\u0623
-\u0627\u0649
-\u0627\u064a
-\u0623\u064a
-\u0623\u0649
-\u0644\u0627
-\u0648\u0644\u0627
-\u0627\u0644\u0627
-\u0623\u0644\u0627
-\u0625\u0644\u0627
-\u0644\u0643\u0646
-\u0645\u0627
-\u0648\u0645\u0627
-\u0643\u0645\u0627
-\u0641\u0645\u0627
-\u0639\u0646
-\u0645\u0639
-\u0627\u0630\u0627
-\u0625\u0630\u0627
-\u0627\u0646
-\u0623\u0646
-\u0625\u0646
-\u0627\u0646\u0647\u0627
-\u0623\u0646\u0647\u0627
-\u0625\u0646\u0647\u0627
-\u0627\u0646\u0647
-\u0623\u0646\u0647
-\u0625\u0646\u0647
-\u0628\u0627\u0646
-\u0628\u0623\u0646
-\u0641\u0627\u0646
-\u0641\u0623\u0646
-\u0648\u0627\u0646
-\u0648\u0623\u0646
-\u0648\u0625\u0646
-\u0627\u0644\u062a\u0649
-\u0627\u0644\u062a\u064a
-\u0627\u0644\u0630\u0649
-\u0627\u0644\u0630\u064a
-\u0627\u0644\u0630\u064a\u0646
-\u0627\u0644\u0649
-\u0627\u0644\u064a
-\u0625\u0644\u0649
-\u0625\u0644\u064a
-\u0639\u0644\u0649
-\u0639\u0644\u064a\u0647\u0627
-\u0639\u0644\u064a\u0647
-\u0627\u0645\u0627
-\u0623\u0645\u0627
-\u0625\u0645\u0627
-\u0627\u064a\u0636\u0627
-\u0623\u064a\u0636\u0627
-\u0643\u0644
-\u0648\u0643\u0644
-\u0644\u0645
-\u0648\u0644\u0645
-\u0644\u0646
-\u0648\u0644\u0646
-\u0647\u0649
-\u0647\u064a
-\u0647\u0648
-\u0648\u0647\u0649
-\u0648\u0647\u064a
-\u0648\u0647\u0648
-\u0641\u0647\u0649
-\u0641\u0647\u064a
-\u0641\u0647\u0648
-\u0627\u0646\u062a
-\u0623\u0646\u062a
-\u0644\u0643
-\u0644\u0647\u0627
-\u0644\u0647
-\u0647\u0630\u0647
-\u0647\u0630\u0627
-\u062a\u0644\u0643
-\u0630\u0644\u0643
-\u0647\u0646\u0627\u0643
-\u0643\u0627\u0646\u062a
-\u0643\u0627\u0646
-\u064a\u0643\u0648\u0646
-\u062a\u0643\u0648\u0646
-\u0648\u0643\u0627\u0646\u062a
-\u0648\u0643\u0627\u0646
-\u063a\u064a\u0631
-\u0628\u0639\u0636
-\u0642\u062f
-\u0646\u062d\u0648
-\u0628\u064a\u0646
-\u0628\u064a\u0646\u0645\u0627
-\u0645\u0646\u0630
-\u0636\u0645\u0646
-\u062d\u064a\u062b
-\u0627\u0644\u0627\u0646
-\u0627\u0644\u0622\u0646
-\u062e\u0644\u0627\u0644
-\u0628\u0639\u062f
-\u0642\u0628\u0644
-\u062d\u062a\u0649
-\u0639\u0646\u062f
-\u0639\u0646\u062f\u0645\u0627
-\u0644\u062f\u0649
-\u062c\u0645\u064a\u0639

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_bg.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_bg.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_bg.txt
deleted file mode 100644
index 1ae4ba2..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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
-\u0430
-\u0430\u0437
-\u0430\u043a\u043e
-\u0430\u043b\u0430
-\u0431\u0435
-\u0431\u0435\u0437
-\u0431\u0435\u0448\u0435
-\u0431\u0438
-\u0431\u0438\u043b
-\u0431\u0438\u043b\u0430
-\u0431\u0438\u043b\u0438
-\u0431\u0438\u043b\u043e
-\u0431\u043b\u0438\u0437\u043e
-\u0431\u044a\u0434\u0430\u0442
-\u0431\u044a\u0434\u0435
-\u0431\u044f\u0445\u0430
-\u0432
-\u0432\u0430\u0441
-\u0432\u0430\u0448
-\u0432\u0430\u0448\u0430
-\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e
-\u0432\u0435\u0447\u0435
-\u0432\u0437\u0435\u043c\u0430
-\u0432\u0438
-\u0432\u0438\u0435
-\u0432\u0438\u043d\u0430\u0433\u0438
-\u0432\u0441\u0435
-\u0432\u0441\u0435\u043a\u0438
-\u0432\u0441\u0438\u0447\u043a\u0438
-\u0432\u0441\u0438\u0447\u043a\u043e
-\u0432\u0441\u044f\u043a\u0430
-\u0432\u044a\u0432
-\u0432\u044a\u043f\u0440\u0435\u043a\u0438
-\u0432\u044a\u0440\u0445\u0443
-\u0433
-\u0433\u0438
-\u0433\u043b\u0430\u0432\u043d\u043e
-\u0433\u043e
-\u0434
-\u0434\u0430
-\u0434\u0430\u043b\u0438
-\u0434\u043e
-\u0434\u043e\u043a\u0430\u0442\u043e
-\u0434\u043e\u043a\u043e\u0433\u0430
-\u0434\u043e\u0440\u0438
-\u0434\u043e\u0441\u0435\u0433\u0430
-\u0434\u043e\u0441\u0442\u0430
-\u0435
-\u0435\u0434\u0432\u0430
-\u0435\u0434\u0438\u043d
-\u0435\u0442\u043e
-\u0437\u0430
-\u0437\u0430\u0434
-\u0437\u0430\u0435\u0434\u043d\u043e
-\u0437\u0430\u0440\u0430\u0434\u0438
-\u0437\u0430\u0441\u0435\u0433\u0430
-\u0437\u0430\u0442\u043e\u0432\u0430
-\u0437\u0430\u0449\u043e
-\u0437\u0430\u0449\u043e\u0442\u043e
-\u0438
-\u0438\u0437
-\u0438\u043b\u0438
-\u0438\u043c
-\u0438\u043c\u0430
-\u0438\u043c\u0430\u0442
-\u0438\u0441\u043a\u0430
-\u0439
-\u043a\u0430\u0437\u0430
-\u043a\u0430\u043a
-\u043a\u0430\u043a\u0432\u0430
-\u043a\u0430\u043a\u0432\u043e
-\u043a\u0430\u043a\u0442\u043e
-\u043a\u0430\u043a\u044a\u0432
-\u043a\u0430\u0442\u043e
-\u043a\u043e\u0433\u0430
-\u043a\u043e\u0433\u0430\u0442\u043e
-\u043a\u043e\u0435\u0442\u043e
-\u043a\u043e\u0438\u0442\u043e
-\u043a\u043e\u0439
-\u043a\u043e\u0439\u0442\u043e
-\u043a\u043e\u043b\u043a\u043e
-\u043a\u043e\u044f\u0442\u043e
-\u043a\u044a\u0434\u0435
-\u043a\u044a\u0434\u0435\u0442\u043e
-\u043a\u044a\u043c
-\u043b\u0438
-\u043c
-\u043c\u0435
-\u043c\u0435\u0436\u0434\u0443
-\u043c\u0435\u043d
-\u043c\u0438
-\u043c\u043d\u043e\u0437\u0438\u043d\u0430
-\u043c\u043e\u0433\u0430
-\u043c\u043e\u0433\u0430\u0442
-\u043c\u043e\u0436\u0435
-\u043c\u043e\u043b\u044f
-\u043c\u043e\u043c\u0435\u043d\u0442\u0430
-\u043c\u0443
-\u043d
-\u043d\u0430
-\u043d\u0430\u0434
-\u043d\u0430\u0437\u0430\u0434
-\u043d\u0430\u0439
-\u043d\u0430\u043f\u0440\u0430\u0432\u0438
-\u043d\u0430\u043f\u0440\u0435\u0434
-\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440
-\u043d\u0430\u0441
-\u043d\u0435
-\u043d\u0435\u0433\u043e
-\u043d\u0435\u044f
-\u043d\u0438
-\u043d\u0438\u0435
-\u043d\u0438\u043a\u043e\u0439
-\u043d\u0438\u0442\u043e
-\u043d\u043e
-\u043d\u044f\u043a\u043e\u0438
-\u043d\u044f\u043a\u043e\u0439
-\u043d\u044f\u043c\u0430
-\u043e\u0431\u0430\u0447\u0435
-\u043e\u043a\u043e\u043b\u043e
-\u043e\u0441\u0432\u0435\u043d
-\u043e\u0441\u043e\u0431\u0435\u043d\u043e
-\u043e\u0442
-\u043e\u0442\u0433\u043e\u0440\u0435
-\u043e\u0442\u043d\u043e\u0432\u043e
-\u043e\u0449\u0435
-\u043f\u0430\u043a
-\u043f\u043e
-\u043f\u043e\u0432\u0435\u0447\u0435
-\u043f\u043e\u0432\u0435\u0447\u0435\u0442\u043e
-\u043f\u043e\u0434
-\u043f\u043e\u043d\u0435
-\u043f\u043e\u0440\u0430\u0434\u0438
-\u043f\u043e\u0441\u043b\u0435
-\u043f\u043e\u0447\u0442\u0438
-\u043f\u0440\u0430\u0432\u0438
-\u043f\u0440\u0435\u0434
-\u043f\u0440\u0435\u0434\u0438
-\u043f\u0440\u0435\u0437
-\u043f\u0440\u0438
-\u043f\u044a\u043a
-\u043f\u044a\u0440\u0432\u043e
-\u0441
-\u0441\u0430
-\u0441\u0430\u043c\u043e
-\u0441\u0435
-\u0441\u0435\u0433\u0430
-\u0441\u0438
-\u0441\u043a\u043e\u0440\u043e
-\u0441\u043b\u0435\u0434
-\u0441\u043c\u0435
-\u0441\u043f\u043e\u0440\u0435\u0434
-\u0441\u0440\u0435\u0434
-\u0441\u0440\u0435\u0449\u0443
-\u0441\u0442\u0435
-\u0441\u044a\u043c
-\u0441\u044a\u0441
-\u0441\u044a\u0449\u043e
-\u0442
-\u0442\u0430\u0437\u0438
-\u0442\u0430\u043a\u0430
-\u0442\u0430\u043a\u0438\u0432\u0430
-\u0442\u0430\u043a\u044a\u0432
-\u0442\u0430\u043c
-\u0442\u0432\u043e\u0439
-\u0442\u0435
-\u0442\u0435\u0437\u0438
-\u0442\u0438
-\u0442\u043d
-\u0442\u043e
-\u0442\u043e\u0432\u0430
-\u0442\u043e\u0433\u0430\u0432\u0430
-\u0442\u043e\u0437\u0438
-\u0442\u043e\u0439
-\u0442\u043e\u043b\u043a\u043e\u0432\u0430
-\u0442\u043e\u0447\u043d\u043e
-\u0442\u0440\u044f\u0431\u0432\u0430
-\u0442\u0443\u043a
-\u0442\u044a\u0439
-\u0442\u044f
-\u0442\u044f\u0445
-\u0443
-\u0445\u0430\u0440\u0435\u0441\u0432\u0430
-\u0447
-\u0447\u0435
-\u0447\u0435\u0441\u0442\u043e
-\u0447\u0440\u0435\u0437
-\u0449\u0435
-\u0449\u043e\u043c
-\u044f

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ca.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ca.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ca.txt
deleted file mode 100644
index 3da65de..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_cz.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_cz.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_cz.txt
deleted file mode 100644
index 53c6097..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_cz.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-a
-s
-k
-o
-i
-u
-v
-z
-dnes
-cz
-t�mto
-bude\u0161
-budem
-byli
-jse\u0161
-m\u016fj
-sv�m
-ta
-tomto
-tohle
-tuto
-tyto
-jej
-zda
-pro\u010d
-m�te
-tato
-kam
-tohoto
-kdo
-kte\u0159�
-mi
-n�m
-tom
-tomuto
-m�t
-nic
-proto
-kterou
-byla
-toho
-proto\u017ee
-asi
-ho
-na\u0161i
-napi\u0161te
-re
-co\u017e
-t�m
-tak\u017ee
-sv�ch
-jej�
-sv�mi
-jste
-aj
-tu
-tedy
-teto
-bylo
-kde
-ke
-prav�
-ji
-nad
-nejsou
-\u010di
-pod
-t�ma
-mezi
-p\u0159es
-ty
-pak
-v�m
-ani
-kdy\u017e
-v\u0161ak
-neg
-jsem
-tento
-\u010dl�nku
-\u010dl�nky
-aby
-jsme
-p\u0159ed
-pta
-jejich
-byl
-je\u0161t\u011b
-a\u017e
-bez
-tak�
-pouze
-prvn�
-va\u0161e
-kter�
-n�s
-nov�
-tipy
-pokud
-m\u016f\u017ee
-strana
-jeho
-sv�
-jin�
-zpr�vy
-nov�
-nen�
-v�s
-jen
-podle
-zde
-u\u017e
-b�t
-v�ce
-bude
-ji\u017e
-ne\u017e
-kter�
-by
-kter�
-co
-nebo
-ten
-tak
-m�
-p\u0159i
-od
-po
-jsou
-jak
-dal\u0161�
-ale
-si
-se
-ve
-to
-jako
-za
-zp\u011bt
-ze
-do
-pro
-je
-na
-atd
-atp
-jakmile
-p\u0159i\u010dem\u017e
-j�
-on
-ona
-ono
-oni
-ony
-my
-vy
-j�
-ji
-m\u011b
-mne
-jemu
-tomu
-t\u011bm
-t\u011bmu
-n\u011bmu
-n\u011bmu\u017e
-jeho\u017e
-j�\u017e
-jeliko\u017e
-je\u017e
-jako\u017e
-na\u010de\u017e

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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_el.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_el.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_el.txt
deleted file mode 100644
index 232681f..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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 '\u03c3' instead of '\u03c2' 
-\u03bf
-\u03b7
-\u03c4\u03bf
-\u03bf\u03b9
-\u03c4\u03b1
-\u03c4\u03bf\u03c5
-\u03c4\u03b7\u03c3
-\u03c4\u03c9\u03bd
-\u03c4\u03bf\u03bd
-\u03c4\u03b7\u03bd
-\u03ba\u03b1\u03b9 
-\u03ba\u03b9
-\u03ba
-\u03b5\u03b9\u03bc\u03b1\u03b9
-\u03b5\u03b9\u03c3\u03b1\u03b9
-\u03b5\u03b9\u03bd\u03b1\u03b9
-\u03b5\u03b9\u03bc\u03b1\u03c3\u03c4\u03b5
-\u03b5\u03b9\u03c3\u03c4\u03b5
-\u03c3\u03c4\u03bf
-\u03c3\u03c4\u03bf\u03bd
-\u03c3\u03c4\u03b7
-\u03c3\u03c4\u03b7\u03bd
-\u03bc\u03b1
-\u03b1\u03bb\u03bb\u03b1
-\u03b1\u03c0\u03bf
-\u03b3\u03b9\u03b1
-\u03c0\u03c1\u03bf\u03c3
-\u03bc\u03b5
-\u03c3\u03b5
-\u03c9\u03c3
-\u03c0\u03b1\u03c1\u03b1
-\u03b1\u03bd\u03c4\u03b9
-\u03ba\u03b1\u03c4\u03b1
-\u03bc\u03b5\u03c4\u03b1
-\u03b8\u03b1
-\u03bd\u03b1
-\u03b4\u03b5
-\u03b4\u03b5\u03bd
-\u03bc\u03b7
-\u03bc\u03b7\u03bd
-\u03b5\u03c0\u03b9
-\u03b5\u03bd\u03c9
-\u03b5\u03b1\u03bd
-\u03b1\u03bd
-\u03c4\u03bf\u03c4\u03b5
-\u03c0\u03bf\u03c5
-\u03c0\u03c9\u03c3
-\u03c0\u03bf\u03b9\u03bf\u03c3
-\u03c0\u03bf\u03b9\u03b1
-\u03c0\u03bf\u03b9\u03bf
-\u03c0\u03bf\u03b9\u03bf\u03b9
-\u03c0\u03bf\u03b9\u03b5\u03c3
-\u03c0\u03bf\u03b9\u03c9\u03bd
-\u03c0\u03bf\u03b9\u03bf\u03c5\u03c3
-\u03b1\u03c5\u03c4\u03bf\u03c3
-\u03b1\u03c5\u03c4\u03b7
-\u03b1\u03c5\u03c4\u03bf
-\u03b1\u03c5\u03c4\u03bf\u03b9
-\u03b1\u03c5\u03c4\u03c9\u03bd
-\u03b1\u03c5\u03c4\u03bf\u03c5\u03c3
-\u03b1\u03c5\u03c4\u03b5\u03c3
-\u03b1\u03c5\u03c4\u03b1
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03c3
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b7
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03b9
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b5\u03c3
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b1
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03c9\u03bd
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03c5\u03c3
-\u03bf\u03c0\u03c9\u03c3
-\u03bf\u03bc\u03c9\u03c3
-\u03b9\u03c3\u03c9\u03c3
-\u03bf\u03c3\u03bf
-\u03bf\u03c4\u03b9

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_en.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_en.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_en.txt
deleted file mode 100644
index 2c164c0..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_eu.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_eu.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_eu.txt
deleted file mode 100644
index 25f1db9..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_fa.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_fa.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_fa.txt
deleted file mode 100644
index 723641c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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 '\u064a' instead of '\u06cc'
-\u0627\u0646\u0627\u0646
-\u0646\u062f\u0627\u0634\u062a\u0647
-\u0633\u0631\u0627\u0633\u0631
-\u062e\u064a\u0627\u0647
-\u0627\u064a\u0634\u0627\u0646
-\u0648\u064a
-\u062a\u0627\u0643\u0646\u0648\u0646
-\u0628\u064a\u0634\u062a\u0631\u064a
-\u062f\u0648\u0645
-\u067e\u0633
-\u0646\u0627\u0634\u064a
-\u0648\u06af\u0648
-\u064a\u0627
-\u062f\u0627\u0634\u062a\u0646\u062f
-\u0633\u067e\u0633
-\u0647\u0646\u06af\u0627\u0645
-\u0647\u0631\u06af\u0632
-\u067e\u0646\u062c
-\u0646\u0634\u0627\u0646
-\u0627\u0645\u0633\u0627\u0644
-\u062f\u064a\u06af\u0631
-\u06af\u0631\u0648\u0647\u064a
-\u0634\u062f\u0646\u062f
-\u0686\u0637\u0648\u0631
-\u062f\u0647
-\u0648
-\u062f\u0648
-\u0646\u062e\u0633\u062a\u064a\u0646
-\u0648\u0644\u064a
-\u0686\u0631\u0627
-\u0686\u0647
-\u0648\u0633\u0637
-\u0647
-\u0643\u062f\u0627\u0645
-\u0642\u0627\u0628\u0644
-\u064a\u0643
-\u0631\u0641\u062a
-\u0647\u0641\u062a
-\u0647\u0645\u0686\u0646\u064a\u0646
-\u062f\u0631
-\u0647\u0632\u0627\u0631
-\u0628\u0644\u0647
-\u0628\u0644\u064a
-\u0634\u0627\u064a\u062f
-\u0627\u0645\u0627
-\u0634\u0646\u0627\u0633\u064a
-\u06af\u0631\u0641\u062a\u0647
-\u062f\u0647\u062f
-\u062f\u0627\u0634\u062a\u0647
-\u062f\u0627\u0646\u0633\u062a
-\u062f\u0627\u0634\u062a\u0646
-\u062e\u0648\u0627\u0647\u064a\u0645
-\u0645\u064a\u0644\u064a\u0627\u0631\u062f
-\u0648\u0642\u062a\u064a\u0643\u0647
-\u0627\u0645\u062f
-\u062e\u0648\u0627\u0647\u062f
-\u062c\u0632
-\u0627\u0648\u0631\u062f\u0647
-\u0634\u062f\u0647
-\u0628\u0644\u0643\u0647
-\u062e\u062f\u0645\u0627\u062a
-\u0634\u062f\u0646
-\u0628\u0631\u062e\u064a
-\u0646\u0628\u0648\u062f
-\u0628\u0633\u064a\u0627\u0631\u064a
-\u062c\u0644\u0648\u06af\u064a\u0631\u064a
-\u062d\u0642
-\u0643\u0631\u062f\u0646\u062f
-\u0646\u0648\u0639\u064a
-\u0628\u0639\u0631\u064a
-\u0646\u0643\u0631\u062f\u0647
-\u0646\u0638\u064a\u0631
-\u0646\u0628\u0627\u064a\u062f
-\u0628\u0648\u062f\u0647
-\u0628\u0648\u062f\u0646
-\u062f\u0627\u062f
-\u0627\u0648\u0631\u062f
-\u0647\u0633\u062a
-\u062c\u0627\u064a\u064a
-\u0634\u0648\u062f
-\u062f\u0646\u0628\u0627\u0644
-\u062f\u0627\u062f\u0647
-\u0628\u0627\u064a\u062f
-\u0633\u0627\u0628\u0642
-\u0647\u064a\u0686
-\u0647\u0645\u0627\u0646
-\u0627\u0646\u062c\u0627
-\u0643\u0645\u062a\u0631
-\u0643\u062c\u0627\u0633\u062a
-\u06af\u0631\u062f\u062f
-\u0643\u0633\u064a
-\u062a\u0631
-\u0645\u0631\u062f\u0645
-\u062a\u0627\u0646
-\u062f\u0627\u062f\u0646
-\u0628\u0648\u062f\u0646\u062f
-\u0633\u0631\u064a
-\u062c\u062f\u0627
-\u0646\u062f\u0627\u0631\u0646\u062f
-\u0645\u06af\u0631
-\u064a\u0643\u062f\u064a\u06af\u0631
-\u062f\u0627\u0631\u062f
-\u062f\u0647\u0646\u062f
-\u0628\u0646\u0627\u0628\u0631\u0627\u064a\u0646
-\u0647\u0646\u06af\u0627\u0645\u064a
-\u0633\u0645\u062a
-\u062c\u0627
-\u0627\u0646\u0686\u0647
-\u062e\u0648\u062f
-\u062f\u0627\u062f\u0646\u062f
-\u0632\u064a\u0627\u062f
-\u062f\u0627\u0631\u0646\u062f
-\u0627\u062b\u0631
-\u0628\u062f\u0648\u0646
-\u0628\u0647\u062a\u0631\u064a\u0646
-\u0628\u064a\u0634\u062a\u0631
-\u0627\u0644\u0628\u062a\u0647
-\u0628\u0647
-\u0628\u0631\u0627\u0633\u0627\u0633
-\u0628\u064a\u0631\u0648\u0646
-\u0643\u0631\u062f
-\u0628\u0639\u0636\u064a
-\u06af\u0631\u0641\u062a
-\u062a\u0648\u064a
-\u0627\u064a
-\u0645\u064a\u0644\u064a\u0648\u0646
-\u0627\u0648
-\u062c\u0631\u064a\u0627\u0646
-\u062a\u0648\u0644
-\u0628\u0631
-\u0645\u0627\u0646\u0646\u062f
-\u0628\u0631\u0627\u0628\u0631
-\u0628\u0627\u0634\u064a\u0645
-\u0645\u062f\u062a\u064a
-\u06af\u0648\u064a\u0646\u062f
-\u0627\u0643\u0646\u0648\u0646
-\u062a\u0627
-\u062a\u0646\u0647\u0627
-\u062c\u062f\u064a\u062f
-\u0686\u0646\u062f
-\u0628\u064a
-\u0646\u0634\u062f\u0647
-\u0643\u0631\u062f\u0646
-\u0643\u0631\u062f\u0645
-\u06af\u0648\u064a\u062f
-\u0643\u0631\u062f\u0647
-\u0643\u0646\u064a\u0645
-\u0646\u0645\u064a
-\u0646\u0632\u062f
-\u0631\u0648\u064a
-\u0642\u0635\u062f
-\u0641\u0642\u0637
-\u0628\u0627\u0644\u0627\u064a
-\u062f\u064a\u06af\u0631\u0627\u0646
-\u0627\u064a\u0646
-\u062f\u064a\u0631\u0648\u0632
-\u062a\u0648\u0633\u0637
-\u0633\u0648\u0645
-\u0627\u064a\u0645
-\u062f\u0627\u0646\u0646\u062f
-\u0633\u0648\u064a
-\u0627\u0633\u062a\u0641\u0627\u062f\u0647
-\u0634\u0645\u0627
-\u0643\u0646\u0627\u0631
-\u062f\u0627\u0631\u064a\u0645
-\u0633\u0627\u062e\u062a\u0647
-\u0637\u0648\u0631
-\u0627\u0645\u062f\u0647
-\u0631\u0641\u062a\u0647
-\u0646\u062e\u0633\u062a
-\u0628\u064a\u0633\u062a
-\u0646\u0632\u062f\u064a\u0643
-\u0637\u064a
-\u0643\u0646\u064a\u062f
-\u0627\u0632
-\u0627\u0646\u0647\u0627
-\u062a\u0645\u0627\u0645\u064a
-\u062f\u0627\u0634\u062a
-\u064a\u0643\u064a
-\u0637\u0631\u064a\u0642
-\u0627\u0634
-\u0686\u064a\u0633\u062a
-\u0631\u0648\u0628
-\u0646\u0645\u0627\u064a\u062f
-\u06af\u0641\u062a
-\u0686\u0646\u062f\u064a\u0646
-\u0686\u064a\u0632\u064a
-\u062a\u0648\u0627\u0646\u062f
-\u0627\u0645
-\u0627\u064a\u0627
-\u0628\u0627
-\u0627\u0646
-\u0627\u064a\u062f
-\u062a\u0631\u064a\u0646
-\u0627\u064a\u0646\u0643\u0647
-\u062f\u064a\u06af\u0631\u064a
-\u0631\u0627\u0647
-\u0647\u0627\u064a\u064a
-\u0628\u0631\u0648\u0632
-\u0647\u0645\u0686\u0646\u0627\u0646
-\u067e\u0627\u0639\u064a\u0646
-\u0643\u0633
-\u062d\u062f\u0648\u062f
-\u0645\u062e\u062a\u0644\u0641
-\u0645\u0642\u0627\u0628\u0644
-\u0686\u064a\u0632
-\u06af\u064a\u0631\u062f
-\u0646\u062f\u0627\u0631\u062f
-\u0636\u062f
-\u0647\u0645\u0686\u0648\u0646
-\u0633\u0627\u0632\u064a
-\u0634\u0627\u0646
-\u0645\u0648\u0631\u062f
-\u0628\u0627\u0631\u0647
-\u0645\u0631\u0633\u064a
-\u062e\u0648\u064a\u0634
-\u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631
-\u0686\u0648\u0646
-\u062e\u0627\u0631\u062c
-\u0634\u0634
-\u0647\u0646\u0648\u0632
-\u062a\u062d\u062a
-\u0636\u0645\u0646
-\u0647\u0633\u062a\u064a\u0645
-\u06af\u0641\u062a\u0647
-\u0641\u0643\u0631
-\u0628\u0633\u064a\u0627\u0631
-\u067e\u064a\u0634
-\u0628\u0631\u0627\u064a
-\u0631\u0648\u0632\u0647\u0627\u064a
-\u0627\u0646\u0643\u0647
-\u0646\u062e\u0648\u0627\u0647\u062f
-\u0628\u0627\u0644\u0627
-\u0643\u0644
-\u0648\u0642\u062a\u064a
-\u0643\u064a
-\u0686\u0646\u064a\u0646
-\u0643\u0647
-\u06af\u064a\u0631\u064a
-\u0646\u064a\u0633\u062a
-\u0627\u0633\u062a
-\u0643\u062c\u0627
-\u0643\u0646\u062f
-\u0646\u064a\u0632
-\u064a\u0627\u0628\u062f
-\u0628\u0646\u062f\u064a
-\u062d\u062a\u064a
-\u062a\u0648\u0627\u0646\u0646\u062f
-\u0639\u0642\u0628
-\u062e\u0648\u0627\u0633\u062a
-\u0643\u0646\u0646\u062f
-\u0628\u064a\u0646
-\u062a\u0645\u0627\u0645
-\u0647\u0645\u0647
-\u0645\u0627
-\u0628\u0627\u0634\u0646\u062f
-\u0645\u062b\u0644
-\u0634\u062f
-\u0627\u0631\u064a
-\u0628\u0627\u0634\u062f
-\u0627\u0631\u0647
-\u0637\u0628\u0642
-\u0628\u0639\u062f
-\u0627\u06af\u0631
-\u0635\u0648\u0631\u062a
-\u063a\u064a\u0631
-\u062c\u0627\u064a
-\u0628\u064a\u0634
-\u0631\u064a\u0632\u064a
-\u0627\u0646\u062f
-\u0632\u064a\u0631\u0627
-\u0686\u06af\u0648\u0646\u0647
-\u0628\u0627\u0631
-\u0644\u0637\u0641\u0627
-\u0645\u064a
-\u062f\u0631\u0628\u0627\u0631\u0647
-\u0645\u0646
-\u062f\u064a\u062f\u0647
-\u0647\u0645\u064a\u0646
-\u06af\u0630\u0627\u0631\u064a
-\u0628\u0631\u062f\u0627\u0631\u064a
-\u0639\u0644\u062a
-\u06af\u0630\u0627\u0634\u062a\u0647
-\u0647\u0645
-\u0641\u0648\u0642
-\u0646\u0647
-\u0647\u0627
-\u0634\u0648\u0646\u062f
-\u0627\u0628\u0627\u062f
-\u0647\u0645\u0648\u0627\u0631\u0647
-\u0647\u0631
-\u0627\u0648\u0644
-\u062e\u0648\u0627\u0647\u0646\u062f
-\u0686\u0647\u0627\u0631
-\u0646\u0627\u0645
-\u0627\u0645\u0631\u0648\u0632
-\u0645\u0627\u0646
-\u0647\u0627\u064a
-\u0642\u0628\u0644
-\u0643\u0646\u0645
-\u0633\u0639\u064a
-\u062a\u0627\u0632\u0647
-\u0631\u0627
-\u0647\u0633\u062a\u0646\u062f
-\u0632\u064a\u0631
-\u062c\u0644\u0648\u064a
-\u0639\u0646\u0648\u0627\u0646
-\u0628\u0648\u062f

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_fr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_fr.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_fr.txt
deleted file mode 100644
index c00837ea..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_fr.txt
+++ /dev/null
@@ -1,183 +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.
-
- | 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
-cel�          |  that
-cet            |  this
-cette          |  this
-ici            |  here
-ils            |  they
-les            |  the (pl)
-leurs          |  their (pl)
-quel           |  which
-quels          |  which
-quelle         |  which
-quelles        |  which
-sans           |  without
-soi            |  oneself
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ga.txt
deleted file mode 100644
index 9ff88d7..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_gl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_gl.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_gl.txt
deleted file mode 100644
index d8760b1..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hi.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hi.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hi.txt
deleted file mode 100644
index 86286bb..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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. 
-\u0905\u0902\u0926\u0930
-\u0905\u0924
-\u0905\u092a\u0928\u093e
-\u0905\u092a\u0928\u0940
-\u0905\u092a\u0928\u0947
-\u0905\u092d\u0940
-\u0906\u0926\u093f
-\u0906\u092a
-\u0907\u0924\u094d\u092f\u093e\u0926\u093f
-\u0907\u0928 
-\u0907\u0928\u0915\u093e
-\u0907\u0928\u094d\u0939\u0940\u0902
-\u0907\u0928\u094d\u0939\u0947\u0902
-\u0907\u0928\u094d\u0939\u094b\u0902
-\u0907\u0938
-\u0907\u0938\u0915\u093e
-\u0907\u0938\u0915\u0940
-\u0907\u0938\u0915\u0947
-\u0907\u0938\u092e\u0947\u0902
-\u0907\u0938\u0940
-\u0907\u0938\u0947
-\u0909\u0928
-\u0909\u0928\u0915\u093e
-\u0909\u0928\u0915\u0940
-\u0909\u0928\u0915\u0947
-\u0909\u0928\u0915\u094b
-\u0909\u0928\u094d\u0939\u0940\u0902
-\u0909\u0928\u094d\u0939\u0947\u0902
-\u0909\u0928\u094d\u0939\u094b\u0902
-\u0909\u0938
-\u0909\u0938\u0915\u0947
-\u0909\u0938\u0940
-\u0909\u0938\u0947
-\u090f\u0915
-\u090f\u0935\u0902
-\u090f\u0938
-\u0910\u0938\u0947
-\u0914\u0930
-\u0915\u0908
-\u0915\u0930
-\u0915\u0930\u0924\u093e
-\u0915\u0930\u0924\u0947
-\u0915\u0930\u0928\u093e
-\u0915\u0930\u0928\u0947
-\u0915\u0930\u0947\u0902
-\u0915\u0939\u0924\u0947
-\u0915\u0939\u093e
-\u0915\u093e
-\u0915\u093e\u095e\u0940
-\u0915\u093f
-\u0915\u093f\u0924\u0928\u093e
-\u0915\u093f\u0928\u094d\u0939\u0947\u0902
-\u0915\u093f\u0928\u094d\u0939\u094b\u0902
-\u0915\u093f\u092f\u093e
-\u0915\u093f\u0930
-\u0915\u093f\u0938
-\u0915\u093f\u0938\u0940
-\u0915\u093f\u0938\u0947
-\u0915\u0940
-\u0915\u0941\u091b
-\u0915\u0941\u0932
-\u0915\u0947
-\u0915\u094b
-\u0915\u094b\u0908
-\u0915\u094c\u0928
-\u0915\u094c\u0928\u0938\u093e
-\u0917\u092f\u093e
-\u0918\u0930
-\u091c\u092c
-\u091c\u0939\u093e\u0901
-\u091c\u093e
-\u091c\u093f\u0924\u0928\u093e
-\u091c\u093f\u0928
-\u091c\u093f\u0928\u094d\u0939\u0947\u0902
-\u091c\u093f\u0928\u094d\u0939\u094b\u0902
-\u091c\u093f\u0938
-\u091c\u093f\u0938\u0947
-\u091c\u0940\u0927\u0930
-\u091c\u0948\u0938\u093e
-\u091c\u0948\u0938\u0947
-\u091c\u094b
-\u0924\u0915
-\u0924\u092c
-\u0924\u0930\u0939
-\u0924\u093f\u0928
-\u0924\u093f\u0928\u094d\u0939\u0947\u0902
-\u0924\u093f\u0928\u094d\u0939\u094b\u0902
-\u0924\u093f\u0938
-\u0924\u093f\u0938\u0947
-\u0924\u094b
-\u0925\u093e
-\u0925\u0940
-\u0925\u0947
-\u0926\u092c\u093e\u0930\u093e
-\u0926\u093f\u092f\u093e
-\u0926\u0941\u0938\u0930\u093e
-\u0926\u0942\u0938\u0930\u0947
-\u0926\u094b
-\u0926\u094d\u0935\u093e\u0930\u093e
-\u0928
-\u0928\u0939\u0940\u0902
-\u0928\u093e
-\u0928\u093f\u0939\u093e\u092f\u0924
-\u0928\u0940\u091a\u0947
-\u0928\u0947
-\u092a\u0930
-\u092a\u0930  
-\u092a\u0939\u0932\u0947
-\u092a\u0942\u0930\u093e
-\u092a\u0947
-\u092b\u093f\u0930
-\u092c\u0928\u0940
-\u092c\u0939\u0940
-\u092c\u0939\u0941\u0924
-\u092c\u093e\u0926
-\u092c\u093e\u0932\u093e
-\u092c\u093f\u0932\u0915\u0941\u0932
-\u092d\u0940
-\u092d\u0940\u0924\u0930
-\u092e\u0917\u0930
-\u092e\u093e\u0928\u094b
-\u092e\u0947
-\u092e\u0947\u0902
-\u092f\u0926\u093f
-\u092f\u0939
-\u092f\u0939\u093e\u0901
-\u092f\u0939\u0940
-\u092f\u093e
-\u092f\u093f\u0939 
-\u092f\u0947
-\u0930\u0916\u0947\u0902
-\u0930\u0939\u093e
-\u0930\u0939\u0947
-\u0931\u094d\u0935\u093e\u0938\u093e
-\u0932\u093f\u090f
-\u0932\u093f\u092f\u0947
-\u0932\u0947\u0915\u093f\u0928
-\u0935
-\u0935\u0930\u094d\u0917
-\u0935\u0939
-\u0935\u0939 
-\u0935\u0939\u093e\u0901
-\u0935\u0939\u0940\u0902
-\u0935\u093e\u0932\u0947
-\u0935\u0941\u0939 
-\u0935\u0947
-\u0935\u095a\u0948\u0930\u0939
-\u0938\u0902\u0917
-\u0938\u0915\u0924\u093e
-\u0938\u0915\u0924\u0947
-\u0938\u092c\u0938\u0947
-\u0938\u092d\u0940
-\u0938\u093e\u0925
-\u0938\u093e\u092c\u0941\u0924
-\u0938\u093e\u092d
-\u0938\u093e\u0930\u093e
-\u0938\u0947
-\u0938\u094b
-\u0939\u0940
-\u0939\u0941\u0906
-\u0939\u0941\u0908
-\u0939\u0941\u090f
-\u0939\u0948
-\u0939\u0948\u0902
-\u0939\u094b
-\u0939\u094b\u0924\u093e
-\u0939\u094b\u0924\u0940
-\u0939\u094b\u0924\u0947
-\u0939\u094b\u0928\u093e
-\u0939\u094b\u0928\u0947
-# additional normalized forms of the above
-\u0905\u092a\u0928\u093f
-\u091c\u0947\u0938\u0947
-\u0939\u094b\u0924\u093f
-\u0938\u092d\u093f
-\u0924\u093f\u0902\u0939\u094b\u0902
-\u0907\u0902\u0939\u094b\u0902
-\u0926\u0935\u093e\u0930\u093e
-\u0907\u0938\u093f
-\u0915\u093f\u0902\u0939\u0947\u0902
-\u0925\u093f
-\u0909\u0902\u0939\u094b\u0902
-\u0913\u0930
-\u091c\u093f\u0902\u0939\u0947\u0902
-\u0935\u0939\u093f\u0902
-\u0905\u092d\u093f
-\u092c\u0928\u093f
-\u0939\u093f
-\u0909\u0902\u0939\u093f\u0902
-\u0909\u0902\u0939\u0947\u0902
-\u0939\u0947\u0902
-\u0935\u0917\u0947\u0930\u0939
-\u090f\u0938\u0947
-\u0930\u0935\u093e\u0938\u093e
-\u0915\u094b\u0928
-\u0928\u093f\u091a\u0947
-\u0915\u093e\u092b\u093f
-\u0909\u0938\u093f
-\u092a\u0941\u0930\u093e
-\u092d\u093f\u0924\u0930
-\u0939\u0947
-\u092c\u0939\u093f
-\u0935\u0939\u093e\u0902
-\u0915\u094b\u0907
-\u092f\u0939\u093e\u0902
-\u091c\u093f\u0902\u0939\u094b\u0902
-\u0924\u093f\u0902\u0939\u0947\u0902
-\u0915\u093f\u0938\u093f
-\u0915\u0907
-\u092f\u0939\u093f
-\u0907\u0902\u0939\u093f\u0902
-\u091c\u093f\u0927\u0930
-\u0907\u0902\u0939\u0947\u0902
-\u0905\u0926\u093f
-\u0907\u0924\u092f\u093e\u0926\u093f
-\u0939\u0941\u0907
-\u0915\u094b\u0928\u0938\u093e
-\u0907\u0938\u0915\u093f
-\u0926\u0941\u0938\u0930\u0947
-\u091c\u0939\u093e\u0902
-\u0905\u092a
-\u0915\u093f\u0902\u0939\u094b\u0902
-\u0909\u0928\u0915\u093f
-\u092d\u093f
-\u0935\u0930\u0917
-\u0939\u0941\u0905
-\u091c\u0947\u0938\u093e
-\u0928\u0939\u093f\u0902

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hu.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hu.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hu.txt
deleted file mode 100644
index 1a96f1d..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hu.txt
+++ /dev/null
@@ -1,209 +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.
- 
-| 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\u0151
-el\u0151sz�r
-el\u0151tt
-els\u0151
-�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
-\u0151
-\u0151k
-\u0151ket
-pedig
-persze
-r�
-s
-saj�t
-sem
-semmi
-sok
-sokat
-sokkal
-sz�m�ra
-szemben
-szerint
-szinte
-tal�n
-teh�t
-teljes
-tov�bb
-tov�bb�
-t�bb
-�gy
-ugyanis
-�j
-�jabb
-�jra
-ut�n
-ut�na
-utols�
-vagy
-vagyis
-valaki
-valami
-valamint
-val�
-vagyok
-van
-vannak
-volt
-voltam
-voltak
-voltunk
-vissza
-vele
-viszont
-volna

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hy.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hy.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hy.txt
deleted file mode 100644
index 60c1c50..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_hy.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-# example set of Armenian stopwords.
-\u0561\u0575\u0564
-\u0561\u0575\u056c
-\u0561\u0575\u0576
-\u0561\u0575\u057d
-\u0564\u0578\u0582
-\u0564\u0578\u0582\u0584
-\u0565\u0574
-\u0565\u0576
-\u0565\u0576\u0584
-\u0565\u057d
-\u0565\u0584
-\u0567
-\u0567\u056b
-\u0567\u056b\u0576
-\u0567\u056b\u0576\u0584
-\u0567\u056b\u0580
-\u0567\u056b\u0584
-\u0567\u0580
-\u0568\u057d\u057f
-\u0569
-\u056b
-\u056b\u0576
-\u056b\u057d\u056f
-\u056b\u0580
-\u056f\u0561\u0574
-\u0570\u0561\u0574\u0561\u0580
-\u0570\u0565\u057f
-\u0570\u0565\u057f\u0578
-\u0574\u0565\u0576\u0584
-\u0574\u0565\u057b
-\u0574\u056b
-\u0576
-\u0576\u0561
-\u0576\u0561\u0587
-\u0576\u0580\u0561
-\u0576\u0580\u0561\u0576\u0584
-\u0578\u0580
-\u0578\u0580\u0568
-\u0578\u0580\u0578\u0576\u0584
-\u0578\u0580\u057a\u0565\u057d
-\u0578\u0582
-\u0578\u0582\u0574
-\u057a\u056b\u057f\u056b
-\u057e\u0580\u0561
-\u0587

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_id.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_id.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_id.txt
deleted file mode 100644
index 4617f83..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ja.txt
deleted file mode 100644
index d4321be..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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.
-#
-\u306e
-\u306b
-\u306f
-\u3092
-\u305f
-\u304c
-\u3067
-\u3066
-\u3068
-\u3057
-\u308c
-\u3055
-\u3042\u308b
-\u3044\u308b
-\u3082
-\u3059\u308b
-\u304b\u3089
-\u306a
-\u3053\u3068
-\u3068\u3057\u3066
-\u3044
-\u3084
-\u308c\u308b
-\u306a\u3069
-\u306a\u3063
-\u306a\u3044
-\u3053\u306e
-\u305f\u3081
-\u305d\u306e
-\u3042\u3063
-\u3088\u3046
-\u307e\u305f
-\u3082\u306e
-\u3068\u3044\u3046
-\u3042\u308a
-\u307e\u3067
-\u3089\u308c
-\u306a\u308b
-\u3078
-\u304b
-\u3060
-\u3053\u308c
-\u306b\u3088\u3063\u3066
-\u306b\u3088\u308a
-\u304a\u308a
-\u3088\u308a
-\u306b\u3088\u308b
-\u305a
-\u306a\u308a
-\u3089\u308c\u308b
-\u306b\u304a\u3044\u3066
-\u3070
-\u306a\u304b\u3063
-\u306a\u304f
-\u3057\u304b\u3057
-\u306b\u3064\u3044\u3066
-\u305b
-\u3060\u3063
-\u305d\u306e\u5f8c
-\u3067\u304d\u308b
-\u305d\u308c
-\u3046
-\u306e\u3067
-\u306a\u304a
-\u306e\u307f
-\u3067\u304d
-\u304d
-\u3064
-\u306b\u304a\u3051\u308b
-\u304a\u3088\u3073
-\u3044\u3046
-\u3055\u3089\u306b
-\u3067\u3082
-\u3089
-\u305f\u308a
-\u305d\u306e\u4ed6
-\u306b\u95a2\u3059\u308b
-\u305f\u3061
-\u307e\u3059
-\u3093
-\u306a\u3089
-\u306b\u5bfe\u3057\u3066
-\u7279\u306b
-\u305b\u308b
-\u53ca\u3073
-\u3053\u308c\u3089
-\u3068\u304d
-\u3067\u306f
-\u306b\u3066
-\u307b\u304b
-\u306a\u304c\u3089
-\u3046\u3061
-\u305d\u3057\u3066
-\u3068\u3068\u3082\u306b
-\u305f\u3060\u3057
-\u304b\u3064\u3066
-\u305d\u308c\u305e\u308c
-\u307e\u305f\u306f
-\u304a
-\u307b\u3069
-\u3082\u306e\u306e
-\u306b\u5bfe\u3059\u308b
-\u307b\u3068\u3093\u3069
-\u3068\u5171\u306b
-\u3068\u3044\u3063\u305f
-\u3067\u3059
-\u3068\u3082
-\u3068\u3053\u308d
-\u3053\u3053
-##### End of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_lv.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_lv.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_lv.txt
deleted file mode 100644
index e21a23c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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\u0161
-\u0101rpus
-aug\u0161pus
-bez
-caur
-d\u0113\u013c
-gar
-iek\u0161
-iz
-kop\u0161
-labad
-lejpus
-l\u012bdz
-no
-otrpus
-pa
-par
-p\u0101r
-p\u0113c
-pie
-pirms
-pret
-priek\u0161
-starp
-\u0161aipus
-uz
-vi\u0146pus
-virs
-virspus
-zem
-apak\u0161pus
-# Conjunctions
-un
-bet
-jo
-ja
-ka
-lai
-tom\u0113r
-tikko
-turpret\u012b
-ar\u012b
-kaut
-gan
-t\u0101d\u0113\u013c
-t\u0101
-ne
-tikvien
-vien
-k\u0101
-ir
-te
-vai
-kam\u0113r
-# Particles
-ar
-diezin
-dro\u0161i
-diem\u017e\u0113l
-neb\u016bt
-ik
-it
-ta\u010du
-nu
-pat
-tiklab
-iek\u0161pus
-nedz
-tik
-nevis
-turpretim
-jeb
-iekam
-iek\u0101m
-iek\u0101ms
-kol\u012bdz
-l\u012bdzko
-tikl\u012bdz
-jeb\u0161u
-t\u0101lab
-t\u0101p\u0113c
-nek\u0101
-itin
-j\u0101
-jau
-jel
-n\u0113
-nezin
-tad
-tikai
-vis
-tak
-iekams
-vien
-# modal verbs
-b\u016bt  
-biju 
-biji
-bija
-bij\u0101m
-bij\u0101t
-esmu
-esi
-esam
-esat 
-b\u016b\u0161u     
-b\u016bsi
-b\u016bs
-b\u016bsim
-b\u016bsiet
-tikt
-tiku
-tiki
-tika
-tik\u0101m
-tik\u0101t
-tieku
-tiec
-tiek
-tiekam
-tiekat
-tik\u0161u
-tiks
-tiksim
-tiksiet
-tapt
-tapi
-tap\u0101t
-topat
-tap\u0161u
-tapsi
-taps
-tapsim
-tapsiet
-k\u013c\u016bt
-k\u013cuvu
-k\u013cuvi
-k\u013cuva
-k\u013cuv\u0101m
-k\u013cuv\u0101t
-k\u013c\u016bstu
-k\u013c\u016bsti
-k\u013c\u016bst
-k\u013c\u016bstam
-k\u013c\u016bstat
-k\u013c\u016b\u0161u
-k\u013c\u016bsi
-k\u013c\u016bs
-k\u013c\u016bsim
-k\u013c\u016bsiet
-# verbs
-var\u0113t
-var\u0113ju
-var\u0113j\u0101m
-var\u0113\u0161u
-var\u0113sim
-var
-var\u0113ji
-var\u0113j\u0101t
-var\u0113si
-var\u0113siet
-varat
-var\u0113ja
-var\u0113s

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_nl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_nl.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_nl.txt
deleted file mode 100644
index f4d61f5..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_nl.txt
+++ /dev/null
@@ -1,117 +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.
-
- | 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


[46/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10344: Update Solr default/example and test configs to use WordDelimiterGraphFilterFactory

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/solrj/src/test-files/solrj/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/collection1/conf/schema.xml b/solr/solrj/src/test-files/solrj/solr/collection1/conf/schema.xml
index 49f08b8..fb1a1ac 100644
--- a/solr/solrj/src/test-files/solrj/solr/collection1/conf/schema.xml
+++ b/solr/solrj/src/test-files/solrj/solr/collection1/conf/schema.xml
@@ -47,26 +47,41 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <fieldType name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -166,9 +181,16 @@
     </analyzer>
   </fieldType>
   <fieldType name="lowerpunctfilt" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+              catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -240,15 +262,16 @@
   <fieldType name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -260,15 +283,16 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
@@ -279,8 +303,9 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -293,13 +318,14 @@
   <fieldType name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -309,13 +335,14 @@
   <fieldType name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/schema.xml b/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/schema.xml
index b61a2e9..a3b6a4e 100644
--- a/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/schema.xml
+++ b/solr/solrj/src/test-files/solrj/solr/configsets/streaming/conf/schema.xml
@@ -73,24 +73,37 @@
     <fieldtype name="failtype1" class="solr.TextField">
       <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
       </analyzer>
     </fieldtype>
 
     <!-- Demonstrating ignoreCaseChange -->
     <fieldtype name="wdf_nocase" class="solr.TextField">
-      <analyzer>
+      <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
+      </analyzer>
+      <analyzer type="query">
+        <tokenizer class="solr.MockTokenizerFactory"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldtype>
 
     <fieldtype name="wdf_preserve" class="solr.TextField">
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.MockTokenizerFactory"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldtype>
@@ -179,9 +192,15 @@
       </analyzer>
     </fieldtype>
     <fieldtype name="lowerpunctfilt" class="solr.TextField">
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.MockTokenizerFactory"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldtype>
@@ -252,14 +271,15 @@
     <fieldtype name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
       <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.StopFilterFactory"/>
         <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.StopFilterFactory"/>
         <filter class="solr.PorterStemFilterFactory"/>
@@ -270,14 +290,15 @@
       <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory"/>
         <filter class="solr.LowerCaseFilterFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
         <filter class="solr.StopFilterFactory"/>
         <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
         <filter class="solr.LowerCaseFilterFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.StopFilterFactory"/>
         <filter class="solr.PorterStemFilterFactory"/>
       </analyzer>
@@ -287,7 +308,8 @@
       <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory"/>
         <filter class="solr.LowerCaseFilterFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory"  splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory"  splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
@@ -300,12 +322,13 @@
     <fieldtype name="skutype1" class="solr.TextField">
       <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldtype>
@@ -314,12 +337,13 @@
     <fieldtype name="skutype2" class="solr.TextField">
       <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldtype>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/solrj/src/test/org/apache/solr/client/solrj/request/SchemaTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/request/SchemaTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/request/SchemaTest.java
index 0826c27..3bbcff1 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/request/SchemaTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/request/SchemaTest.java
@@ -529,7 +529,7 @@ public class SchemaTest extends RestTestBase {
     tokenizerAttributes.put("class", "solr.WhitespaceTokenizerFactory");
     analyzerDefinition.setTokenizer(tokenizerAttributes);
     Map<String, Object> filterAttributes = new LinkedHashMap<>();
-    filterAttributes.put("class", "solr.WordDelimiterFilterFactory");
+    filterAttributes.put("class", "solr.WordDelimiterGraphFilterFactory");
     filterAttributes.put("preserveOriginal", "0");
     analyzerDefinition.setFilters(Collections.singletonList(filterAttributes));
     fieldTypeDefinition.setAnalyzer(analyzerDefinition);


[38/73] [abbrv] lucene-solr:jira/solr-6203: Update project doap files with 6.5.0 release

Posted by cp...@apache.org.
Update project doap files with 6.5.0 release


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

Branch: refs/heads/jira/solr-6203
Commit: 013601f05396523ad900a409e67cdbea19571447
Parents: 56d455c
Author: Jim Ferenczi <ji...@elastic.co>
Authored: Sat Mar 25 18:44:39 2017 +0100
Committer: Jim Ferenczi <ji...@elastic.co>
Committed: Sat Mar 25 18:44:39 2017 +0100

----------------------------------------------------------------------
 dev-tools/doap/lucene.rdf | 7 +++++++
 dev-tools/doap/solr.rdf   | 7 +++++++
 2 files changed, 14 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/013601f0/dev-tools/doap/lucene.rdf
----------------------------------------------------------------------
diff --git a/dev-tools/doap/lucene.rdf b/dev-tools/doap/lucene.rdf
index c1950a0..64be110 100644
--- a/dev-tools/doap/lucene.rdf
+++ b/dev-tools/doap/lucene.rdf
@@ -68,6 +68,13 @@
 
     <release>
       <Version>
+        <name>lucene-6.5.0</name>
+        <created>2017-03-27</created>
+        <revision>6.5.0</revision>
+      </Version>
+    </release>
+    <release>
+      <Version>
         <name>lucene-6.4.2</name>
         <created>2017-03-07</created>
         <revision>6.4.2</revision>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/013601f0/dev-tools/doap/solr.rdf
----------------------------------------------------------------------
diff --git a/dev-tools/doap/solr.rdf b/dev-tools/doap/solr.rdf
index 45efd08..b351d89 100644
--- a/dev-tools/doap/solr.rdf
+++ b/dev-tools/doap/solr.rdf
@@ -68,6 +68,13 @@
 
     <release>
       <Version>
+        <name>solr-6.5.0</name>
+        <created>2017-03-27</created>
+        <revision>6.5.0</revision>
+      </Version>
+    </release>
+    <release>
+      <Version>
         <name>solr-6.4.2</name>
         <created>2017-03-07</created>
         <revision>6.4.2</revision>


[03/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-core-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-core-LICENSE-ASL.txt b/solr/licenses/kite-morphlines-core-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/kite-morphlines-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-core-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-core-NOTICE.txt b/solr/licenses/kite-morphlines-core-NOTICE.txt
deleted file mode 100644
index e66f597..0000000
--- a/solr/licenses/kite-morphlines-core-NOTICE.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This product includes software developed by Cloudera, Inc.
-(http://www.cloudera.com/).
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-Saxonica (http://www.saxonica.com/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-hadoop-sequencefile-1.1.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-hadoop-sequencefile-1.1.0.jar.sha1 b/solr/licenses/kite-morphlines-hadoop-sequencefile-1.1.0.jar.sha1
deleted file mode 100644
index d228894..0000000
--- a/solr/licenses/kite-morphlines-hadoop-sequencefile-1.1.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-6f6d7c45138d571f2bf23be8c80c552f8d8a4851

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-hadoop-sequencefile-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-hadoop-sequencefile-LICENSE-ASL.txt b/solr/licenses/kite-morphlines-hadoop-sequencefile-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/kite-morphlines-hadoop-sequencefile-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-hadoop-sequencefile-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-hadoop-sequencefile-NOTICE.txt b/solr/licenses/kite-morphlines-hadoop-sequencefile-NOTICE.txt
deleted file mode 100644
index e66f597..0000000
--- a/solr/licenses/kite-morphlines-hadoop-sequencefile-NOTICE.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This product includes software developed by Cloudera, Inc.
-(http://www.cloudera.com/).
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-Saxonica (http://www.saxonica.com/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-json-1.1.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-json-1.1.0.jar.sha1 b/solr/licenses/kite-morphlines-json-1.1.0.jar.sha1
deleted file mode 100644
index 82db075..0000000
--- a/solr/licenses/kite-morphlines-json-1.1.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-33009c21ad90f18a8ddceca9680c83dc2006555d

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-json-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-json-LICENSE-ASL.txt b/solr/licenses/kite-morphlines-json-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/kite-morphlines-json-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-json-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-json-NOTICE.txt b/solr/licenses/kite-morphlines-json-NOTICE.txt
deleted file mode 100644
index e66f597..0000000
--- a/solr/licenses/kite-morphlines-json-NOTICE.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This product includes software developed by Cloudera, Inc.
-(http://www.cloudera.com/).
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-Saxonica (http://www.saxonica.com/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-saxon-1.1.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-saxon-1.1.0.jar.sha1 b/solr/licenses/kite-morphlines-saxon-1.1.0.jar.sha1
deleted file mode 100644
index ec131b2..0000000
--- a/solr/licenses/kite-morphlines-saxon-1.1.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7cdb3f9d756906b60778f4eef7fcb57ddd3ef0fa

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-saxon-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-saxon-LICENSE-ASL.txt b/solr/licenses/kite-morphlines-saxon-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/kite-morphlines-saxon-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-saxon-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-saxon-NOTICE.txt b/solr/licenses/kite-morphlines-saxon-NOTICE.txt
deleted file mode 100644
index e66f597..0000000
--- a/solr/licenses/kite-morphlines-saxon-NOTICE.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This product includes software developed by Cloudera, Inc.
-(http://www.cloudera.com/).
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-Saxonica (http://www.saxonica.com/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-tika-core-1.1.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-tika-core-1.1.0.jar.sha1 b/solr/licenses/kite-morphlines-tika-core-1.1.0.jar.sha1
deleted file mode 100644
index ace76dd..0000000
--- a/solr/licenses/kite-morphlines-tika-core-1.1.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-c9fb579f66f669529e4aa359270cc84ae720d4f8

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-tika-core-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-tika-core-LICENSE-ASL.txt b/solr/licenses/kite-morphlines-tika-core-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/kite-morphlines-tika-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-tika-core-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-tika-core-NOTICE.txt b/solr/licenses/kite-morphlines-tika-core-NOTICE.txt
deleted file mode 100644
index e66f597..0000000
--- a/solr/licenses/kite-morphlines-tika-core-NOTICE.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This product includes software developed by Cloudera, Inc.
-(http://www.cloudera.com/).
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-Saxonica (http://www.saxonica.com/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-tika-decompress-1.1.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-tika-decompress-1.1.0.jar.sha1 b/solr/licenses/kite-morphlines-tika-decompress-1.1.0.jar.sha1
deleted file mode 100644
index 10872c1..0000000
--- a/solr/licenses/kite-morphlines-tika-decompress-1.1.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-3ae30cdeeef3978520e64289a49426aad815ef4b

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-tika-decompress-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-tika-decompress-LICENSE-ASL.txt b/solr/licenses/kite-morphlines-tika-decompress-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/kite-morphlines-tika-decompress-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-tika-decompress-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-tika-decompress-NOTICE.txt b/solr/licenses/kite-morphlines-tika-decompress-NOTICE.txt
deleted file mode 100644
index e66f597..0000000
--- a/solr/licenses/kite-morphlines-tika-decompress-NOTICE.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This product includes software developed by Cloudera, Inc.
-(http://www.cloudera.com/).
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-Saxonica (http://www.saxonica.com/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-twitter-1.1.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-twitter-1.1.0.jar.sha1 b/solr/licenses/kite-morphlines-twitter-1.1.0.jar.sha1
deleted file mode 100644
index 421739d..0000000
--- a/solr/licenses/kite-morphlines-twitter-1.1.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-1a26addfbb112f3426c4fce2e3f7c1f338a04f25


[29/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/MapReduceIndexerTool.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/MapReduceIndexerTool.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/MapReduceIndexerTool.java
deleted file mode 100644
index 1c17855..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/MapReduceIndexerTool.java
+++ /dev/null
@@ -1,1388 +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.hadoop;
-
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.lang.invoke.MethodHandles;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.nio.charset.StandardCharsets;
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Random;
-import net.sourceforge.argparse4j.ArgumentParsers;
-import net.sourceforge.argparse4j.impl.Arguments;
-import net.sourceforge.argparse4j.impl.action.HelpArgumentAction;
-import net.sourceforge.argparse4j.impl.choice.RangeArgumentChoice;
-import net.sourceforge.argparse4j.impl.type.FileArgumentType;
-import net.sourceforge.argparse4j.inf.Argument;
-import net.sourceforge.argparse4j.inf.ArgumentGroup;
-import net.sourceforge.argparse4j.inf.ArgumentParser;
-import net.sourceforge.argparse4j.inf.ArgumentParserException;
-import net.sourceforge.argparse4j.inf.FeatureControl;
-import net.sourceforge.argparse4j.inf.Namespace;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.conf.Configured;
-import org.apache.hadoop.fs.FSDataOutputStream;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.PathFilter;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapred.JobClient;
-import org.apache.hadoop.mapreduce.Job;
-import org.apache.hadoop.mapreduce.JobContext;
-import org.apache.hadoop.mapreduce.lib.input.NLineInputFormat;
-import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
-import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
-import org.apache.hadoop.util.GenericOptionsParser;
-import org.apache.hadoop.util.Tool;
-import org.apache.hadoop.util.ToolRunner;
-import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.hadoop.dedup.RetainMostRecentUpdateConflictResolver;
-import org.apache.solr.hadoop.morphline.MorphlineMapRunner;
-import org.apache.solr.hadoop.morphline.MorphlineMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.kitesdk.morphline.base.Fields;
-
-import com.google.common.base.Preconditions;
-import com.google.common.io.ByteStreams;
-
-
-/**
- * Public API for a MapReduce batch job driver that creates a set of Solr index shards from a set of
- * input files and writes the indexes into HDFS, in a flexible, scalable and fault-tolerant manner.
- * Also supports merging the output shards into a set of live customer facing Solr servers,
- * typically a SolrCloud.
- */
-public class MapReduceIndexerTool extends Configured implements Tool {
-  
-  Job job; // visible for testing only
-  
-  public static final String RESULTS_DIR = "results";
-
-  static final String MAIN_MEMORY_RANDOMIZATION_THRESHOLD = 
-      MapReduceIndexerTool.class.getName() + ".mainMemoryRandomizationThreshold";
-  
-  private static final String FULL_INPUT_LIST = "full-input-list.txt";
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  
-  /**
-   * See http://argparse4j.sourceforge.net and for details see http://argparse4j.sourceforge.net/usage.html
-   */
-  static final class MyArgumentParser {
-    
-    private static final String SHOW_NON_SOLR_CLOUD = "--show-non-solr-cloud";
-
-    private boolean showNonSolrCloud = false;
-
-    /**
-     * Parses the given command line arguments.
-     * 
-     * @return exitCode null indicates the caller shall proceed with processing,
-     *         non-null indicates the caller shall exit the program with the
-     *         given exit status code.
-     */
-    public Integer parseArgs(String[] args, Configuration conf, Options opts) {
-      assert args != null;
-      assert conf != null;
-      assert opts != null;
-
-      if (args.length == 0) {
-        args = new String[] { "--help" };
-      }
-      
-      showNonSolrCloud = Arrays.asList(args).contains(SHOW_NON_SOLR_CLOUD); // intercept it first
-      
-      ArgumentParser parser = ArgumentParsers
-        .newArgumentParser("hadoop [GenericOptions]... jar solr-map-reduce-*.jar ", false)
-        .defaultHelp(true)
-        .description(
-          "MapReduce batch job driver that takes a morphline and creates a set of Solr index shards from a set of input files " +
-          "and writes the indexes into HDFS, in a flexible, scalable and fault-tolerant manner. " +
-          "It also supports merging the output shards into a set of live customer facing Solr servers, " +
-          "typically a SolrCloud. The program proceeds in several consecutive MapReduce based phases, as follows:" +
-          "\n\n" +
-          "1) Randomization phase: This (parallel) phase randomizes the list of input files in order to spread " +
-          "indexing load more evenly among the mappers of the subsequent phase." +  
-          "\n\n" +
-          "2) Mapper phase: This (parallel) phase takes the input files, extracts the relevant content, transforms it " +
-          "and hands SolrInputDocuments to a set of reducers. " +
-          "The ETL functionality is flexible and " +
-          "customizable using chains of arbitrary morphline commands that pipe records from one transformation command to another. " + 
-          "Commands to parse and transform a set of standard data formats such as Avro, CSV, Text, HTML, XML, " +
-          "PDF, Word, Excel, etc. are provided out of the box, and additional custom commands and parsers for additional " +
-          "file or data formats can be added as morphline plugins. " +
-          "This is done by implementing a simple Java interface that consumes a record (e.g. a file in the form of an InputStream " +
-          "plus some headers plus contextual metadata) and generates as output zero or more records. " + 
-          "Any kind of data format can be indexed and any Solr documents for any kind of Solr schema can be generated, " +
-          "and any custom ETL logic can be registered and executed.\n" +
-          "Record fields, including MIME types, can also explicitly be passed by force from the CLI to the morphline, for example: " +
-          "hadoop ... -D " + MorphlineMapRunner.MORPHLINE_FIELD_PREFIX + Fields.ATTACHMENT_MIME_TYPE + "=text/csv" +
-          "\n\n" +
-          "3) Reducer phase: This (parallel) phase loads the mapper's SolrInputDocuments into one EmbeddedSolrServer per reducer. " +
-          "Each such reducer and Solr server can be seen as a (micro) shard. The Solr servers store their " +
-          "data in HDFS." + 
-          "\n\n" +
-          "4) Mapper-only merge phase: This (parallel) phase merges the set of reducer shards into the number of solr " +
-          "shards expected by the user, using a mapper-only job. This phase is omitted if the number " +
-          "of shards is already equal to the number of shards expected by the user. " +
-          "\n\n" +
-          "5) Go-live phase: This optional (parallel) phase merges the output shards of the previous phase into a set of " +
-          "live customer facing Solr servers, typically a SolrCloud. " +
-          "If this phase is omitted you can explicitly point each Solr server to one of the HDFS output shard directories." +
-          "\n\n" +
-          "Fault Tolerance: Mapper and reducer task attempts are retried on failure per the standard MapReduce semantics. " +
-          "On program startup all data in the --output-dir is deleted if that output directory already exists. " +
-          "If the whole job fails you can retry simply by rerunning the program again using the same arguments." 
-          );
-
-      parser.addArgument("--help", "-help", "-h")
-        .help("Show this help message and exit")
-        .action(new HelpArgumentAction() {
-          @Override
-          public void run(ArgumentParser parser, Argument arg, Map<String, Object> attrs, String flag, Object value) throws ArgumentParserException {
-            parser.printHelp();
-            System.out.println();
-            System.out.print(ToolRunnerHelpFormatter.getGenericCommandUsage());
-            //ToolRunner.printGenericCommandUsage(System.out);
-            System.out.println(
-              "Examples: \n\n" + 
-
-              "# (Re)index an Avro based Twitter tweet file:\n" +
-              "sudo -u hdfs hadoop \\\n" + 
-              "  --config /etc/hadoop/conf.cloudera.mapreduce1 \\\n" +
-              "  jar target/solr-map-reduce-*.jar \\\n" +
-              "  -D 'mapred.child.java.opts=-Xmx500m' \\\n" + 
-//            "  -D 'mapreduce.child.java.opts=-Xmx500m' \\\n" + 
-              "  --log4j src/test/resources/log4j.properties \\\n" + 
-              "  --morphline-file ../search-core/src/test/resources/test-morphlines/tutorialReadAvroContainer.conf \\\n" + 
-              "  --solr-home-dir src/test/resources/solr/minimr \\\n" +
-              "  --output-dir hdfs://c2202.mycompany.com/user/$USER/test \\\n" + 
-              "  --shards 1 \\\n" + 
-              "  hdfs:///user/$USER/test-documents/sample-statuses-20120906-141433.avro\n" +
-              "\n" +
-              "# Go live by merging resulting index shards into a live Solr cluster\n" +
-              "# (explicitly specify Solr URLs - for a SolrCloud cluster see next example):\n" +
-              "sudo -u hdfs hadoop \\\n" + 
-              "  --config /etc/hadoop/conf.cloudera.mapreduce1 \\\n" +
-              "  jar target/solr-map-reduce-*.jar \\\n" +
-              "  -D 'mapred.child.java.opts=-Xmx500m' \\\n" + 
-//            "  -D 'mapreduce.child.java.opts=-Xmx500m' \\\n" + 
-              "  --log4j src/test/resources/log4j.properties \\\n" + 
-              "  --morphline-file ../search-core/src/test/resources/test-morphlines/tutorialReadAvroContainer.conf \\\n" + 
-              "  --solr-home-dir src/test/resources/solr/minimr \\\n" + 
-              "  --output-dir hdfs://c2202.mycompany.com/user/$USER/test \\\n" + 
-              "  --shard-url http://solr001.mycompany.com:8983/solr/collection1 \\\n" + 
-              "  --shard-url http://solr002.mycompany.com:8983/solr/collection1 \\\n" + 
-              "  --go-live \\\n" + 
-              "  hdfs:///user/foo/indir\n" +  
-              "\n" +
-              "# Go live by merging resulting index shards into a live SolrCloud cluster\n" +
-              "# (discover shards and Solr URLs through ZooKeeper):\n" +
-              "sudo -u hdfs hadoop \\\n" + 
-              "  --config /etc/hadoop/conf.cloudera.mapreduce1 \\\n" +
-              "  jar target/solr-map-reduce-*.jar \\\n" +
-              "  -D 'mapred.child.java.opts=-Xmx500m' \\\n" + 
-//            "  -D 'mapreduce.child.java.opts=-Xmx500m' \\\n" + 
-              "  --log4j src/test/resources/log4j.properties \\\n" + 
-              "  --morphline-file ../search-core/src/test/resources/test-morphlines/tutorialReadAvroContainer.conf \\\n" + 
-              "  --output-dir hdfs://c2202.mycompany.com/user/$USER/test \\\n" + 
-              "  --zk-host zk01.mycompany.com:2181/solr \\\n" + 
-              "  --collection collection1 \\\n" + 
-              "  --go-live \\\n" + 
-              "  hdfs:///user/foo/indir\n"
-            );
-            throw new FoundHelpArgument(); // Trick to prevent processing of any remaining arguments
-          }
-        });
-      
-      ArgumentGroup requiredGroup = parser.addArgumentGroup("Required arguments");
-      
-      Argument outputDirArg = requiredGroup.addArgument("--output-dir")
-        .metavar("HDFS_URI")
-        .type(new PathArgumentType(conf) {
-          @Override
-          public Path convert(ArgumentParser parser, Argument arg, String value) throws ArgumentParserException {
-            Path path = super.convert(parser, arg, value);
-            if ("hdfs".equals(path.toUri().getScheme()) && path.toUri().getAuthority() == null) {
-              // TODO: consider defaulting to hadoop's fs.default.name here or in SolrRecordWriter.createEmbeddedSolrServer()
-              throw new ArgumentParserException("Missing authority in path URI: " + path, parser); 
-            }
-            return path;
-          }
-        }.verifyHasScheme().verifyIsAbsolute().verifyCanWriteParent())
-        .required(true)
-        .help("HDFS directory to write Solr indexes to. Inside there one output directory per shard will be generated. " +
-              "Example: hdfs://c2202.mycompany.com/user/$USER/test");
-      
-      Argument inputListArg = parser.addArgument("--input-list")
-        .action(Arguments.append())
-        .metavar("URI")
-  //      .type(new PathArgumentType(fs).verifyExists().verifyCanRead())
-        .type(Path.class)
-        .help("Local URI or HDFS URI of a UTF-8 encoded file containing a list of HDFS URIs to index, " +
-              "one URI per line in the file. If '-' is specified, URIs are read from the standard input. " + 
-              "Multiple --input-list arguments can be specified.");
-        
-      Argument morphlineFileArg = requiredGroup.addArgument("--morphline-file")
-        .metavar("FILE")
-        .type(new FileArgumentType().verifyExists().verifyIsFile().verifyCanRead())
-        .required(true)
-        .help("Relative or absolute path to a local config file that contains one or more morphlines. " +
-              "The file must be UTF-8 encoded. Example: /path/to/morphline.conf");
-          
-      Argument morphlineIdArg = parser.addArgument("--morphline-id")
-        .metavar("STRING")
-        .type(String.class)
-        .help("The identifier of the morphline that shall be executed within the morphline config file " +
-              "specified by --morphline-file. If the --morphline-id option is ommitted the first (i.e. " +
-              "top-most) morphline within the config file is used. Example: morphline1");
-            
-      Argument solrHomeDirArg = nonSolrCloud(parser.addArgument("--solr-home-dir")
-        .metavar("DIR")
-        .type(new FileArgumentType() {
-          @Override
-          public File convert(ArgumentParser parser, Argument arg, String value) throws ArgumentParserException {
-            File solrHomeDir = super.convert(parser, arg, value);
-            File solrConfigFile = new File(new File(solrHomeDir, "conf"), "solrconfig.xml");
-            new FileArgumentType().verifyExists().verifyIsFile().verifyCanRead().convert(
-                parser, arg, solrConfigFile.getPath());
-            return solrHomeDir;
-          }
-        }.verifyIsDirectory().verifyCanRead())
-        .required(false)
-        .help("Relative or absolute path to a local dir containing Solr conf/ dir and in particular " +
-              "conf/solrconfig.xml and optionally also lib/ dir. This directory will be uploaded to each MR task. " +
-              "Example: src/test/resources/solr/minimr"));
-        
-      Argument updateConflictResolverArg = parser.addArgument("--update-conflict-resolver")
-        .metavar("FQCN")
-        .type(String.class)
-        .setDefault(RetainMostRecentUpdateConflictResolver.class.getName())
-        .help("Fully qualified class name of a Java class that implements the UpdateConflictResolver interface. " +
-            "This enables deduplication and ordering of a series of document updates for the same unique document " +
-            "key. For example, a MapReduce batch job might index multiple files in the same job where some of the " +
-            "files contain old and new versions of the very same document, using the same unique document key.\n" +
-            "Typically, implementations of this interface forbid collisions by throwing an exception, or ignore all but " +
-            "the most recent document version, or, in the general case, order colliding updates ascending from least " +
-            "recent to most recent (partial) update. The caller of this interface (i.e. the Hadoop Reducer) will then " +
-            "apply the updates to Solr in the order returned by the orderUpdates() method.\n" +
-            "The default RetainMostRecentUpdateConflictResolver implementation ignores all but the most recent document " +
-            "version, based on a configurable numeric Solr field, which defaults to the file_last_modified timestamp");
-      
-      Argument mappersArg = parser.addArgument("--mappers")
-        .metavar("INTEGER")
-        .type(Integer.class)
-        .choices(new RangeArgumentChoice(-1, Integer.MAX_VALUE)) // TODO: also support X% syntax where X is an integer
-        .setDefault(-1)
-        .help("Tuning knob that indicates the maximum number of MR mapper tasks to use. -1 indicates use all map slots " +
-            "available on the cluster.");
-  
-      Argument reducersArg = parser.addArgument("--reducers")
-        .metavar("INTEGER")
-        .type(Integer.class)
-        .choices(new RangeArgumentChoice(-2, Integer.MAX_VALUE)) // TODO: also support X% syntax where X is an integer
-        .setDefault(-1)
-        .help("Tuning knob that indicates the number of reducers to index into. " +
-            "0 is reserved for a mapper-only feature that may ship in a future release. " +
-            "-1 indicates use all reduce slots available on the cluster. " +
-            "-2 indicates use one reducer per output shard, which disables the mtree merge MR algorithm. " +
-            "The mtree merge MR algorithm improves scalability by spreading load " +
-            "(in particular CPU load) among a number of parallel reducers that can be much larger than the number " +
-            "of solr shards expected by the user. It can be seen as an extension of concurrent lucene merges " +
-            "and tiered lucene merges to the clustered case. The subsequent mapper-only phase " +
-            "merges the output of said large number of reducers to the number of shards expected by the user, " +
-            "again by utilizing more available parallelism on the cluster.");
-
-      Argument fanoutArg = parser.addArgument("--fanout")
-        .metavar("INTEGER")
-        .type(Integer.class)
-        .choices(new RangeArgumentChoice(2, Integer.MAX_VALUE))
-        .setDefault(Integer.MAX_VALUE)
-        .help(FeatureControl.SUPPRESS);
-  
-      Argument maxSegmentsArg = parser.addArgument("--max-segments")
-        .metavar("INTEGER")  
-        .type(Integer.class)
-        .choices(new RangeArgumentChoice(1, Integer.MAX_VALUE))
-        .setDefault(1)
-        .help("Tuning knob that indicates the maximum number of segments to be contained on output in the index of " +
-            "each reducer shard. After a reducer has built its output index it applies a merge policy to merge segments " +
-            "until there are <= maxSegments lucene segments left in this index. " + 
-            "Merging segments involves reading and rewriting all data in all these segment files, " + 
-            "potentially multiple times, which is very I/O intensive and time consuming. " + 
-            "However, an index with fewer segments can later be merged faster, " +
-            "and it can later be queried faster once deployed to a live Solr serving shard. " + 
-            "Set maxSegments to 1 to optimize the index for low query latency. " + 
-            "In a nutshell, a small maxSegments value trades indexing latency for subsequently improved query latency. " + 
-            "This can be a reasonable trade-off for batch indexing systems.");
-      
-      Argument fairSchedulerPoolArg = parser.addArgument("--fair-scheduler-pool")
-        .metavar("STRING")
-        .help("Optional tuning knob that indicates the name of the fair scheduler pool to submit jobs to. " +
-              "The Fair Scheduler is a pluggable MapReduce scheduler that provides a way to share large clusters. " +
-              "Fair scheduling is a method of assigning resources to jobs such that all jobs get, on average, an " +
-              "equal share of resources over time. When there is a single job running, that job uses the entire " +
-              "cluster. When other jobs are submitted, tasks slots that free up are assigned to the new jobs, so " +
-              "that each job gets roughly the same amount of CPU time. Unlike the default Hadoop scheduler, which " +
-              "forms a queue of jobs, this lets short jobs finish in reasonable time while not starving long jobs. " +
-              "It is also an easy way to share a cluster between multiple of users. Fair sharing can also work with " +
-              "job priorities - the priorities are used as weights to determine the fraction of total compute time " +
-              "that each job gets.");
-  
-      Argument dryRunArg = parser.addArgument("--dry-run")
-        .action(Arguments.storeTrue())
-        .help("Run in local mode and print documents to stdout instead of loading them into Solr. This executes " +
-              "the morphline in the client process (without submitting a job to MR) for quicker turnaround during " +
-              "early trial & debug sessions.");
-    
-      Argument log4jConfigFileArg = parser.addArgument("--log4j")
-        .metavar("FILE")
-        .type(new FileArgumentType().verifyExists().verifyIsFile().verifyCanRead())
-        .help("Relative or absolute path to a log4j.properties config file on the local file system. This file " +
-            "will be uploaded to each MR task. Example: /path/to/log4j.properties");
-    
-      Argument verboseArg = parser.addArgument("--verbose", "-v")
-        .action(Arguments.storeTrue())
-        .help("Turn on verbose output.");
-  
-      parser.addArgument(SHOW_NON_SOLR_CLOUD)
-        .action(Arguments.storeTrue())
-        .help("Also show options for Non-SolrCloud mode as part of --help.");
-      
-      ArgumentGroup clusterInfoGroup = parser
-          .addArgumentGroup("Cluster arguments")
-          .description(
-              "Arguments that provide information about your Solr cluster. "
-            + nonSolrCloud("If you are building shards for a SolrCloud cluster, pass the --zk-host argument. "
-            + "If you are building shards for "
-            + "a Non-SolrCloud cluster, pass the --shard-url argument one or more times. To build indexes for "
-            + "a replicated Non-SolrCloud cluster with --shard-url, pass replica urls consecutively and also pass --shards. "
-            + "Using --go-live requires either --zk-host or --shard-url."));
-
-      Argument zkHostArg = clusterInfoGroup.addArgument("--zk-host")
-        .metavar("STRING")
-        .type(String.class)
-        .help("The address of a ZooKeeper ensemble being used by a SolrCloud cluster. "
-            + "This ZooKeeper ensemble will be examined to determine the number of output "
-            + "shards to create as well as the Solr URLs to merge the output shards into when using the --go-live option. "
-            + "Requires that you also pass the --collection to merge the shards into.\n"
-            + "\n"
-            + "The --zk-host option implements the same partitioning semantics as the standard SolrCloud " 
-            + "Near-Real-Time (NRT) API. This enables to mix batch updates from MapReduce ingestion with "
-            + "updates from standard Solr NRT ingestion on the same SolrCloud cluster, "
-            + "using identical unique document keys.\n"
-            + "\n"
-            + "Format is: a list of comma separated host:port pairs, each corresponding to a zk "
-            + "server. Example: '127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183' If "
-            + "the optional chroot suffix is used the example would look "
-            + "like: '127.0.0.1:2181/solr,127.0.0.1:2182/solr,127.0.0.1:2183/solr' "
-            + "where the client would be rooted at '/solr' and all paths "
-            + "would be relative to this root - i.e. getting/setting/etc... "
-            + "'/foo/bar' would result in operations being run on "
-            + "'/solr/foo/bar' (from the server perspective).\n"
-            + nonSolrCloud("\n"
-            + "If --solr-home-dir is not specified, the Solr home directory for the collection "
-            + "will be downloaded from this ZooKeeper ensemble."));
-
-      Argument shardUrlsArg = nonSolrCloud(clusterInfoGroup.addArgument("--shard-url")
-        .metavar("URL")
-        .type(String.class)
-        .action(Arguments.append())
-        .help("Solr URL to merge resulting shard into if using --go-live. " +
-              "Example: http://solr001.mycompany.com:8983/solr/collection1. " + 
-              "Multiple --shard-url arguments can be specified, one for each desired shard. " +
-              "If you are merging shards into a SolrCloud cluster, use --zk-host instead."));
-      
-      Argument shardsArg = nonSolrCloud(clusterInfoGroup.addArgument("--shards")
-        .metavar("INTEGER")
-        .type(Integer.class)
-        .choices(new RangeArgumentChoice(1, Integer.MAX_VALUE))
-        .help("Number of output shards to generate."));
-      
-      ArgumentGroup goLiveGroup = parser.addArgumentGroup("Go live arguments")
-        .description("Arguments for merging the shards that are built into a live Solr cluster. " +
-                     "Also see the Cluster arguments.");
-
-      Argument goLiveArg = goLiveGroup.addArgument("--go-live")
-        .action(Arguments.storeTrue())
-        .help("Allows you to optionally merge the final index shards into a live Solr cluster after they are built. " +
-              "You can pass the ZooKeeper address with --zk-host and the relevant cluster information will be auto detected. " +
-              nonSolrCloud("If you are not using a SolrCloud cluster, --shard-url arguments can be used to specify each SolrCore to merge " +
-              "each shard into."));
-
-      Argument collectionArg = goLiveGroup.addArgument("--collection")
-        .metavar("STRING")
-        .help("The SolrCloud collection to merge shards into when using --go-live and --zk-host. Example: collection1");
-      
-      Argument goLiveThreadsArg = goLiveGroup.addArgument("--go-live-threads")
-        .metavar("INTEGER")
-        .type(Integer.class)
-        .choices(new RangeArgumentChoice(1, Integer.MAX_VALUE))
-        .setDefault(1000)
-        .help("Tuning knob that indicates the maximum number of live merges to run in parallel at one time.");
-      
-      // trailing positional arguments
-      Argument inputFilesArg = parser.addArgument("input-files")
-        .metavar("HDFS_URI")
-        .type(new PathArgumentType(conf).verifyHasScheme().verifyExists().verifyCanRead())
-        .nargs("*")
-        .setDefault()
-        .help("HDFS URI of file or directory tree to index.");
-          
-      Namespace ns;
-      try {
-        ns = parser.parseArgs(args);
-      } catch (FoundHelpArgument e) {
-        return 0;
-      } catch (ArgumentParserException e) {
-        parser.handleError(e);
-        return 1;
-      }
-      
-      opts.log4jConfigFile = (File) ns.get(log4jConfigFileArg.getDest());
-      if (opts.log4jConfigFile != null) {
-        Utils.configureLog4jProperties(opts.log4jConfigFile.getPath());
-      }
-      LOG.debug("Parsed command line args: {}", ns);
-      
-      opts.inputLists = ns.getList(inputListArg.getDest());
-      if (opts.inputLists == null) {
-        opts.inputLists = Collections.EMPTY_LIST;
-      }
-      opts.inputFiles = ns.getList(inputFilesArg.getDest());
-      opts.outputDir = (Path) ns.get(outputDirArg.getDest());
-      opts.mappers = ns.getInt(mappersArg.getDest());
-      opts.reducers = ns.getInt(reducersArg.getDest());
-      opts.updateConflictResolver = ns.getString(updateConflictResolverArg.getDest());
-      opts.fanout = ns.getInt(fanoutArg.getDest());
-      opts.maxSegments = ns.getInt(maxSegmentsArg.getDest());
-      opts.morphlineFile = (File) ns.get(morphlineFileArg.getDest());
-      opts.morphlineId = ns.getString(morphlineIdArg.getDest());
-      opts.solrHomeDir = (File) ns.get(solrHomeDirArg.getDest());
-      opts.fairSchedulerPool = ns.getString(fairSchedulerPoolArg.getDest());
-      opts.isDryRun = ns.getBoolean(dryRunArg.getDest());
-      opts.isVerbose = ns.getBoolean(verboseArg.getDest());
-      opts.zkHost = ns.getString(zkHostArg.getDest());
-      opts.shards = ns.getInt(shardsArg.getDest());
-      opts.shardUrls = buildShardUrls(ns.getList(shardUrlsArg.getDest()), opts.shards);
-      opts.goLive = ns.getBoolean(goLiveArg.getDest());
-      opts.goLiveThreads = ns.getInt(goLiveThreadsArg.getDest());
-      opts.collection = ns.getString(collectionArg.getDest());
-
-      try {
-        if (opts.reducers == 0) {
-          throw new ArgumentParserException("--reducers must not be zero", parser); 
-        }
-        verifyGoLiveArgs(opts, parser);
-      } catch (ArgumentParserException e) {
-        parser.handleError(e);
-        return 1;
-      }
-
-      if (opts.inputLists.isEmpty() && opts.inputFiles.isEmpty()) {
-        LOG.info("No input files specified - nothing to process");
-        return 0; // nothing to process
-      }
-      return null;     
-    }
-
-    // make it a "hidden" option, i.e. the option is functional and enabled but not shown in --help output
-    private Argument nonSolrCloud(Argument arg) {
-        return showNonSolrCloud ? arg : arg.help(FeatureControl.SUPPRESS); 
-    }
-
-    private String nonSolrCloud(String msg) {
-        return showNonSolrCloud ? msg : "";
-    }
-
-    /** Marker trick to prevent processing of any remaining arguments once --help option has been parsed */
-    private static final class FoundHelpArgument extends RuntimeException {      
-    }
-  }
-  // END OF INNER CLASS  
-
-  static List<List<String>> buildShardUrls(List<Object> urls, Integer numShards) {
-    if (urls == null) return null;
-    List<List<String>> shardUrls = new ArrayList<>(urls.size());
-    List<String> list = null;
-    
-    int sz;
-    if (numShards == null) {
-      numShards = urls.size();
-    }
-    sz = (int) Math.ceil(urls.size() / (float)numShards);
-    for (int i = 0; i < urls.size(); i++) {
-      if (i % sz == 0) {
-        list = new ArrayList<>();
-        shardUrls.add(list);
-      }
-      list.add((String) urls.get(i));
-    }
-
-    return shardUrls;
-  }
-  
-  static final class Options {    
-    boolean goLive;
-    String collection;
-    String zkHost;
-    Integer goLiveThreads;
-    List<List<String>> shardUrls;
-    List<Path> inputLists;
-    List<Path> inputFiles;
-    Path outputDir;
-    int mappers;
-    int reducers;
-    String updateConflictResolver;
-    int fanout;
-    Integer shards;
-    int maxSegments;
-    File morphlineFile;
-    String morphlineId;
-    File solrHomeDir;
-    String fairSchedulerPool;
-    boolean isDryRun;
-    File log4jConfigFile;
-    boolean isVerbose;
-  }
-  // END OF INNER CLASS  
-
-  
-  /** API for command line clients */
-  public static void main(String[] args) throws Exception  {
-    int res = ToolRunner.run(new Configuration(), new MapReduceIndexerTool(), args);
-    System.exit(res);
-  }
-
-  public MapReduceIndexerTool() {}
-
-  @Override
-  public int run(String[] args) throws Exception {
-    Options opts = new Options();
-    Integer exitCode = new MyArgumentParser().parseArgs(args, getConf(), opts);
-    if (exitCode != null) {
-      return exitCode;
-    }
-    return run(opts);
-  }
-  
-  /** API for Java clients; visible for testing; may become a public API eventually */
-  int run(Options options) throws Exception {
-    if (getConf().getBoolean("isMR1", false) && "local".equals(getConf().get("mapred.job.tracker"))) {
-      throw new IllegalStateException(
-        "Running with LocalJobRunner (i.e. all of Hadoop inside a single JVM) is not supported " +
-        "because LocalJobRunner does not (yet) implement the Hadoop Distributed Cache feature, " +
-        "which is required for passing files via --files and --libjars");
-    }
-
-    long programStartTime = System.nanoTime();
-    if (options.fairSchedulerPool != null) {
-      getConf().set("mapred.fairscheduler.pool", options.fairSchedulerPool);
-    }
-    getConf().setInt(SolrOutputFormat.SOLR_RECORD_WRITER_MAX_SEGMENTS, options.maxSegments);
-    
-    // switch off a false warning about allegedly not implementing Tool
-    // also see http://hadoop.6.n7.nabble.com/GenericOptionsParser-warning-td8103.html
-    // also see https://issues.apache.org/jira/browse/HADOOP-8183
-    getConf().setBoolean("mapred.used.genericoptionsparser", true);
-    
-    if (options.log4jConfigFile != null) {
-      Utils.setLogConfigFile(options.log4jConfigFile, getConf());
-      addDistributedCacheFile(options.log4jConfigFile, getConf());
-    }
-
-    job = Job.getInstance(getConf());
-    job.setJarByClass(getClass());
-
-    if (options.morphlineFile == null) {
-      throw new ArgumentParserException("Argument --morphline-file is required", null);
-    }
-    verifyGoLiveArgs(options, null);
-    verifyZKStructure(options, null);
-    
-    int mappers = new JobClient(job.getConfiguration()).getClusterStatus().getMaxMapTasks(); // MR1
-    //int mappers = job.getCluster().getClusterStatus().getMapSlotCapacity(); // Yarn only
-    LOG.info("Cluster reports {} mapper slots", mappers);
-    
-    if (options.mappers == -1) { 
-      mappers = 8 * mappers; // better accomodate stragglers
-    } else {
-      mappers = options.mappers;
-    }
-    if (mappers <= 0) {
-      throw new IllegalStateException("Illegal number of mappers: " + mappers);
-    }
-    options.mappers = mappers;
-    
-    FileSystem fs = options.outputDir.getFileSystem(job.getConfiguration());
-    if (fs.exists(options.outputDir) && !delete(options.outputDir, true, fs)) {
-      return -1;
-    }
-    Path outputResultsDir = new Path(options.outputDir, RESULTS_DIR);
-    Path outputReduceDir = new Path(options.outputDir, "reducers");
-    Path outputStep1Dir = new Path(options.outputDir, "tmp1");    
-    Path outputStep2Dir = new Path(options.outputDir, "tmp2");    
-    Path outputTreeMergeStep = new Path(options.outputDir, "mtree-merge-output");
-    Path fullInputList = new Path(outputStep1Dir, FULL_INPUT_LIST);
-    
-    LOG.debug("Creating list of input files for mappers: {}", fullInputList);
-    long numFiles = addInputFiles(options.inputFiles, options.inputLists, fullInputList, job.getConfiguration());
-    if (numFiles == 0) {
-      LOG.info("No input files found - nothing to process");
-      return 0;
-    }
-    int numLinesPerSplit = (int) ceilDivide(numFiles, mappers);
-    if (numLinesPerSplit < 0) { // numeric overflow from downcasting long to int?
-      numLinesPerSplit = Integer.MAX_VALUE;
-    }
-    numLinesPerSplit = Math.max(1, numLinesPerSplit);
-
-    int realMappers = Math.min(mappers, (int) ceilDivide(numFiles, numLinesPerSplit));
-    calculateNumReducers(options, realMappers);
-    int reducers = options.reducers;
-    LOG.info("Using these parameters: " +
-        "numFiles: {}, mappers: {}, realMappers: {}, reducers: {}, shards: {}, fanout: {}, maxSegments: {}",
-        new Object[] {numFiles, mappers, realMappers, reducers, options.shards, options.fanout, options.maxSegments});
-        
-    
-    LOG.info("Randomizing list of {} input files to spread indexing load more evenly among mappers", numFiles);
-    long startTime = System.nanoTime();      
-    if (numFiles < job.getConfiguration().getInt(MAIN_MEMORY_RANDOMIZATION_THRESHOLD, 100001)) {
-      // If there are few input files reduce latency by directly running main memory randomization 
-      // instead of launching a high latency MapReduce job
-      randomizeFewInputFiles(fs, outputStep2Dir, fullInputList);
-    } else {
-      // Randomize using a MapReduce job. Use sequential algorithm below a certain threshold because there's no
-      // benefit in using many parallel mapper tasks just to randomize the order of a few lines each
-      int numLinesPerRandomizerSplit = Math.max(10 * 1000 * 1000, numLinesPerSplit);
-      Job randomizerJob = randomizeManyInputFiles(getConf(), fullInputList, outputStep2Dir, numLinesPerRandomizerSplit);
-      if (!waitForCompletion(randomizerJob, options.isVerbose)) {
-        return -1; // job failed
-      }
-    }
-    float secs = (System.nanoTime() - startTime) / (float)(10^9);
-    LOG.info("Done. Randomizing list of {} input files took {} secs", numFiles, secs);
-    
-    
-    job.setInputFormatClass(NLineInputFormat.class);
-    NLineInputFormat.addInputPath(job, outputStep2Dir);
-    NLineInputFormat.setNumLinesPerSplit(job, numLinesPerSplit);    
-    FileOutputFormat.setOutputPath(job, outputReduceDir);
-    
-    String mapperClass = job.getConfiguration().get(JobContext.MAP_CLASS_ATTR);
-    if (mapperClass == null) { // enable customization
-      Class clazz = MorphlineMapper.class;
-      mapperClass = clazz.getName();
-      job.setMapperClass(clazz);
-    }
-    job.setJobName(getClass().getName() + "/" + Utils.getShortClassName(mapperClass));
-    
-    if (job.getConfiguration().get(JobContext.REDUCE_CLASS_ATTR) == null) { // enable customization
-      job.setReducerClass(SolrReducer.class);
-    }
-    if (options.updateConflictResolver == null) {
-      throw new IllegalArgumentException("updateConflictResolver must not be null");
-    }
-    job.getConfiguration().set(SolrReducer.UPDATE_CONFLICT_RESOLVER, options.updateConflictResolver);
-    
-    if (options.zkHost != null) {
-      assert options.collection != null;
-      /*
-       * MapReduce partitioner that partitions the Mapper output such that each
-       * SolrInputDocument gets sent to the SolrCloud shard that it would have
-       * been sent to if the document were ingested via the standard SolrCloud
-       * Near Real Time (NRT) API.
-       * 
-       * In other words, this class implements the same partitioning semantics
-       * as the standard SolrCloud NRT API. This enables to mix batch updates
-       * from MapReduce ingestion with updates from standard NRT ingestion on
-       * the same SolrCloud cluster, using identical unique document keys.
-       */
-      if (job.getConfiguration().get(JobContext.PARTITIONER_CLASS_ATTR) == null) { // enable customization
-        job.setPartitionerClass(SolrCloudPartitioner.class);
-      }
-      job.getConfiguration().set(SolrCloudPartitioner.ZKHOST, options.zkHost);
-      job.getConfiguration().set(SolrCloudPartitioner.COLLECTION, options.collection);
-    }
-    job.getConfiguration().setInt(SolrCloudPartitioner.SHARDS, options.shards);
-
-    job.setOutputFormatClass(SolrOutputFormat.class);
-    if (options.solrHomeDir != null) {
-      SolrOutputFormat.setupSolrHomeCache(options.solrHomeDir, job);
-    } else {
-      assert options.zkHost != null;
-      // use the config that this collection uses for the SolrHomeCache.
-      ZooKeeperInspector zki = new ZooKeeperInspector();
-      SolrZkClient zkClient = zki.getZkClient(options.zkHost);
-      try {
-        String configName = zki.readConfigName(zkClient, options.collection);
-        File tmpSolrHomeDir = zki.downloadConfigDir(zkClient, configName);
-        SolrOutputFormat.setupSolrHomeCache(tmpSolrHomeDir, job);
-        options.solrHomeDir = tmpSolrHomeDir;
-      } finally {
-        zkClient.close();
-      }
-    }
-    
-    MorphlineMapRunner runner = setupMorphline(options);
-    if (options.isDryRun && runner != null) {
-      LOG.info("Indexing {} files in dryrun mode", numFiles);
-      startTime = System.nanoTime();
-      dryRun(runner, fs, fullInputList);
-      secs = (System.nanoTime() - startTime) / (float)(10^9);
-      LOG.info("Done. Indexing {} files in dryrun mode took {} secs", numFiles, secs);
-      goodbye(null, programStartTime);
-      return 0;
-    }          
-    job.getConfiguration().set(MorphlineMapRunner.MORPHLINE_FILE_PARAM, options.morphlineFile.getName());
-
-    job.setNumReduceTasks(reducers);  
-    job.setOutputKeyClass(Text.class);
-    job.setOutputValueClass(SolrInputDocumentWritable.class);
-    LOG.info("Indexing {} files using {} real mappers into {} reducers", new Object[] {numFiles, realMappers, reducers});
-    startTime = System.nanoTime();
-    if (!waitForCompletion(job, options.isVerbose)) {
-      return -1; // job failed
-    }
-
-    secs = (System.nanoTime() - startTime) / (float)(10^9);
-    LOG.info("Done. Indexing {} files using {} real mappers into {} reducers took {} secs", new Object[] {numFiles, realMappers, reducers, secs});
-
-    int mtreeMergeIterations = 0;
-    if (reducers > options.shards) {
-      mtreeMergeIterations = (int) Math.round(log(options.fanout, reducers / options.shards));
-    }
-    LOG.debug("MTree merge iterations to do: {}", mtreeMergeIterations);
-    int mtreeMergeIteration = 1;
-    while (reducers > options.shards) { // run a mtree merge iteration
-      job = Job.getInstance(getConf());
-      job.setJarByClass(getClass());
-      job.setJobName(getClass().getName() + "/" + Utils.getShortClassName(TreeMergeMapper.class));
-      job.setMapperClass(TreeMergeMapper.class);
-      job.setOutputFormatClass(TreeMergeOutputFormat.class);
-      job.setNumReduceTasks(0);  
-      job.setOutputKeyClass(Text.class);
-      job.setOutputValueClass(NullWritable.class);    
-      job.setInputFormatClass(NLineInputFormat.class);
-      
-      Path inputStepDir = new Path(options.outputDir, "mtree-merge-input-iteration" + mtreeMergeIteration);
-      fullInputList = new Path(inputStepDir, FULL_INPUT_LIST);    
-      LOG.debug("MTree merge iteration {}/{}: Creating input list file for mappers {}", new Object[] {mtreeMergeIteration, mtreeMergeIterations, fullInputList});
-      numFiles = createTreeMergeInputDirList(outputReduceDir, fs, fullInputList);    
-      if (numFiles != reducers) {
-        throw new IllegalStateException("Not same reducers: " + reducers + ", numFiles: " + numFiles);
-      }
-      NLineInputFormat.addInputPath(job, fullInputList);
-      NLineInputFormat.setNumLinesPerSplit(job, options.fanout);    
-      FileOutputFormat.setOutputPath(job, outputTreeMergeStep);
-      
-      LOG.info("MTree merge iteration {}/{}: Merging {} shards into {} shards using fanout {}", new Object[] { 
-          mtreeMergeIteration, mtreeMergeIterations, reducers, (reducers / options.fanout), options.fanout});
-      startTime = System.nanoTime();
-      if (!waitForCompletion(job, options.isVerbose)) {
-        return -1; // job failed
-      }
-      if (!renameTreeMergeShardDirs(outputTreeMergeStep, job, fs)) {
-        return -1;
-      }
-      secs = (System.nanoTime() - startTime) / (float)(10^9);
-      LOG.info("MTree merge iteration {}/{}: Done. Merging {} shards into {} shards using fanout {} took {} secs",
-          new Object[] {mtreeMergeIteration, mtreeMergeIterations, reducers, (reducers / options.fanout), options.fanout, secs});
-      
-      if (!delete(outputReduceDir, true, fs)) {
-        return -1;
-      }
-      if (!rename(outputTreeMergeStep, outputReduceDir, fs)) {
-        return -1;
-      }
-      assert reducers % options.fanout == 0;
-      reducers = reducers / options.fanout;
-      mtreeMergeIteration++;
-    }
-    assert reducers == options.shards;
-    
-    // normalize output shard dir prefix, i.e.
-    // rename part-r-00000 to part-00000 (stems from zero tree merge iterations)
-    // rename part-m-00000 to part-00000 (stems from > 0 tree merge iterations)
-    for (FileStatus stats : fs.listStatus(outputReduceDir)) {
-      String dirPrefix = SolrOutputFormat.getOutputName(job);
-      Path srcPath = stats.getPath();
-      if (stats.isDirectory() && srcPath.getName().startsWith(dirPrefix)) {
-        String dstName = dirPrefix + srcPath.getName().substring(dirPrefix.length() + "-m".length());
-        Path dstPath = new Path(srcPath.getParent(), dstName);
-        if (!rename(srcPath, dstPath, fs)) {
-          return -1;
-        }        
-      }
-    };    
-    
-    // publish results dir    
-    if (!rename(outputReduceDir, outputResultsDir, fs)) {
-      return -1;
-    }
-
-    if (options.goLive && !new GoLive().goLive(options, listSortedOutputShardDirs(outputResultsDir, fs))) {
-      return -1;
-    }
-    
-    goodbye(job, programStartTime);    
-    return 0;
-  }
-
-  private void calculateNumReducers(Options options, int realMappers) throws IOException {
-    if (options.shards <= 0) {
-      throw new IllegalStateException("Illegal number of shards: " + options.shards);
-    }
-    if (options.fanout <= 1) {
-      throw new IllegalStateException("Illegal fanout: " + options.fanout);
-    }
-    if (realMappers <= 0) {
-      throw new IllegalStateException("Illegal realMappers: " + realMappers);
-    }
-    
-
-    int reducers = new JobClient(job.getConfiguration()).getClusterStatus().getMaxReduceTasks(); // MR1
-    //reducers = job.getCluster().getClusterStatus().getReduceSlotCapacity(); // Yarn only      
-    LOG.info("Cluster reports {} reduce slots", reducers);
-
-    if (options.reducers == -2) {
-      reducers = options.shards;
-    } else if (options.reducers == -1) {
-      reducers = Math.min(reducers, realMappers); // no need to use many reducers when using few mappers
-    } else {
-      if (options.reducers == 0) {
-        throw new IllegalStateException("Illegal zero reducers");
-      }
-      reducers = options.reducers;
-    }
-    reducers = Math.max(reducers, options.shards);
-    
-    if (reducers != options.shards) {
-      // Ensure fanout isn't misconfigured. fanout can't meaningfully be larger than what would be 
-      // required to merge all leaf shards in one single tree merge iteration into root shards
-      options.fanout = Math.min(options.fanout, (int) ceilDivide(reducers, options.shards));
-      
-      // Ensure invariant reducers == options.shards * (fanout ^ N) where N is an integer >= 1.
-      // N is the number of mtree merge iterations.
-      // This helps to evenly spread docs among root shards and simplifies the impl of the mtree merge algorithm.
-      int s = options.shards;
-      while (s < reducers) { 
-        s = s * options.fanout;
-      }
-      reducers = s;
-      assert reducers % options.fanout == 0;
-    }
-    options.reducers = reducers;
-  }
-  
-  private long addInputFiles(List<Path> inputFiles, List<Path> inputLists, Path fullInputList, Configuration conf) 
-      throws IOException {
-    
-    long numFiles = 0;
-    FileSystem fs = fullInputList.getFileSystem(conf);
-    FSDataOutputStream out = fs.create(fullInputList);
-    try {
-      Writer writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
-      
-      for (Path inputFile : inputFiles) {
-        FileSystem inputFileFs = inputFile.getFileSystem(conf);
-        if (inputFileFs.exists(inputFile)) {
-          PathFilter pathFilter = new PathFilter() {      
-            @Override
-            public boolean accept(Path path) { // ignore "hidden" files and dirs
-              return !(path.getName().startsWith(".") || path.getName().startsWith("_")); 
-            }
-          };
-          numFiles += addInputFilesRecursively(inputFile, writer, inputFileFs, pathFilter);
-        }
-      }
-
-      for (Path inputList : inputLists) {
-        InputStream in;
-        if (inputList.toString().equals("-")) {
-          in = System.in;
-        } else if (inputList.isAbsoluteAndSchemeAuthorityNull()) {
-          in = new BufferedInputStream(new FileInputStream(inputList.toString()));
-        } else {
-          in = inputList.getFileSystem(conf).open(inputList);
-        }
-        try {
-          BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
-          String line;
-          while ((line = reader.readLine()) != null) {
-            writer.write(line + "\n");
-            numFiles++;
-          }
-          reader.close();
-        } finally {
-          in.close();
-        }
-      }
-      
-      writer.close();
-    } finally {
-      out.close();
-    }    
-    return numFiles;
-  }
-  
-  /**
-   * Add the specified file to the input set, if path is a directory then
-   * add the files contained therein.
-   */
-  private long addInputFilesRecursively(Path path, Writer writer, FileSystem fs, PathFilter pathFilter) throws IOException {
-    long numFiles = 0;
-    for (FileStatus stat : fs.listStatus(path, pathFilter)) {
-      LOG.debug("Adding path {}", stat.getPath());
-      if (stat.isDirectory()) {
-        numFiles += addInputFilesRecursively(stat.getPath(), writer, fs, pathFilter);
-      } else {
-        writer.write(stat.getPath().toString() + "\n");
-        numFiles++;
-      }
-    }
-    return numFiles;
-  }
-  
-  private void randomizeFewInputFiles(FileSystem fs, Path outputStep2Dir, Path fullInputList) throws IOException {    
-    List<String> lines = new ArrayList();
-    BufferedReader reader = new BufferedReader(new InputStreamReader(fs.open(fullInputList), StandardCharsets.UTF_8));
-    try {
-      String line;
-      while ((line = reader.readLine()) != null) {
-        lines.add(line);
-      }
-    } finally {
-      reader.close();
-    }
-    
-    Collections.shuffle(lines, new Random(421439783L)); // constant seed for reproducability
-    
-    FSDataOutputStream out = fs.create(new Path(outputStep2Dir, FULL_INPUT_LIST));
-    Writer writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
-    try {
-      for (String line : lines) {
-        writer.write(line + "\n");
-      } 
-    } finally {
-      writer.close();
-    }
-  }
-
-  /**
-   * To uniformly spread load across all mappers we randomize fullInputList
-   * with a separate small Mapper & Reducer preprocessing step. This way
-   * each input line ends up on a random position in the output file list.
-   * Each mapper indexes a disjoint consecutive set of files such that each
-   * set has roughly the same size, at least from a probabilistic
-   * perspective.
-   * 
-   * For example an input file with the following input list of URLs:
-   * 
-   * A
-   * B
-   * C
-   * D
-   * 
-   * might be randomized into the following output list of URLs:
-   * 
-   * C
-   * A
-   * D
-   * B
-   * 
-   * The implementation sorts the list of lines by randomly generated numbers.
-   */
-  private Job randomizeManyInputFiles(Configuration baseConfig, Path fullInputList, Path outputStep2Dir, int numLinesPerSplit) 
-      throws IOException {
-    
-    Job job2 = Job.getInstance(baseConfig);
-    job2.setJarByClass(getClass());
-    job2.setJobName(getClass().getName() + "/" + Utils.getShortClassName(LineRandomizerMapper.class));
-    job2.setInputFormatClass(NLineInputFormat.class);
-    NLineInputFormat.addInputPath(job2, fullInputList);
-    NLineInputFormat.setNumLinesPerSplit(job2, numLinesPerSplit);          
-    job2.setMapperClass(LineRandomizerMapper.class);
-    job2.setReducerClass(LineRandomizerReducer.class);
-    job2.setOutputFormatClass(TextOutputFormat.class);
-    FileOutputFormat.setOutputPath(job2, outputStep2Dir);
-    job2.setNumReduceTasks(1);
-    job2.setOutputKeyClass(LongWritable.class);
-    job2.setOutputValueClass(Text.class);
-    return job2;
-  }
-
-  // do the same as if the user had typed 'hadoop ... --files <file>' 
-  private void addDistributedCacheFile(File file, Configuration conf) throws IOException {
-    String HADOOP_TMP_FILES = "tmpfiles"; // see Hadoop's GenericOptionsParser
-    String tmpFiles = conf.get(HADOOP_TMP_FILES, "");
-    if (tmpFiles.length() > 0) { // already present?
-      tmpFiles = tmpFiles + ","; 
-    }
-    GenericOptionsParser parser = new GenericOptionsParser(
-        new Configuration(conf), 
-        new String[] { "--files", file.getCanonicalPath() });
-    String additionalTmpFiles = parser.getConfiguration().get(HADOOP_TMP_FILES);
-    assert additionalTmpFiles != null;
-    assert additionalTmpFiles.length() > 0;
-    tmpFiles += additionalTmpFiles;
-    conf.set(HADOOP_TMP_FILES, tmpFiles);
-  }
-  
-  private MorphlineMapRunner setupMorphline(Options options) throws IOException, URISyntaxException {
-    if (options.morphlineId != null) {
-      job.getConfiguration().set(MorphlineMapRunner.MORPHLINE_ID_PARAM, options.morphlineId);
-    }
-    addDistributedCacheFile(options.morphlineFile, job.getConfiguration());    
-    if (!options.isDryRun) {
-      return null;
-    }
-    
-    /*
-     * Ensure scripting support for Java via morphline "java" command works even in dryRun mode,
-     * i.e. when executed in the client side driver JVM. To do so, collect all classpath URLs from
-     * the class loaders chain that org.apache.hadoop.util.RunJar (hadoop jar xyz-job.jar) and
-     * org.apache.hadoop.util.GenericOptionsParser (--libjars) have installed, then tell
-     * FastJavaScriptEngine.parse() where to find classes that JavaBuilder scripts might depend on.
-     * This ensures that scripts that reference external java classes compile without exceptions
-     * like this:
-     * 
-     * ... caused by compilation failed: mfm:///MyJavaClass1.java:2: package
-     * org.kitesdk.morphline.api does not exist
-     */
-    LOG.trace("dryRun: java.class.path: {}", System.getProperty("java.class.path"));
-    String fullClassPath = "";
-    ClassLoader loader = Thread.currentThread().getContextClassLoader(); // see org.apache.hadoop.util.RunJar
-    while (loader != null) { // walk class loaders, collect all classpath URLs
-      if (loader instanceof URLClassLoader) { 
-        URL[] classPathPartURLs = ((URLClassLoader) loader).getURLs(); // see org.apache.hadoop.util.RunJar
-        LOG.trace("dryRun: classPathPartURLs: {}", Arrays.asList(classPathPartURLs));
-        StringBuilder classPathParts = new StringBuilder();
-        for (URL url : classPathPartURLs) {
-          File file = new File(url.toURI());
-          if (classPathPartURLs.length > 0) {
-            classPathParts.append(File.pathSeparator);
-          }
-          classPathParts.append(file.getPath());
-        }
-        LOG.trace("dryRun: classPathParts: {}", classPathParts);
-        String separator = File.pathSeparator;
-        if (fullClassPath.length() == 0 || classPathParts.length() == 0) {
-          separator = "";
-        }
-        fullClassPath = classPathParts + separator + fullClassPath;
-      }
-      loader = loader.getParent();
-    }
-    
-    // tell FastJavaScriptEngine.parse() where to find the classes that the script might depend on
-    if (fullClassPath.length() > 0) {
-      assert System.getProperty("java.class.path") != null;
-      fullClassPath = System.getProperty("java.class.path") + File.pathSeparator + fullClassPath;
-      LOG.trace("dryRun: fullClassPath: {}", fullClassPath);
-      System.setProperty("java.class.path", fullClassPath); // see FastJavaScriptEngine.parse()
-    }
-    
-    job.getConfiguration().set(MorphlineMapRunner.MORPHLINE_FILE_PARAM, options.morphlineFile.getPath());
-    return new MorphlineMapRunner(
-        job.getConfiguration(), new DryRunDocumentLoader(), options.solrHomeDir.getPath());
-  }
-  
-  /*
-   * Executes the morphline in the current process (without submitting a job to MR) for quicker
-   * turnaround during trial & debug sessions
-   */
-  private void dryRun(MorphlineMapRunner runner, FileSystem fs, Path fullInputList) throws IOException {    
-    BufferedReader reader = new BufferedReader(new InputStreamReader(fs.open(fullInputList), StandardCharsets.UTF_8));
-    try {
-      String line;
-      while ((line = reader.readLine()) != null) {
-        runner.map(line, job.getConfiguration(), null);
-      }
-      runner.cleanup();
-    } finally {
-      reader.close();
-    }
-  }
-  
-  private int createTreeMergeInputDirList(Path outputReduceDir, FileSystem fs, Path fullInputList)
-      throws FileNotFoundException, IOException {
-    
-    FileStatus[] dirs = listSortedOutputShardDirs(outputReduceDir, fs);
-    int numFiles = 0;
-    FSDataOutputStream out = fs.create(fullInputList);
-    try {
-      Writer writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
-      for (FileStatus stat : dirs) {
-        LOG.debug("Adding path {}", stat.getPath());
-        Path dir = new Path(stat.getPath(), "data/index");
-        if (!fs.isDirectory(dir)) {
-          throw new IllegalStateException("Not a directory: " + dir);
-        }
-        writer.write(dir.toString() + "\n");
-        numFiles++;
-      }
-      writer.close();
-    } finally {
-      out.close();
-    }
-    return numFiles;
-  }
-
-  private FileStatus[] listSortedOutputShardDirs(Path outputReduceDir, FileSystem fs) throws FileNotFoundException,
-      IOException {
-    
-    final String dirPrefix = SolrOutputFormat.getOutputName(job);
-    FileStatus[] dirs = fs.listStatus(outputReduceDir, new PathFilter() {      
-      @Override
-      public boolean accept(Path path) {
-        return path.getName().startsWith(dirPrefix);
-      }
-    });
-    for (FileStatus dir : dirs) {
-      if (!dir.isDirectory()) {
-        throw new IllegalStateException("Not a directory: " + dir.getPath());
-      }
-    }
-    
-    // use alphanumeric sort (rather than lexicographical sort) to properly handle more than 99999 shards
-    Arrays.sort(dirs, (f1, f2) -> new AlphaNumericComparator().compare(f1.getPath().getName(), f2.getPath().getName()));
-
-    return dirs;
-  }
-
-  /*
-   * You can run MapReduceIndexerTool in Solrcloud mode, and once the MR job completes, you can use
-   * the standard solrj Solrcloud API to send doc updates and deletes to SolrCloud, and those updates
-   * and deletes will go to the right Solr shards, and it will work just fine.
-   * 
-   * The MapReduce framework doesn't guarantee that input split N goes to the map task with the
-   * taskId = N. The job tracker and Yarn schedule and assign tasks, considering data locality
-   * aspects, but without regard of the input split# withing the overall list of input splits. In
-   * other words, split# != taskId can be true.
-   * 
-   * To deal with this issue, our mapper tasks write a little auxiliary metadata file (per task)
-   * that tells the job driver which taskId processed which split#. Once the mapper-only job is
-   * completed, the job driver renames the output dirs such that the dir name contains the true solr
-   * shard id, based on these auxiliary files.
-   * 
-   * This way each doc gets assigned to the right Solr shard even with #reducers > #solrshards
-   * 
-   * Example for a merge with two shards:
-   * 
-   * part-m-00000 and part-m-00001 goes to outputShardNum = 0 and will end up in merged part-m-00000
-   * part-m-00002 and part-m-00003 goes to outputShardNum = 1 and will end up in merged part-m-00001
-   * part-m-00004 and part-m-00005 goes to outputShardNum = 2 and will end up in merged part-m-00002
-   * ... and so on
-   * 
-   * Also see run() method above where it uses NLineInputFormat.setNumLinesPerSplit(job,
-   * options.fanout)
-   * 
-   * Also see TreeMergeOutputFormat.TreeMergeRecordWriter.writeShardNumberFile()
-   */
-  private boolean renameTreeMergeShardDirs(Path outputTreeMergeStep, Job job, FileSystem fs) throws IOException {
-    final String dirPrefix = SolrOutputFormat.getOutputName(job);
-    FileStatus[] dirs = fs.listStatus(outputTreeMergeStep, new PathFilter() {      
-      @Override
-      public boolean accept(Path path) {
-        return path.getName().startsWith(dirPrefix);
-      }
-    });
-    
-    for (FileStatus dir : dirs) {
-      if (!dir.isDirectory()) {
-        throw new IllegalStateException("Not a directory: " + dir.getPath());
-      }
-    }
-
-    // Example: rename part-m-00004 to _part-m-00004
-    for (FileStatus dir : dirs) {
-      Path path = dir.getPath();
-      Path renamedPath = new Path(path.getParent(), "_" + path.getName());
-      if (!rename(path, renamedPath, fs)) {
-        return false;
-      }
-    }
-    
-    // Example: rename _part-m-00004 to part-m-00002
-    for (FileStatus dir : dirs) {
-      Path path = dir.getPath();
-      Path renamedPath = new Path(path.getParent(), "_" + path.getName());
-      
-      // read auxiliary metadata file (per task) that tells which taskId 
-      // processed which split# aka solrShard
-      Path solrShardNumberFile = new Path(renamedPath, TreeMergeMapper.SOLR_SHARD_NUMBER);
-      InputStream in = fs.open(solrShardNumberFile);
-      byte[] bytes = ByteStreams.toByteArray(in);
-      in.close();
-      Preconditions.checkArgument(bytes.length > 0);
-      int solrShard = Integer.parseInt(new String(bytes, StandardCharsets.UTF_8));
-      if (!delete(solrShardNumberFile, false, fs)) {
-        return false;
-      }
-      
-      // same as FileOutputFormat.NUMBER_FORMAT
-      NumberFormat numberFormat = NumberFormat.getInstance(Locale.ENGLISH);
-      numberFormat.setMinimumIntegerDigits(5);
-      numberFormat.setGroupingUsed(false);
-      Path finalPath = new Path(renamedPath.getParent(), dirPrefix + "-m-" + numberFormat.format(solrShard));
-      
-      LOG.info("MTree merge renaming solr shard: " + solrShard + " from dir: " + dir.getPath() + " to dir: " + finalPath);
-      if (!rename(renamedPath, finalPath, fs)) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  private static void verifyGoLiveArgs(Options opts, ArgumentParser parser) throws ArgumentParserException {
-    if (opts.zkHost == null && opts.solrHomeDir == null) {
-      throw new ArgumentParserException("At least one of --zk-host or --solr-home-dir is required", parser);
-    }
-    if (opts.goLive && opts.zkHost == null && opts.shardUrls == null) {
-      throw new ArgumentParserException("--go-live requires that you also pass --shard-url or --zk-host", parser);
-    }
-    
-    if (opts.zkHost != null && opts.collection == null) {
-      throw new ArgumentParserException("--zk-host requires that you also pass --collection", parser);
-    }
-    
-    if (opts.zkHost != null) {
-      return;
-      // verify structure of ZK directory later, to avoid checking run-time errors during parsing.
-    } else if (opts.shardUrls != null) {
-      if (opts.shardUrls.size() == 0) {
-        throw new ArgumentParserException("--shard-url requires at least one URL", parser);
-      }
-    } else if (opts.shards != null) {
-      if (opts.shards <= 0) {
-        throw new ArgumentParserException("--shards must be a positive number: " + opts.shards, parser);
-      }
-    } else {
-      throw new ArgumentParserException("You must specify one of the following (mutually exclusive) arguments: "
-          + "--zk-host or --shard-url or --shards", parser);
-    }
-
-    if (opts.shardUrls != null) {
-      opts.shards = opts.shardUrls.size();
-    }
-    
-    assert opts.shards != null;
-    assert opts.shards > 0;
-  }
-
-  private static void verifyZKStructure(Options opts, ArgumentParser parser) throws ArgumentParserException {
-    if (opts.zkHost != null) {
-      assert opts.collection != null;
-      ZooKeeperInspector zki = new ZooKeeperInspector();
-      try {
-        opts.shardUrls = zki.extractShardUrls(opts.zkHost, opts.collection);
-      } catch (Exception e) {
-        LOG.debug("Cannot extract SolrCloud shard URLs from ZooKeeper", e);
-        throw new ArgumentParserException(e, parser);
-      }
-      assert opts.shardUrls != null;
-      if (opts.shardUrls.size() == 0) {
-        throw new ArgumentParserException("--zk-host requires ZooKeeper " + opts.zkHost
-          + " to contain at least one SolrCore for collection: " + opts.collection, parser);
-      }
-      opts.shards = opts.shardUrls.size();
-      LOG.debug("Using SolrCloud shard URLs: {}", opts.shardUrls);
-    }
-  }
-
-  private boolean waitForCompletion(Job job, boolean isVerbose) 
-      throws IOException, InterruptedException, ClassNotFoundException {
-    
-    LOG.debug("Running job: " + getJobInfo(job));
-    boolean success = job.waitForCompletion(isVerbose);
-    if (!success) {
-      LOG.error("Job failed! " + getJobInfo(job));
-    }
-    return success;
-  }
-
-  private void goodbye(Job job, long startTime) {
-    float secs = (System.nanoTime() - startTime) / (float)(10^9);
-    if (job != null) {
-      LOG.info("Succeeded with job: " + getJobInfo(job));
-    }
-    LOG.info("Success. Done. Program took {} secs. Goodbye.", secs);
-  }
-
-  private String getJobInfo(Job job) {
-    return "jobName: " + job.getJobName() + ", jobId: " + job.getJobID();
-  }
-  
-  private boolean rename(Path src, Path dst, FileSystem fs) throws IOException {
-    boolean success = fs.rename(src, dst);
-    if (!success) {
-      LOG.error("Cannot rename " + src + " to " + dst);
-    }
-    return success;
-  }
-  
-  private boolean delete(Path path, boolean recursive, FileSystem fs) throws IOException {
-    boolean success = fs.delete(path, recursive);
-    if (!success) {
-      LOG.error("Cannot delete " + path);
-    }
-    return success;
-  }
-
-  // same as IntMath.divide(p, q, RoundingMode.CEILING)
-  private long ceilDivide(long p, long q) {
-    long result = p / q;
-    if (p % q != 0) {
-      result++;
-    }
-    return result;
-  }
-  
-  /**
-   * Returns <tt>log<sub>base</sub>value</tt>.
-   */
-  private double log(double base, double value) {
-    return Math.log(value) / Math.log(base);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/PathArgumentType.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/PathArgumentType.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/PathArgumentType.java
deleted file mode 100644
index 770a2f9..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/PathArgumentType.java
+++ /dev/null
@@ -1,233 +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.hadoop;
-
-import java.io.IOException;
-
-import net.sourceforge.argparse4j.inf.Argument;
-import net.sourceforge.argparse4j.inf.ArgumentParser;
-import net.sourceforge.argparse4j.inf.ArgumentParserException;
-import net.sourceforge.argparse4j.inf.ArgumentType;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.permission.FsAction;
-
-/**
- * ArgumentType subclass for HDFS Path type, using fluent style API.
- */
-public class PathArgumentType implements ArgumentType<Path> {
-  
-  private final Configuration conf;
-  private FileSystem fs;
-  private boolean acceptSystemIn = false;
-  private boolean verifyExists = false;
-  private boolean verifyNotExists = false;
-  private boolean verifyIsFile = false;
-  private boolean verifyIsDirectory = false;
-  private boolean verifyCanRead = false;
-  private boolean verifyCanWrite = false;
-  private boolean verifyCanWriteParent = false;
-  private boolean verifyCanExecute = false;
-  private boolean verifyIsAbsolute = false;
-  private boolean verifyHasScheme = false;
-  private String verifyScheme = null;
-
-  public PathArgumentType(Configuration conf) {
-    this.conf = conf;
-  }
-  
-  public PathArgumentType acceptSystemIn() {
-    acceptSystemIn = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyExists() {
-    verifyExists = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyNotExists() {
-    verifyNotExists = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyIsFile() {
-    verifyIsFile = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyIsDirectory() {
-    verifyIsDirectory = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyCanRead() {
-    verifyCanRead = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyCanWrite() {
-    verifyCanWrite = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyCanWriteParent() {
-    verifyCanWriteParent = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyCanExecute() {
-    verifyCanExecute = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyIsAbsolute() {
-    verifyIsAbsolute = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyHasScheme() {
-    verifyHasScheme = true;
-    return this;
-  }
-  
-  public PathArgumentType verifyScheme(String scheme) {
-    verifyScheme = scheme;
-    return this;
-  }
-  
-  @Override
-  public Path convert(ArgumentParser parser, Argument arg, String value) throws ArgumentParserException {
-    Path file = new Path(value);
-    try {
-      fs = file.getFileSystem(conf);
-      if (verifyHasScheme && !isSystemIn(file)) {
-        verifyHasScheme(parser, file);
-      }        
-      if (verifyScheme != null && !isSystemIn(file)) {
-        verifyScheme(parser, file);
-      }        
-      if (verifyIsAbsolute && !isSystemIn(file)) {
-        verifyIsAbsolute(parser, file);
-      }
-      if (verifyExists && !isSystemIn(file)) {
-        verifyExists(parser, file);
-      }
-      if (verifyNotExists && !isSystemIn(file)) {
-        verifyNotExists(parser, file);
-      }
-      if (verifyIsFile && !isSystemIn(file)) {
-        verifyIsFile(parser, file);
-      }
-      if (verifyIsDirectory && !isSystemIn(file)) {
-        verifyIsDirectory(parser, file);
-      }
-      if (verifyCanRead && !isSystemIn(file)) {
-        verifyCanRead(parser, file);
-      }
-      if (verifyCanWrite && !isSystemIn(file)) {
-        verifyCanWrite(parser, file);
-      }
-      if (verifyCanWriteParent && !isSystemIn(file)) {
-        verifyCanWriteParent(parser, file);
-      }
-      if (verifyCanExecute && !isSystemIn(file)) {
-        verifyCanExecute(parser, file);
-      }
-    } catch (IOException e) {
-      throw new ArgumentParserException(e, parser);
-    }
-    return file;
-  }
-  
-  private void verifyExists(ArgumentParser parser, Path file) throws ArgumentParserException, IOException {
-    if (!fs.exists(file)) {
-      throw new ArgumentParserException("File not found: " + file, parser);
-    }
-  }    
-  
-  private void verifyNotExists(ArgumentParser parser, Path file) throws ArgumentParserException, IOException {
-    if (fs.exists(file)) {
-      throw new ArgumentParserException("File found: " + file, parser);
-    }
-  }    
-  
-  private void verifyIsFile(ArgumentParser parser, Path file) throws ArgumentParserException, IOException {
-    if (!fs.isFile(file)) {
-      throw new ArgumentParserException("Not a file: " + file, parser);
-    }
-  }    
-  
-  private void verifyIsDirectory(ArgumentParser parser, Path file) throws ArgumentParserException, IOException {
-    if (!fs.isDirectory(file)) {
-      throw new ArgumentParserException("Not a directory: " + file, parser);
-    }
-  }    
-  
-  private void verifyCanRead(ArgumentParser parser, Path file) throws ArgumentParserException, IOException {
-    verifyExists(parser, file);
-    if (!fs.getFileStatus(file).getPermission().getUserAction().implies(FsAction.READ)) {
-      throw new ArgumentParserException("Insufficient permissions to read file: " + file, parser);
-    }
-  }    
-  
-  private void verifyCanWrite(ArgumentParser parser, Path file) throws ArgumentParserException, IOException {
-    verifyExists(parser, file);
-    if (!fs.getFileStatus(file).getPermission().getUserAction().implies(FsAction.WRITE)) {
-      throw new ArgumentParserException("Insufficient permissions to write file: " + file, parser);
-    }
-  }    
-  
-  private void verifyCanWriteParent(ArgumentParser parser, Path file) throws ArgumentParserException, IOException {
-    Path parent = file.getParent();
-    if (parent == null || !fs.exists(parent) || !fs.getFileStatus(parent).getPermission().getUserAction().implies(FsAction.WRITE)) {
-      throw new ArgumentParserException("Cannot write parent of file: " + file, parser);
-    }
-  }    
-  
-  private void verifyCanExecute(ArgumentParser parser, Path file) throws ArgumentParserException, IOException {
-    verifyExists(parser, file);
-    if (!fs.getFileStatus(file).getPermission().getUserAction().implies(FsAction.EXECUTE)) {
-      throw new ArgumentParserException("Insufficient permissions to execute file: " + file, parser);
-    }
-  }    
-  
-  private void verifyIsAbsolute(ArgumentParser parser, Path file) throws ArgumentParserException {
-    if (!file.isAbsolute()) {
-      throw new ArgumentParserException("Not an absolute file: " + file, parser);
-    }
-  }    
-  
-  private void verifyHasScheme(ArgumentParser parser, Path file) throws ArgumentParserException {
-    if (file.toUri().getScheme() == null) {
-      throw new ArgumentParserException("URI scheme is missing in path: " + file, parser);
-    }
-  }
-
-  private void verifyScheme(ArgumentParser parser, Path file) throws ArgumentParserException {
-    if (!verifyScheme.equals(file.toUri().getScheme())) {
-      throw new ArgumentParserException("Scheme of path: " + file + " must be: " + verifyScheme, parser);
-    }
-  }
-
-  private boolean isSystemIn(Path file) {
-    return acceptSystemIn && file.toString().equals("-");
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/PathParts.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/PathParts.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/PathParts.java
deleted file mode 100644
index 690901b..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/PathParts.java
+++ /dev/null
@@ -1,130 +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.hadoop;
-
-import java.io.IOException;
-import java.net.URI;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hdfs.server.namenode.NameNode;
-
-/**
- * Extracts various components of an HDFS Path
- */
-public final class PathParts {
-
-  private final String uploadURL;
-  private final Configuration conf;
-  private final FileSystem fs;
-  private final Path normalizedPath;
-  private FileStatus stats;
-
-  public PathParts(String uploadURL, Configuration conf) throws IOException {
-    if (uploadURL == null) {
-      throw new IllegalArgumentException("Path must not be null: " + uploadURL);    
-    }
-    this.uploadURL = uploadURL;
-    if (conf == null) {
-      throw new IllegalArgumentException("Configuration must not be null: " + uploadURL);    
-    }
-    this.conf = conf;
-    URI uri = stringToUri(uploadURL);
-    this.fs = FileSystem.get(uri, conf);
-    if (fs == null) {
-      throw new IllegalArgumentException("File system must not be null: " + uploadURL);    
-    }
-    this.normalizedPath = fs.makeQualified(new Path(uri));
-    if (!normalizedPath.isAbsolute()) {
-      throw new IllegalArgumentException("Path must be absolute: " + uploadURL);    
-    }
-    if (getScheme() == null) {
-      throw new IllegalArgumentException("Scheme must not be null: " + uploadURL);    
-    }
-    if (getHost() == null) {
-      throw new IllegalArgumentException("Host must not be null: " + uploadURL);    
-    }
-    if (getPort() < 0) {
-      throw new IllegalArgumentException("Port must not be negative: " + uploadURL);    
-    }
-  }
-  
-  public String getUploadURL() {
-    return uploadURL;
-  }
-
-  public Path getUploadPath() {
-    return new Path(getUploadURL());
-  }
-  
-  public String getURIPath() {
-    return normalizedPath.toUri().getPath();
-  }
-
-  public String getName() {
-    return normalizedPath.getName();
-  }
-
-  public String getScheme() {
-    return normalizedPath.toUri().getScheme();
-  }
-
-  public String getHost() {
-    return normalizedPath.toUri().getHost();
-  }
-
-  public int getPort() {
-    int port = normalizedPath.toUri().getPort();
-    if (port == -1) {
-      port = fs.getWorkingDirectory().toUri().getPort();
-      if (port == -1) {
-        port = NameNode.DEFAULT_PORT;
-      }
-    }
-    return port;
-  }
-
-  public String getId() {
-    return getScheme() + "://" + getHost() + ":" + getPort() + getURIPath();
-  }
-  
-  public String getDownloadURL() {
-    return getId();
-  }
-
-  public Configuration getConfiguration() {
-    return conf;
-  }
-
-  public FileSystem getFileSystem() {
-    return fs;
-  }
-
-  public FileStatus getFileStatus() throws IOException {
-    if (stats == null) {
-      stats = getFileSystem().getFileStatus(getUploadPath());
-    }
-    return stats;
-  }
-  
-  private URI stringToUri(String pathString) {
-    //return new Path(pathString).toUri().normalize();
-    return URI.create(pathString).normalize();
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrCloudPartitioner.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrCloudPartitioner.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrCloudPartitioner.java
deleted file mode 100644
index c8ad1a7..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrCloudPartitioner.java
+++ /dev/null
@@ -1,143 +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.hadoop;
-
-import java.lang.invoke.MethodHandles;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.hadoop.conf.Configurable;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Partitioner;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.cloud.DocCollection;
-import org.apache.solr.common.cloud.DocRouter;
-import org.apache.solr.common.cloud.Slice;
-import org.apache.solr.common.params.MapSolrParams;
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.Hash;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * MapReduce partitioner that partitions the Mapper output such that each
- * SolrInputDocument gets sent to the SolrCloud shard that it would have been
- * sent to if the document were ingested via the standard SolrCloud Near Real
- * Time (NRT) API.
- * 
- * In other words, this class implements the same partitioning semantics as the
- * standard SolrCloud NRT API. This enables to mix batch updates from MapReduce
- * ingestion with updates from standard NRT ingestion on the same SolrCloud
- * cluster, using identical unique document keys.
- */
-public class SolrCloudPartitioner extends Partitioner<Text, SolrInputDocumentWritable> implements Configurable {
-  
-  private Configuration conf;
-  private DocCollection docCollection;
-  private Map<String, Integer> shardNumbers;
-  private int shards = 0;
-  private final SolrParams emptySolrParams = new MapSolrParams(Collections.EMPTY_MAP);
-  
-  public static final String SHARDS = SolrCloudPartitioner.class.getName() + ".shards";
-  public static final String ZKHOST = SolrCloudPartitioner.class.getName() + ".zkHost";
-  public static final String COLLECTION = SolrCloudPartitioner.class.getName() + ".collection";
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
-  public SolrCloudPartitioner() {}
-
-  @Override
-  public void setConf(Configuration conf) {
-    this.conf = conf;    
-    this.shards = conf.getInt(SHARDS, -1);
-    if (shards <= 0) {
-      throw new IllegalArgumentException("Illegal shards: " + shards);
-    }
-    String zkHost = conf.get(ZKHOST);
-    if (zkHost == null) {
-      throw new IllegalArgumentException("zkHost must not be null");
-    }
-    String collection = conf.get(COLLECTION);
-    if (collection == null) {
-      throw new IllegalArgumentException("collection must not be null");
-    }    
-    LOG.info("Using SolrCloud zkHost: {}, collection: {}", zkHost, collection);
-    docCollection = new ZooKeeperInspector().extractDocCollection(zkHost, collection);
-    if (docCollection == null) {
-      throw new IllegalArgumentException("docCollection must not be null");
-    }
-    if (docCollection.getSlicesMap().size() != shards) {
-      throw new IllegalArgumentException("Incompatible shards: + " + shards + " for docCollection: " + docCollection);
-    }    
-    List<Slice> slices = new ZooKeeperInspector().getSortedSlices(docCollection.getSlices());
-    if (slices.size() != shards) {
-      throw new IllegalStateException("Incompatible sorted shards: + " + shards + " for docCollection: " + docCollection);
-    }    
-    shardNumbers = new HashMap(10 * slices.size()); // sparse for performance
-    for (int i = 0; i < slices.size(); i++) {
-      shardNumbers.put(slices.get(i).getName(), i);
-    }
-    LOG.debug("Using SolrCloud docCollection: {}", docCollection);
-    DocRouter docRouter = docCollection.getRouter();
-    if (docRouter == null) {
-      throw new IllegalArgumentException("docRouter must not be null");
-    }
-    LOG.info("Using SolrCloud docRouterClass: {}", docRouter.getClass());    
-  }
-
-  @Override
-  public Configuration getConf() {
-    return conf;
-  }
-  
-  @Override
-  public int getPartition(Text key, SolrInputDocumentWritable value, int numPartitions) {
-    DocRouter docRouter = docCollection.getRouter();
-    SolrInputDocument doc = value.getSolrInputDocument();
-    String keyStr = key.toString();
-    
-    // TODO: scalability: replace linear search in HashBasedRouter.hashToSlice() with binary search on sorted hash ranges
-    Slice slice = docRouter.getTargetSlice(keyStr, doc, null, emptySolrParams, docCollection); 
-    
-//    LOG.info("slice: {}", slice);
-    if (slice == null) {
-      throw new IllegalStateException("No matching slice found! The slice seems unavailable. docRouterClass: "
-          + docRouter.getClass().getName());
-    }
-    int rootShard = shardNumbers.get(slice.getName());
-    if (rootShard < 0 || rootShard >= shards) {
-      throw new IllegalStateException("Illegal shard number " + rootShard + " for slice: " + slice + ", docCollection: "
-          + docCollection);
-    }      
-
-    // map doc to micro shard aka leaf shard, akin to HashBasedRouter.sliceHash()
-    // taking into account mtree merge algorithm
-    assert numPartitions % shards == 0; // Also note that numPartitions is equal to the number of reducers
-    int hashCode = Hash.murmurhash3_x86_32(keyStr, 0, keyStr.length(), 0); 
-    int offset = (hashCode & Integer.MAX_VALUE) % (numPartitions / shards);
-    int microShard = (rootShard * (numPartitions / shards)) + offset;
-//    LOG.info("Subpartitions rootShard: {}, offset: {}", rootShard, offset);
-//    LOG.info("Partitioned to p: {} for numPartitions: {}, shards: {}, key: {}, value: {}", microShard, numPartitions, shards, key, value);
-    
-    assert microShard >= 0 && microShard < numPartitions;
-    return microShard;
-  }
-
-}


[63/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10349: Add totalTermFreq support to TermsComponent

Posted by cp...@apache.org.
SOLR-10349: Add totalTermFreq support to TermsComponent

TermsComponent only returns docFreq information per requested term.
This commit adds a terms.ttf parameter, which if set to true, will
return both docFreq and totalTermFreq statistics for each requested
term.


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

Branch: refs/heads/jira/solr-6203
Commit: deddc9b5c8d8c2859469583fa8b956be48efff82
Parents: 144091a
Author: Shai Erera <sh...@apache.org>
Authored: Thu Mar 23 08:28:05 2017 +0200
Committer: Shai Erera <sh...@apache.org>
Committed: Wed Mar 29 06:18:39 2017 +0300

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  6 +-
 .../solr/handler/component/TermsComponent.java  | 66 ++++++++++++--------
 .../DistributedTermsComponentTest.java          |  3 +-
 .../handler/component/TermsComponentTest.java   | 38 +++++++++++
 .../client/solrj/response/QueryResponse.java    |  6 +-
 .../client/solrj/response/TermsResponse.java    | 37 +++++++++--
 .../apache/solr/common/params/TermsParams.java  | 12 ++--
 7 files changed, 126 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/deddc9b5/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 9d14e59..4e63926 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -115,17 +115,19 @@ Detailed Change List
 New Features
 ----------------------
 
-* SOLR-9992: Add support for grouping with PointFIelds. (Cao Manh Dat) 
+* SOLR-9992: Add support for grouping with PointFIelds. (Cao Manh Dat)
 
 * SOLR-10046: Add UninvertDocValuesMergePolicyFactory class. (Keith Laban, Christine Poerschke)
 
-* SOLR-9994: Add support for CollapseQParser with PointFields. (Varun Thacker, Cao Manh Dat) 
+* SOLR-9994: Add support for CollapseQParser with PointFields. (Varun Thacker, Cao Manh Dat)
 
 * SOLR-10076: Hide keystore and truststore passwords from /admin/info/* outputs. (Mano Kovacs via Mark Miller)
 
 * SOLR-6736: Adding support for uploading zipped configsets using ConfigSets API (Varun Rajput, Ishan Chattopadhyaya,
   Noble Paul, Anshum Gupta, Gregory Chanan)
 
+* SOLR-10349: Add totalTermFreq support to TermsComponent. (Shai Erera)
+
 Optimizations
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/deddc9b5/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
index e00120c..b05939e 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
@@ -108,8 +108,9 @@ public class TermsComponent extends SearchComponent {
     }
 
     String termList = params.get(TermsParams.TERMS_LIST);
-    if(termList != null) {
-      fetchTerms(rb.req.getSearcher(), fields, termList, termsResult);
+    if (termList != null) {
+      boolean includeTotalTermFreq = params.getBool(TermsParams.TERMS_TTF, false);
+      fetchTerms(rb.req.getSearcher(), fields, termList, includeTotalTermFreq, termsResult);
       return;
     }
 
@@ -303,7 +304,7 @@ public class TermsComponent extends SearchComponent {
     if (th != null) {
       for (ShardResponse srsp : sreq.responses) {
         @SuppressWarnings("unchecked")
-        NamedList<NamedList<Number>> terms = (NamedList<NamedList<Number>>) srsp.getSolrResponse().getResponse().get("terms");
+        NamedList<NamedList<Object>> terms = (NamedList<NamedList<Object>>) srsp.getSolrResponse().getResponse().get("terms");
         th.parse(terms);
 
 
@@ -376,7 +377,7 @@ public class TermsComponent extends SearchComponent {
       }
     }
 
-    public void parse(NamedList<NamedList<Number>> terms) {
+    public void parse(NamedList<NamedList<Object>> terms) {
       // exit if there is no terms
       if (terms == null) {
         return;
@@ -400,6 +401,7 @@ public class TermsComponent extends SearchComponent {
           if (termmap.containsKey(term)) {
             TermsResponse.Term oldtc = termmap.get(term);
             oldtc.addFrequency(tc.getFrequency());
+            oldtc.addTotalTermFreq(tc.getTotalTermFreq());
             termmap.put(term, oldtc);
           } else {
             termmap.put(term, tc);
@@ -442,7 +444,7 @@ public class TermsComponent extends SearchComponent {
 
       // loop though each field we want terms from
       for (String key : fieldmap.keySet()) {
-        NamedList<Number> fieldterms = new SimpleOrderedMap<>();
+        NamedList<Object> fieldterms = new SimpleOrderedMap<>();
         TermsResponse.Term[] data = null;
         if (sort) {
           data = getCountSorted(fieldmap.get(key));
@@ -450,11 +452,19 @@ public class TermsComponent extends SearchComponent {
           data = getLexSorted(fieldmap.get(key));
         }
 
+        boolean includeTotalTermFreq = params.getBool(TermsParams.TERMS_TTF, false);
         // loop though each term until we hit limit
         int cnt = 0;
         for (TermsResponse.Term tc : data) {
           if (tc.getFrequency() >= freqmin && tc.getFrequency() <= freqmax) {
-            fieldterms.add(tc.getTerm(), num(tc.getFrequency()));
+            if (includeTotalTermFreq) {
+              NamedList<Number> termStats = new SimpleOrderedMap<>();
+              termStats.add("docFreq", tc.getFrequency());
+              termStats.add("totalTermFreq", tc.getTotalTermFreq());
+              fieldterms.add(tc.getTerm(), termStats);
+            } else {
+              fieldterms.add(tc.getTerm(), num(tc.getFrequency()));
+            }
             cnt++;
           }
 
@@ -508,10 +518,9 @@ public class TermsComponent extends SearchComponent {
   private void fetchTerms(SolrIndexSearcher indexSearcher,
                           String[] fields,
                           String termList,
+                          boolean includeTotalTermFreq,
                           NamedList result) throws IOException {
 
-    NamedList termsMap = new SimpleOrderedMap();
-    List<LeafReaderContext> leaves = indexSearcher.getTopReaderContext().leaves();
     String field = fields[0];
     FieldType fieldType = indexSearcher.getSchema().getField(field).getType();
     String[] splitTerms = termList.split(",");
@@ -521,35 +530,43 @@ public class TermsComponent extends SearchComponent {
     }
 
     Term[] terms = new Term[splitTerms.length];
-    TermContext[] termContexts = new TermContext[terms.length];
     for(int i=0; i<splitTerms.length; i++) {
       terms[i] = new Term(field, fieldType.readableToIndexed(splitTerms[i]));
     }
 
     Arrays.sort(terms);
 
-    collectTermContext(indexSearcher.getTopReaderContext().reader(), leaves, termContexts, terms);
+    IndexReaderContext topReaderContext = indexSearcher.getTopReaderContext();
+    TermContext[] termContexts = new TermContext[terms.length];
+    collectTermContext(topReaderContext, termContexts, terms);
 
-    for(int i=0; i<terms.length; i++) {
-      if(termContexts[i] != null) {
+    NamedList termsMap = new SimpleOrderedMap();
+    for (int i = 0; i < terms.length; i++) {
+      if (termContexts[i] != null) {
         String outTerm = fieldType.indexedToReadable(terms[i].bytes().utf8ToString());
         int docFreq = termContexts[i].docFreq();
-        termsMap.add(outTerm, docFreq);
+        if (!includeTotalTermFreq) {
+          termsMap.add(outTerm, docFreq);
+        } else {
+          long totalTermFreq = termContexts[i].totalTermFreq();
+          NamedList<Long> termStats = new SimpleOrderedMap<>();
+          termStats.add("docFreq", (long) docFreq);
+          termStats.add("totalTermFreq", totalTermFreq);
+          termsMap.add(outTerm, termStats);
+        }
       }
     }
 
     result.add(field, termsMap);
   }
 
-  private void collectTermContext(IndexReader reader,
-                                 List<LeafReaderContext> leaves, TermContext[] contextArray,
-                                 Term[] queryTerms) throws IOException {
+  private void collectTermContext(IndexReaderContext topReaderContext, TermContext[] contextArray, Term[] queryTerms)
+      throws IOException {
     TermsEnum termsEnum = null;
-    for (LeafReaderContext context : leaves) {
+    for (LeafReaderContext context : topReaderContext.leaves()) {
       final Fields fields = context.reader().fields();
       for (int i = 0; i < queryTerms.length; i++) {
         Term term = queryTerms[i];
-        TermContext termContext = contextArray[i];
         final Terms terms = fields.terms(term.field());
         if (terms == null) {
           // field does not exist
@@ -559,18 +576,15 @@ public class TermsComponent extends SearchComponent {
         assert termsEnum != null;
 
         if (termsEnum == TermsEnum.EMPTY) continue;
+
+        TermContext termContext = contextArray[i];
         if (termsEnum.seekExact(term.bytes())) {
           if (termContext == null) {
-            contextArray[i] = new TermContext(reader.getContext(),
-                termsEnum.termState(), context.ord, termsEnum.docFreq(),
-                termsEnum.totalTermFreq());
-          } else {
-            termContext.register(termsEnum.termState(), context.ord,
-                termsEnum.docFreq(), termsEnum.totalTermFreq());
+            termContext = new TermContext(topReaderContext);
+            contextArray[i] = termContext;
           }
-
+          termContext.accumulateStatistics(termsEnum.docFreq(), termsEnum.totalTermFreq());
         }
-
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/deddc9b5/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
index 951cd88..9c90efb 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedTermsComponentTest.java
@@ -52,7 +52,6 @@ public class DistributedTermsComponentTest extends BaseDistributedSearchTestCase
     query("qt", "/terms", "shards.qt", "/terms", "terms", "true", "terms.fl", "b_t", "terms.list", "snake, zebra, ant, bad");
     query("qt", "/terms", "shards.qt", "/terms", "terms", "true", "terms.fl", "foo_i", "terms.list", "2, 3, 1");
     query("qt", "/terms", "shards.qt", "/terms", "terms", "true", "terms.fl", "foo_i", "terms.stats", "true","terms.list", "2, 3, 1");
-
-
+    query("qt", "/terms", "shards.qt", "/terms", "terms", "true", "terms.fl", "b_t", "terms.list", "snake, zebra", "terms.ttf", "true");
   }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/deddc9b5/solr/core/src/test/org/apache/solr/handler/component/TermsComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/TermsComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/TermsComponentTest.java
index 177881a..7fb5e12 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/TermsComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/TermsComponentTest.java
@@ -18,6 +18,7 @@ package org.apache.solr.handler.component;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.TermsParams;
+import org.apache.solr.request.SolrQueryRequest;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -313,4 +314,41 @@ public class TermsComponentTest extends SolrTestCaseJ4 {
        ,"count(//lst[@name='standardfilt']/*)=3"
     );
   }
+
+  @Test
+  public void testDocFreqAndTotalTermFreq() throws Exception {
+    SolrQueryRequest req = req(
+        "indent","true",
+        "qt", "/terms",
+        "terms", "true",
+        "terms.fl", "standardfilt",
+        "terms.ttf", "true",
+        "terms.list", "snake,spider,shark,ddddd");
+    assertQ(req,
+        "count(//lst[@name='standardfilt']/*)=4",
+        "//lst[@name='standardfilt']/lst[@name='ddddd']/long[@name='docFreq'][.='4']",
+        "//lst[@name='standardfilt']/lst[@name='ddddd']/long[@name='totalTermFreq'][.='4']",
+        "//lst[@name='standardfilt']/lst[@name='shark']/long[@name='docFreq'][.='2']",
+        "//lst[@name='standardfilt']/lst[@name='shark']/long[@name='totalTermFreq'][.='2']",
+        "//lst[@name='standardfilt']/lst[@name='snake']/long[@name='docFreq'][.='3']",
+        "//lst[@name='standardfilt']/lst[@name='snake']/long[@name='totalTermFreq'][.='3']",
+        "//lst[@name='standardfilt']/lst[@name='spider']/long[@name='docFreq'][.='1']",
+        "//lst[@name='standardfilt']/lst[@name='spider']/long[@name='totalTermFreq'][.='1']");
+  }
+
+  @Test
+  public void testDocFreqAndTotalTermFreqForNonExistingTerm() throws Exception {
+    SolrQueryRequest req = req(
+        "indent","true",
+        "qt", "/terms",
+        "terms", "true",
+        "terms.fl", "standardfilt",
+        "terms.ttf", "true",
+        "terms.list", "boo,snake");
+    assertQ(req,
+        "count(//lst[@name='standardfilt']/*)=1",
+        "//lst[@name='standardfilt']/lst[@name='snake']/long[@name='docFreq'][.='3']",
+        "//lst[@name='standardfilt']/lst[@name='snake']/long[@name='totalTermFreq'][.='3']");
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/deddc9b5/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java
index eb595aa..4e78005 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java
@@ -50,7 +50,7 @@ public class QueryResponse extends SolrResponseBase
   private List<NamedList<Object>> _clusterInfo = null;
   private Map<String,NamedList<Object>> _suggestInfo = null;
   private NamedList<Object> _statsInfo = null;
-  private NamedList<NamedList<Number>> _termsInfo = null;
+  private NamedList<NamedList<Object>> _termsInfo = null;
   private NamedList<SolrDocumentList> _moreLikeThisInfo = null;
   private String _cursorMarkNext = null;
 
@@ -166,7 +166,7 @@ public class QueryResponse extends SolrResponseBase
         extractStatsInfo( _statsInfo );
       }
       else if ( "terms".equals( n ) ) {
-        _termsInfo = (NamedList<NamedList<Number>>) res.getVal( i );
+        _termsInfo = (NamedList<NamedList<Object>>) res.getVal( i );
         extractTermsInfo( _termsInfo );
       }
       else if ( "moreLikeThis".equals( n ) ) {
@@ -191,7 +191,7 @@ public class QueryResponse extends SolrResponseBase
     _suggestResponse = new SuggesterResponse(suggestInfo);
   }
 
-  private void extractTermsInfo(NamedList<NamedList<Number>> termsInfo) {
+  private void extractTermsInfo(NamedList<NamedList<Object>> termsInfo) {
     _termsResponse = new TermsResponse(termsInfo);
   }
   

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/deddc9b5/solr/solrj/src/java/org/apache/solr/client/solrj/response/TermsResponse.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/TermsResponse.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/TermsResponse.java
index e3fb061..b4ee553 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/TermsResponse.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/TermsResponse.java
@@ -28,17 +28,26 @@ import java.util.Map;
 public class TermsResponse {
   private Map<String, List<Term>> termMap = new HashMap<>();
   
-  public TermsResponse(NamedList<NamedList<Number>> termsInfo) {
+  public TermsResponse(NamedList<NamedList<Object>> termsInfo) {
     for (int i = 0; i < termsInfo.size(); i++) {
       String fieldName = termsInfo.getName(i);
       List<Term> itemList = new ArrayList<>();
-      NamedList<Number> items = termsInfo.getVal(i);
+      NamedList<Object> items = termsInfo.getVal(i);
       
       for (int j = 0; j < items.size(); j++) {
-        Term t = new Term(items.getName(j), items.getVal(j).longValue());
+        String term = items.getName(j);
+        Object val = items.getVal(j);
+        Term t;
+        if (val instanceof NamedList) {
+          @SuppressWarnings("unchecked")
+          NamedList<Number> termStats = (NamedList<Number>) val;
+          t = new Term(term, termStats.get("docFreq").longValue(), termStats.get("totalTermFreq").longValue());
+        } else {
+          t = new Term(term, ((Number) val).longValue());
+        }
         itemList.add(t);
       }
-      
+
       termMap.put(fieldName, itemList);
     }
   }
@@ -59,10 +68,16 @@ public class TermsResponse {
   public static class Term {
     private String term;
     private long frequency;
+    private long totalTermFreq;
 
     public Term(String term, long frequency) {
+      this(term, frequency, 0);
+    }
+
+    public Term(String term, long frequency, long totalTermFreq) {
       this.term = term;
       this.frequency = frequency;
+      this.totalTermFreq = totalTermFreq;
     }
 
     public String getTerm() {
@@ -80,9 +95,21 @@ public class TermsResponse {
     public void setFrequency(long frequency) {
       this.frequency = frequency;
     }
-    
+
     public void addFrequency(long frequency) {
       this.frequency += frequency;
     }
+
+    public long getTotalTermFreq() {
+      return totalTermFreq;
+    }
+
+    public void setTotalTermFreq(long totalTermFreq) {
+      this.totalTermFreq = totalTermFreq;
+    }
+
+    public void addTotalTermFreq(long totalTermFreq) {
+      this.totalTermFreq += totalTermFreq;
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/deddc9b5/solr/solrj/src/java/org/apache/solr/common/params/TermsParams.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/TermsParams.java b/solr/solrj/src/java/org/apache/solr/common/params/TermsParams.java
index 4975846..9f96a80 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/TermsParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/TermsParams.java
@@ -42,17 +42,20 @@ public interface TermsParams {
 
   /**
    * Optional. The list of terms to be retrieved.
-   *
    */
   public static final String TERMS_LIST = TERMS_PREFIX + "list";
 
   /**
-   * Optional. The list of terms to be retrieved.
-   *
+   * Optional. If true, also returns index-level statistics, such as numDocs.
    */
   public static final String TERMS_STATS = TERMS_PREFIX + "stats";
 
   /**
+   * Optional. If true, also returns terms' total term frequency.
+   */
+  public static final String TERMS_TTF = TERMS_PREFIX + "ttf";
+
+  /**
    * Optional.  The lower bound term to start at.  The TermEnum will start at the next term after this term in the dictionary.
    *
    * If not specified, the empty string is used
@@ -107,10 +110,11 @@ public interface TermsParams {
       }
   }
 
-    /**
+  /**
    * Optional.  The minimum value of docFreq to be returned.  1 by default
    */
   public static final String TERMS_MINCOUNT = TERMS_PREFIX + "mincount";
+
   /**
    * Optional.  The maximum value of docFreq to be returned.  -1 by default means no boundary
    */


[15/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/solrconfig.xml b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/solrconfig.xml
deleted file mode 100644
index 72e2add..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/solrconfig.xml
+++ /dev/null
@@ -1,1449 +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>${tests.luceneMatchVersion:LATEST}</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.
-
-       The examples below can be used to load some solr-contribs along 
-       with their external dependencies.
-    -->
-  <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />
-
-  <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />
-
-  <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />
-
-  <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />
-
-  <!-- If a 'dir' option (with or without a regex) is used and nothing
-       is found that matches, a warning will be logged.
-    -->
-  <lib dir="/non/existent/dir/yields/warning" /> 
-
-  <!-- an exact 'path' can be used instead of a 'dir' to specify a 
-       specific jar file.  This will cause a serious error to be logged 
-       if it can't be loaded.
-    -->
-  <!--
-     <lib path="../a-jar-that-does-not-exist.jar" /> 
-  -->
-  
-  <!-- Data Directory
-
-       Used to specify an alternate directory to hold all index data
-       other than the default ./data under the Solr home.  If
-       replication is in use, this should match the replication
-       configuration.
-    -->
-  <dataDir>${solr.data.dir:}</dataDir>
-
-
-  <!-- The DirectoryFactory to use for indexes.
-       
-       solr.StandardDirectoryFactory is filesystem
-       based and tries to pick the best implementation for the current
-       JVM and platform.  solr.NRTCachingDirectoryFactory, the default,
-       wraps solr.StandardDirectoryFactory and caches small files in memory
-       for better NRT performance.
-
-       One can force a particular implementation via solr.MMapDirectoryFactory,
-       solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.
-
-       solr.RAMDirectoryFactory is memory based, not
-       persistent, and doesn't work with replication.
-    -->
-  <directoryFactory name="DirectoryFactory" class="org.apache.solr.core.HdfsDirectoryFactory">
-    <str name="solr.hdfs.home">${solr.hdfs.home:}</str>
-    <str name="solr.hdfs.confdir">${solr.hdfs.confdir:}</str>
-    <str name="solr.hdfs.security.kerberos.enabled">${solr.hdfs.security.kerberos.enabled:false}</str>
-    <str name="solr.hdfs.security.kerberos.keytabfile">${solr.hdfs.security.kerberos.keytabfile:}</str>
-    <str name="solr.hdfs.security.kerberos.principal">${solr.hdfs.security.kerberos.principal:}</str>
-    <bool name="solr.hdfs.blockcache.enabled">${solr.hdfs.blockcache.enabled:true}</bool>
-    <int name="solr.hdfs.blockcache.slab.count">${solr.hdfs.blockcache.slab.count:1}</int>
-    <bool name="solr.hdfs.blockcache.direct.memory.allocation">${solr.hdfs.blockcache.direct.memory.allocation:true}</bool>
-    <int name="solr.hdfs.blockcache.blocksperbank">${solr.hdfs.blockcache.blocksperbank:16384}</int> 
-    <bool name="solr.hdfs.blockcache.read.enabled">${solr.hdfs.blockcache.read.enabled:true}</bool>
-    <bool name="solr.hdfs.nrtcachingdirectory.enable">${solr.hdfs.nrtcachingdirectory.enable:true}</bool>
-    <int name="solr.hdfs.nrtcachingdirectory.maxmergesizemb">${solr.hdfs.nrtcachingdirectory.maxmergesizemb:16}</int>
-    <int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">${solr.hdfs.nrtcachingdirectory.maxcachedmb:192}</int>
-  </directoryFactory>
-
-  <schemaFactory class="ClassicIndexSchemaFactory"/>
-
-  <!-- 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>128</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:hdfs}</lockType>
-
-    <!-- If true, IndexReaders will be reopened (often more efficient)
-         instead of closed and then opened. Default: true
-      -->
-    <!-- 
-    <reopenReaders>true</reopenReaders>
-      -->
-
-    <!-- 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>${solr.autoCommit.maxTime:60000}</maxTime> 
-       <openSearcher>false</openSearcher> 
-     </autoCommit>
-
-    <!-- softAutoCommit is like autoCommit except it causes a
-         'soft' commit which only ensures that changes are visible
-         but does not ensure that data is synced to disk.  This is
-         faster and more near-realtime friendly than a hard commit.
-      -->   
-     <autoSoftCommit> 
-       <maxTime>${solr.autoSoftCommit.maxTime: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
-      -->
-    <!-- The RunExecutableListener executes an external command from a
-         hook such as postCommit or postOptimize.
-         
-         exe - the name of the executable to run
-         dir - dir to use as the current working directory. (default=".")
-         wait - the calling thread waits until the executable returns. 
-                (default="true")
-         args - the arguments to pass to the program.  (default is none)
-         env - environment variables to set.  (default is none)
-      -->
-    <!-- This example shows how RunExecutableListener could be used
-         with the script based replication...
-         http://wiki.apache.org/solr/CollectionDistribution
-      -->
-    <!--
-       <listener event="postCommit" class="solr.RunExecutableListener">
-         <str name="exe">solr/bin/snapshooter</str>
-         <str name="dir">.</str>
-         <bool name="wait">true</bool>
-         <arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
-         <arr name="env"> <str>MYVAR=val1</str> </arr>
-       </listener>
-      -->
-
-  </updateHandler>
-  
-  <!-- IndexReaderFactory
-
-       Use the following format to specify a custom IndexReaderFactory,
-       which allows for alternate IndexReader implementations.
-
-       ** Experimental Feature **
-
-       Please note - Using a custom IndexReaderFactory may prevent
-       certain other features from working. The API to
-       IndexReaderFactory may change without warning or may even be
-       removed from future releases if the problems cannot be
-       resolved.
-
-
-       ** Features that may not work with custom IndexReaderFactory **
-
-       The ReplicationHandler assumes a disk-resident index. Using a
-       custom IndexReader implementation may cause incompatibility
-       with ReplicationHandler and may cause replication to not work
-       correctly. See SOLR-1366 for details.
-
-    -->
-  <!--
-  <indexReaderFactory name="IndexReaderFactory" class="package.class">
-    <str name="someArg">Some Value</str>
-  </indexReaderFactory >
-  -->
-  <!-- By explicitly declaring the Factory, the termIndexDivisor can
-       be specified.
-    -->
-  <!--
-     <indexReaderFactory name="IndexReaderFactory" 
-                         class="solr.StandardIndexReaderFactory">
-       <int name="setTermIndexDivisor">12</int>
-     </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>1024</maxBooleanClauses>
-
-
-    <!-- Solr Internal Query Caches
-
-         There are two implementations of cache available for Solr,
-         LRUCache, based on a synchronized LinkedHashMap, and
-         FastLRUCache, based on a ConcurrentHashMap.  
-
-         FastLRUCache has faster gets and slower puts in single
-         threaded operation and thus is generally faster than LRUCache
-         when the hit ratio of the cache is high (> 75%), and may be
-         faster under other scenarios on multi-cpu systems.
-    -->
-
-    <!-- Filter Cache
-
-         Cache used by SolrIndexSearcher for filters (DocSets),
-         unordered sets of *all* documents that match a query.  When a
-         new searcher is opened, its caches may be prepopulated or
-         "autowarmed" using data from caches in the old searcher.
-         autowarmCount is the number of items to prepopulate.  For
-         LRUCache, the autowarmed items will be the most recently
-         accessed items.
-
-         Parameters:
-           class - the SolrCache implementation LRUCache or
-               (LRUCache or FastLRUCache)
-           size - the maximum number of entries in the cache
-           initialSize - the initial capacity (number of entries) of
-               the cache.  (see java.util.HashMap)
-           autowarmCount - the number of entries to prepopulate from
-               and old cache.  
-      -->
-    <filterCache class="solr.FastLRUCache"
-                 size="512"
-                 initialSize="512"
-                 autowarmCount="0"/>
-
-    <!-- Query Result Cache
-         
-         Caches results of searches - ordered lists of document ids
-         (DocList) based on a query, a sort, and the range of documents requested.  
-      -->
-    <queryResultCache class="solr.LRUCache"
-                     size="512"
-                     initialSize="512"
-                     autowarmCount="0"/>
-   
-    <!-- Document Cache
-
-         Caches Lucene Document objects (the stored fields for each
-         document).  Since Lucene internal document ids are transient,
-         this cache will not be autowarmed.  
-      -->
-    <documentCache class="solr.LRUCache"
-                   size="512"
-                   initialSize="512"
-                   autowarmCount="0"/>
-    
-    <!-- Field Value Cache
-         
-         Cache used to hold field values that are quickly accessible
-         by document id.  The fieldValueCache is created by default
-         even if not configured here.
-      -->
-    <!--
-       <fieldValueCache class="solr.FastLRUCache"
-                        size="512"
-                        autowarmCount="128"
-                        showItems="32" />
-      -->
-
-    <!-- Custom Cache
-
-         Example of a generic cache.  These caches may be accessed by
-         name through SolrIndexSearcher.getCache(),cacheLookup(), and
-         cacheInsert().  The purpose is to enable easy caching of
-         user/application level data.  The regenerator argument should
-         be specified as an implementation of solr.CacheRegenerator 
-         if autowarming is desired.  
-      -->
-    <!--
-       <cache name="myUserCache"
-              class="solr.LRUCache"
-              size="4096"
-              initialSize="1024"
-              autowarmCount="1024"
-              regenerator="com.mycompany.MyRegenerator"
-              />
-      -->
-
-
-    <!-- Lazy Field Loading
-
-         If true, stored fields that are not requested will be loaded
-         lazily.  This can result in a significant speed improvement
-         if the usual case is to not load all stored fields,
-         especially if the skipped fields are large compressed text
-         fields.
-    -->
-    <enableLazyFieldLoading>true</enableLazyFieldLoading>
-
-   <!-- Use Filter For Sorted Query
-
-        A possible optimization that attempts to use a filter to
-        satisfy a search.  If the requested sort does not include
-        score, then the filterCache will be checked for a filter
-        matching the query. If found, the filter will be used as the
-        source of document ids, and then the sort will be applied to
-        that.
-
-        For most situations, this will not be useful unless you
-        frequently get the same search repeatedly with different sort
-        options, and none of them ever use "score"
-     -->
-   <!--
-      <useFilterForSortedQuery>true</useFilterForSortedQuery>
-     -->
-
-   <!-- Result Window Size
-
-        An optimization for use with the queryResultCache.  When a search
-        is requested, a superset of the requested number of document ids
-        are collected.  For example, if a search for a particular query
-        requests matching documents 10 through 19, and queryWindowSize is 50,
-        then documents 0 through 49 will be collected and cached.  Any further
-        requests in that range can be satisfied via the cache.  
-     -->
-   <queryResultWindowSize>20</queryResultWindowSize>
-
-   <!-- Maximum number of documents to cache for any entry in the
-        queryResultCache. 
-     -->
-   <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
-
-   <!-- Query Related Event Listeners
-
-        Various IndexSearcher related events can trigger Listeners to
-        take actions.
-
-        newSearcher - fired whenever a new searcher is being prepared
-        and there is a current searcher handling requests (aka
-        registered).  It can be used to prime certain caches to
-        prevent long request times for certain requests.
-
-        firstSearcher - fired whenever a new searcher is being
-        prepared but there is no current registered searcher to handle
-        requests or to gain autowarming data from.
-
-        
-     -->
-    <!-- QuerySenderListener takes an array of NamedList and executes a
-         local query request for each NamedList in sequence. 
-      -->
-    <listener event="newSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <!--
-           <lst><str name="q">solr</str><str name="sort">price asc</str></lst>
-           <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
-          -->
-      </arr>
-    </listener>
-    <listener event="firstSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <lst>
-          <str name="q">static firstSearcher warming in solrconfig.xml</str>
-        </lst>
-      </arr>
-    </listener>
-
-    <!-- Use Cold Searcher
-
-         If a search request comes in and there is no current
-         registered searcher, then immediately register the still
-         warming searcher and use it.  If "false" then all requests
-         will block until the first searcher is done warming.
-      -->
-    <useColdSearcher>false</useColdSearcher>
-
-    <!-- Max Warming Searchers
-         
-         Maximum number of searchers that may be warming in the
-         background concurrently.  An error is returned if this limit
-         is exceeded.
-
-         Recommend values of 1-2 for read-only slaves, higher for
-         masters w/o cache warming.
-      -->
-    <maxWarmingSearchers>4</maxWarmingSearchers>
-
-  </query>
-
-
-  <!-- Request Dispatcher
-
-       This section contains instructions for how the SolrDispatchFilter
-       should behave when processing requests for this SolrCore.
-
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the 
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
-    -->
-  <requestDispatcher handleSelect="false" >
-    <!-- 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.
-         
-         *** WARNING ***
-         The settings below authorize Solr to fetch remote files, You
-         should make sure your system has some authentication before
-         using enableRemoteStreaming="true"
-
-      --> 
-    <requestParsers enableRemoteStreaming="true" 
-                    multipartUploadLimitInKB="2048000"
-                    formdataUploadLimitInKB="2048"/>
-
-    <!-- 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.
-
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-
-       If a Request Handler is declared with startup="lazy", then it will
-       not be initialized until the first request that uses it.
-
-    -->
-  <!-- SearchHandler
-
-       http://wiki.apache.org/solr/SearchHandler
-
-       For processing Search Queries, the primary Request Handler
-       provided with Solr is "SearchHandler" It delegates to a sequent
-       of SearchComponents (see below) and supports distributed
-       queries across multiple shards
-    -->
-  <requestHandler name="/select" class="solr.SearchHandler">
-    <!-- default values for query parameters can be specified, these
-         will be overridden by parameters in the request
-      -->
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <int name="rows">10</int>
-       <str name="df">text</str>
-     </lst>
-    <!-- In addition to defaults, "appends" params can be specified
-         to identify values which should be appended to the list of
-         multi-val params from the query (or the existing "defaults").
-      -->
-    <!-- In this example, the param "fq=instock:true" would be appended to
-         any query time fq params the user may specify, as a mechanism for
-         partitioning the index, independent of any user selected filtering
-         that may also be desired (perhaps as a result of faceted searching).
-
-         NOTE: there is *absolutely* nothing a client can do to prevent these
-         "appends" values from being used, so don't use this mechanism
-         unless you are sure you always want it.
-      -->
-    <!--
-       <lst name="appends">
-         <str name="fq">inStock:true</str>
-       </lst>
-      -->
-    <!-- "invariants" are a way of letting the Solr maintainer lock down
-         the options available to Solr clients.  Any params values
-         specified here are used regardless of what values may be specified
-         in either the query, the "defaults", or the "appends" params.
-
-         In this example, the facet.field and facet.query params would
-         be fixed, limiting the facets clients can use.  Faceting is
-         not turned on by default - but if the client does specify
-         facet=true in the request, these are the only facets they
-         will be able to see counts for; regardless of what other
-         facet.field or facet.query params they may specify.
-
-         NOTE: there is *absolutely* nothing a client can do to prevent these
-         "invariants" values from being used, so don't use this mechanism
-         unless you are sure you always want it.
-      -->
-    <!--
-       <lst name="invariants">
-         <str name="facet.field">cat</str>
-         <str name="facet.field">manu_exact</str>
-         <str name="facet.query">price:[* TO 500]</str>
-         <str name="facet.query">price:[500 TO *]</str>
-       </lst>
-      -->
-    <!-- If the default list of SearchComponents is not desired, that
-         list can either be overridden completely, or components can be
-         prepended or appended to the default list.  (see below)
-      -->
-    <!--
-       <arr name="components">
-         <str>nameOfCustomComponent1</str>
-         <str>nameOfCustomComponent2</str>
-       </arr>
-      -->
-    </requestHandler>
-
-  <!-- A request handler that returns indented JSON by default -->
-  <requestHandler name="/query" class="solr.SearchHandler">
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <str name="wt">json</str>
-       <str name="indent">true</str>
-       <str name="df">text</str>
-     </lst>
-  </requestHandler>
-
-  <!-- Search Components
-
-       Search components are registered to SolrCore and used by 
-       instances of SearchHandler (which can access them by name)
-       
-       By default, the following components are available:
-       
-       <searchComponent name="query"     class="solr.QueryComponent" />
-       <searchComponent name="facet"     class="solr.FacetComponent" />
-       <searchComponent name="mlt"       class="solr.MoreLikeThisComponent" />
-       <searchComponent name="highlight" class="solr.HighlightComponent" />
-       <searchComponent name="stats"     class="solr.StatsComponent" />
-       <searchComponent name="debug"     class="solr.DebugComponent" />
-   
-       Default configuration in a requestHandler would look like:
-
-       <arr name="components">
-         <str>query</str>
-         <str>facet</str>
-         <str>mlt</str>
-         <str>highlight</str>
-         <str>stats</str>
-         <str>debug</str>
-       </arr>
-
-       If you register a searchComponent to one of the standard names, 
-       that will be used instead of the default.
-
-       To insert components before or after the 'standard' components, use:
-    
-       <arr name="first-components">
-         <str>myFirstComponentName</str>
-       </arr>
-    
-       <arr name="last-components">
-         <str>myLastComponentName</str>
-       </arr>
-
-       NOTE: The component registered with the name "debug" will
-       always be executed after the "last-components" 
-       
-     -->
-  
-   <!-- Spell Check
-
-        The spell check component can return a list of alternative spelling
-        suggestions.  
-
-        http://wiki.apache.org/solr/SpellCheckComponent
-     -->
-  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
-
-    <str name="queryAnalyzerFieldType">text_general</str>
-
-    <!-- Multiple "Spell Checkers" can be declared and used by this
-         component
-      -->
-
-    <!-- a spellchecker built from a field of the main index -->
-    <lst name="spellchecker">
-      <str name="name">default</str>
-      <str name="field">text</str>
-      <str name="classname">solr.DirectSolrSpellChecker</str>
-      <!-- the spellcheck distance measure used, the default is the internal levenshtein -->
-      <str name="distanceMeasure">internal</str>
-      <!-- minimum accuracy needed to be considered a valid spellcheck suggestion -->
-      <float name="accuracy">0.5</float>
-      <!-- the maximum #edits we consider when enumerating terms: can be 1 or 2 -->
-      <int name="maxEdits">2</int>
-      <!-- the minimum shared prefix when enumerating terms -->
-      <int name="minPrefix">1</int>
-      <!-- maximum number of inspections per result. -->
-      <int name="maxInspections">5</int>
-      <!-- minimum length of a query term to be considered for correction -->
-      <int name="minQueryLength">4</int>
-      <!-- maximum threshold of documents a query term can appear to be considered for correction -->
-      <float name="maxQueryFrequency">0.01</float>
-      <!-- uncomment this to require suggestions to occur in 1% of the documents
-        <float name="thresholdTokenFrequency">.01</float>
-      -->
-    </lst>
-    
-    <!-- a spellchecker that can break or combine words.  See "/spell" handler below for usage -->
-    <lst name="spellchecker">
-      <str name="name">wordbreak</str>
-      <str name="classname">solr.WordBreakSolrSpellChecker</str>      
-      <str name="field">name</str>
-      <str name="combineWords">true</str>
-      <str name="breakWords">true</str>
-      <int name="maxChanges">10</int>
-    </lst>
-
-    <!-- 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">
-      <str name="df">text</str>
-      <!-- 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">
-      <str name="df">text</str>
-      <bool name="tv">true</bool>
-    </lst>
-    <arr name="last-components">
-      <str>tvComponent</str>
-    </arr>
-  </requestHandler>
-
-  <!-- Clustering Component
-
-       http://wiki.apache.org/solr/ClusteringComponent
-
-       You'll need to set the solr.clustering.enabled system property
-       when running solr to run with clustering enabled:
-
-            java -Dsolr.clustering.enabled=true -jar start.jar
-
-    -->
-  <searchComponent name="clustering"
-                   enable="${solr.clustering.enabled:false}"
-                   class="solr.clustering.ClusteringComponent" >
-    <!-- Declare an engine -->
-    <lst name="engine">
-      <!-- The name, only one can be named "default" -->
-      <str name="name">default</str>
-
-      <!-- Class name of Carrot2 clustering algorithm.
-
-           Currently available algorithms are:
-           
-           * org.carrot2.clustering.lingo.LingoClusteringAlgorithm
-           * org.carrot2.clustering.stc.STCClusteringAlgorithm
-           * org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm
-           
-           See http://project.carrot2.org/algorithms.html for the
-           algorithm's characteristics.
-        -->
-      <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>
-
-      <!-- Overriding values for Carrot2 default algorithm attributes.
-
-           For a description of all available attributes, see:
-           http://download.carrot2.org/stable/manual/#chapter.components.
-           Use attribute key as name attribute of str elements
-           below. These can be further overridden for individual
-           requests by specifying attribute key as request parameter
-           name and attribute value as parameter value.
-        -->
-      <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>
-
-      <!-- Location of Carrot2 lexical resources.
-
-           A directory from which to load Carrot2-specific stop words
-           and stop labels. Absolute or relative to Solr config directory.
-           If a specific resource (e.g. stopwords.en) is present in the
-           specified dir, it will completely override the corresponding
-           default one that ships with Carrot2.
-
-           For an overview of Carrot2 lexical resources, see:
-           http://download.carrot2.org/head/manual/#chapter.lexical-resources
-        -->
-      <str name="carrot.lexicalResourcesDir">clustering/carrot2</str>
-
-      <!-- The language to assume for the documents.
-
-           For a list of allowed values, see:
-           http://download.carrot2.org/stable/manual/#section.attribute.lingo.MultilingualClustering.defaultLanguage
-       -->
-      <str name="MultilingualClustering.defaultLanguage">ENGLISH</str>
-    </lst>
-    <lst name="engine">
-      <str name="name">stc</str>
-      <str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>
-    </lst>
-  </searchComponent>
-
-  <!-- A request handler for demonstrating the clustering 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="/clustering"
-                  startup="lazy"
-                  enable="${solr.clustering.enabled:false}"
-                  class="solr.SearchHandler">
-    <lst name="defaults">
-      <bool name="clustering">true</bool>
-      <str name="clustering.engine">default</str>
-      <bool name="clustering.results">true</bool>
-      <!-- The title field -->
-      <str name="carrot.title">name</str>
-      <str name="carrot.url">id</str>
-      <!-- The field to cluster on -->
-       <str name="carrot.snippet">features</str>
-       <!-- produce summaries -->
-       <bool name="carrot.produceSummary">true</bool>
-       <!-- the maximum number of labels per cluster -->
-       <!--<int name="carrot.numDescriptions">5</int>-->
-       <!-- produce sub clusters -->
-       <bool name="carrot.outputSubClusters">false</bool>
-       
-       <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
-       </str>
-       <str name="q.alt">*:*</str>
-       <str name="rows">10</str>
-       <str name="fl">*,score</str>
-    </lst>     
-    <arr name="last-components">
-      <str>clustering</str>
-    </arr>
-  </requestHandler>
-  
-  <!-- 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>
-      <str name="df">text</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
-
-    --> 
-  <!-- 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"/>
-  
-
-  <!-- XSLT response writer transforms the XML output by any xslt file found
-       in Solr's conf/xslt directory.  Changes to xslt files are checked for
-       every xsltCacheLifetimeSeconds.  
-    -->
-  <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
-    <int name="xsltCacheLifetimeSeconds">5</int>
-  </queryResponseWriter>
-
-  <!-- Query Parsers
-
-       https://cwiki.apache.org/confluence/display/solr/Query+Syntax+and+Parsing
-
-       Multiple QParserPlugins can be registered by name, and then
-       used in either the "defType" param for the QueryComponent (used
-       by SearchHandler) or in LocalParams
-    -->
-  <!-- example of registering a query parser -->
-  <!--
-     <queryParser name="myparser" class="com.mycompany.MyQParserPlugin"/>
-    -->
-
-  <!-- Function Parsers
-
-       http://wiki.apache.org/solr/FunctionQuery
-
-       Multiple ValueSourceParsers can be registered by name, and then
-       used as function names when using the "func" QParser.
-    -->
-  <!-- example of registering a custom function parser  -->
-  <!--
-     <valueSourceParser name="myfunc" 
-                        class="com.mycompany.MyValueSourceParser" />
-    -->
-    
-  
-  <!-- Document Transformers
-       http://wiki.apache.org/solr/DocTransformers
-    -->
-  <!--
-     Could be something like:
-     <transformer name="db" class="com.mycompany.LoadFromDatabaseTransformer" >
-       <int name="connection">jdbc://....</int>
-     </transformer>
-     
-     To add a constant value to all docs, use:
-     <transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
-       <int name="value">5</int>
-     </transformer>
-     
-     If you want the user to still be able to change it with _value:something_ use this:
-     <transformer name="mytrans3" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
-       <double name="defaultValue">5</double>
-     </transformer>
-
-      If you are using the QueryElevationComponent, you may wish to mark documents that get boosted.  The
-      EditorialMarkerFactory will do exactly that:
-     <transformer name="qecBooster" class="org.apache.solr.response.transform.EditorialMarkerFactory" />
-    -->
-</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/stopwords.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/stopwords.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/stopwords.txt
deleted file mode 100644
index ae1e83e..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/synonyms.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/synonyms.txt
deleted file mode 100644
index 7f72128..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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 WordDelimiterFilter coming
-#after us won't split it into two words.
-
-# Synonym mappings can be used for spelling correction too
-pixima => pixma
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/solr.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/solr.xml b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/solr.xml
deleted file mode 100644
index 8c1509a..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/solr.xml
+++ /dev/null
@@ -1,45 +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.
--->
-
-<!--
- All (relative) paths are relative to the installation path
-  
-  persistent: Save changes made via the API to this file
-  sharedLib: path to a lib directory that will be shared across all cores
--->
-<solr>
-
-  <str name="shareSchema">${shareSchema:false}</str>
-
-  <solrcloud>
-    <int name="hostPort">${hostPort:8983}</int>
-    <int name="hostPort">${hostPort:8983}</int>
-    <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
-    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
-    <int name="leaderVoteWait">0</int>
-    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:15000}</int>
-    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:120000}</int>
-  </solrcloud>
-
-  <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
-    <str name="urlScheme">${urlScheme:}</str>
-    <int name="socketTimeout">${socketTimeout:120000}</int>
-    <int name="connTimeout">${connTimeout:15000}</int>
-  </shardHandlerFactory>
-
-</solr>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solr.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solr.xml b/solr/contrib/morphlines-core/src/test-files/solr/solr.xml
deleted file mode 100644
index e67eb1d..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solr.xml
+++ /dev/null
@@ -1,34 +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.
--->
-
-<solr>
-
-  <solrcloud>
-    <int name="hostPort">${hostPort:8983}</int>
-    <str name="hostContext">${hostContext:solr}</str>
-    <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
-    <str name="host">127.0.0.1</str>
-  </solrcloud>
-
-  <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
-    <str name="urlScheme">${urlScheme:}</str>
-    <int name="socketTimeout">${socketTimeout:120000}</int>
-    <int name="connTimeout">${connTimeout:15000}</int>
-  </shardHandlerFactory>
-
-</solr>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/currency.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/currency.xml b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/currency.xml
deleted file mode 100644
index 3a9c58a..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/elevate.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/elevate.xml b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/elevate.xml
deleted file mode 100644
index 2c09ebe..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_ca.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_ca.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_ca.txt
deleted file mode 100644
index 307a85f..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_fr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_fr.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_fr.txt
deleted file mode 100644
index 722db58..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_fr.txt
+++ /dev/null
@@ -1,9 +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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_ga.txt
deleted file mode 100644
index 9ebe7fa..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_it.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_it.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/contractions_it.txt
deleted file mode 100644
index cac0409..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/hyphenations_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/hyphenations_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/hyphenations_ga.txt
deleted file mode 100644
index 4d2642c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stemdict_nl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stemdict_nl.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stemdict_nl.txt
deleted file mode 100644
index 4410729..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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


[26/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java
deleted file mode 100644
index adc8d88..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java
+++ /dev/null
@@ -1,881 +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.hadoop;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.lang.reflect.Array;
-import java.net.URI;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.permission.FsPermission;
-import org.apache.hadoop.hdfs.MiniDFSCluster;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.security.authorize.ProxyUsers;
-import org.apache.hadoop.util.JarFinder;
-import org.apache.hadoop.util.ToolRunner;
-import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.lucene.util.Constants;
-import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.LuceneTestCase.AwaitsFix;
-import org.apache.lucene.util.LuceneTestCase.Slow;
-import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.SolrQuery.ORDER;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.embedded.JettySolrRunner;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
-import org.apache.solr.client.solrj.request.QueryRequest;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.cloud.AbstractFullDistribZkTestBase;
-import org.apache.solr.cloud.AbstractZkTestCase;
-import org.apache.solr.common.SolrDocument;
-import org.apache.solr.common.SolrDocumentList;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.cloud.Replica;
-import org.apache.solr.common.cloud.Slice;
-import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.common.cloud.ZkCoreNodeProps;
-import org.apache.solr.common.params.CollectionParams.CollectionAction;
-import org.apache.solr.common.params.CoreAdminParams;
-import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.hadoop.hack.MiniMRClientCluster;
-import org.apache.solr.hadoop.hack.MiniMRClientClusterFactory;
-import org.apache.solr.morphlines.solr.AbstractSolrMorphlineTestBase;
-import org.apache.solr.util.BadHdfsThreadsFilter;
-import org.apache.solr.util.BadMrClusterThreadsFilter;
-import org.apache.solr.util.TimeOut;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.carrotsearch.randomizedtesting.annotations.Nightly;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction.Action;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies.Consequence;
-
-@ThreadLeakAction({Action.WARN})
-@ThreadLeakLingering(linger = 0)
-@ThreadLeakZombies(Consequence.CONTINUE)
-@ThreadLeakFilters(defaultFilters = true, filters = {
-    BadHdfsThreadsFilter.class, BadMrClusterThreadsFilter.class // hdfs currently leaks thread(s)
-})
-@SuppressSSL // SSL does not work with this test for currently unknown reasons
-@Slow
-@Nightly
-@AwaitsFix(bugUrl = "https://issues.apache.org/jira/browse/SOLR-9076")
-public class MorphlineGoLiveMiniMRTest extends AbstractFullDistribZkTestBase {
-  
-  private static final int RECORD_COUNT = 2104;
-  private static final String RESOURCES_DIR = getFile("morphlines-core.marker").getParent();  
-  private static final String DOCUMENTS_DIR = RESOURCES_DIR + "/test-documents";
-  private static final File MINIMR_INSTANCE_DIR = new File(RESOURCES_DIR + "/solr/minimr");
-  private static final File MINIMR_CONF_DIR = new File(RESOURCES_DIR + "/solr/minimr");
-  
-  private static String SEARCH_ARCHIVES_JAR;
-  
-  private static MiniDFSCluster dfsCluster = null;
-  private static MiniMRClientCluster mrCluster = null;
-  private static String tempDir;
- 
-  private final String inputAvroFile1;
-  private final String inputAvroFile2;
-  private final String inputAvroFile3;
-
-  private static File solrHomeDirectory;
-
-  @Override
-  public String getSolrHome() {
-    return solrHomeDirectory.getPath();
-  }
-  
-  public MorphlineGoLiveMiniMRTest() {
-    this.inputAvroFile1 = "sample-statuses-20120521-100919.avro";
-    this.inputAvroFile2 = "sample-statuses-20120906-141433.avro";
-    this.inputAvroFile3 = "sample-statuses-20120906-141433-medium.avro";
-
-    sliceCount = TEST_NIGHTLY ? 5 : 3;
-    fixShardCount(TEST_NIGHTLY ? 5 : 3);
-  }
-  
-  @BeforeClass
-  public static void setupClass() throws Exception {
-    System.setProperty("solr.hdfs.blockcache.global", Boolean.toString(LuceneTestCase.random().nextBoolean()));
-    System.setProperty("solr.hdfs.blockcache.enabled", Boolean.toString(LuceneTestCase.random().nextBoolean()));
-    System.setProperty("solr.hdfs.blockcache.blocksperbank", "2048");
-    
-    solrHomeDirectory = createTempDir().toFile();
-
-    assumeFalse("HDFS tests were disabled by -Dtests.disableHdfs",
-        Boolean.parseBoolean(System.getProperty("tests.disableHdfs", "false")));
-    
-    assumeFalse("FIXME: This test does not work with Windows because of native library requirements", Constants.WINDOWS);
-    
-    AbstractZkTestCase.SOLRHOME = solrHomeDirectory;
-    FileUtils.copyDirectory(MINIMR_INSTANCE_DIR, AbstractZkTestCase.SOLRHOME);
-    tempDir = createTempDir().toFile().getAbsolutePath();
-
-    new File(tempDir).mkdirs();
-
-    FileUtils.copyFile(new File(RESOURCES_DIR + "/custom-mimetypes.xml"), new File(tempDir + "/custom-mimetypes.xml"));
-    
-    AbstractSolrMorphlineTestBase.setupMorphline(tempDir, "test-morphlines/solrCellDocumentTypes", true);
-    
-    
-    System.setProperty("hadoop.log.dir", new File(tempDir, "logs").getAbsolutePath());
-    
-    int dataNodes = 2;
-    
-    JobConf conf = new JobConf();
-    conf.set("dfs.block.access.token.enable", "false");
-    conf.set("dfs.permissions", "true");
-    conf.set("hadoop.security.authentication", "simple");
-    conf.set("mapreduce.jobhistory.minicluster.fixed.ports", "false");
-    conf.set("mapreduce.jobhistory.admin.address", "0.0.0.0:0");
-    
-    conf.set(YarnConfiguration.NM_LOCAL_DIRS, tempDir + File.separator +  "nm-local-dirs");
-    conf.set(YarnConfiguration.DEFAULT_NM_LOG_DIRS, tempDir + File.separator +  "nm-logs");
-
-    
-    new File(tempDir + File.separator +  "nm-local-dirs").mkdirs();
-    
-    System.setProperty("test.build.dir", tempDir + File.separator + "hdfs" + File.separator + "test-build-dir");
-    System.setProperty("test.build.data", tempDir + File.separator + "hdfs" + File.separator + "build");
-    System.setProperty("test.cache.data", tempDir + File.separator + "hdfs" + File.separator + "cache");
-
-    // Initialize AFTER test.build.dir is set, JarFinder uses it.
-    SEARCH_ARCHIVES_JAR = JarFinder.getJar(MapReduceIndexerTool.class);
-    
-    dfsCluster = new MiniDFSCluster(conf, dataNodes, true, null);
-    FileSystem fileSystem = dfsCluster.getFileSystem();
-    fileSystem.mkdirs(new Path("/tmp"));
-    fileSystem.mkdirs(new Path("/user"));
-    fileSystem.mkdirs(new Path("/hadoop/mapred/system"));
-    fileSystem.setPermission(new Path("/tmp"),
-        FsPermission.valueOf("-rwxrwxrwx"));
-    fileSystem.setPermission(new Path("/user"),
-        FsPermission.valueOf("-rwxrwxrwx"));
-    fileSystem.setPermission(new Path("/hadoop/mapred/system"),
-        FsPermission.valueOf("-rwx------"));
-    
-    mrCluster = MiniMRClientClusterFactory.create(MorphlineGoLiveMiniMRTest.class, 1, conf, new File(tempDir, "mrCluster")); 
-        
-        //new MiniMRCluster(0, 0, taskTrackers, nnURI, numDirs, racks,
-        //hosts, null, conf);
-
-    ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
-  }
-  
-  @Override
-  public void distribSetUp() throws Exception {
-    super.distribSetUp();
-    System.setProperty("host", "127.0.0.1");
-    System.setProperty("numShards", Integer.toString(sliceCount));
-    URI uri = dfsCluster.getFileSystem().getUri();
-    System.setProperty("solr.hdfs.home",  uri.toString() + "/" + this.getClass().getName());
-    uploadConfFiles();
-  }
-  
-  @Override
-  public void distribTearDown() throws Exception {
-    super.distribTearDown();
-    System.clearProperty("host");
-    System.clearProperty("numShards");
-    System.clearProperty("solr.hdfs.home");
-  }
-  
-  @AfterClass
-  public static void teardownClass() throws Exception {
-    System.clearProperty("solr.hdfs.blockcache.global");
-    System.clearProperty("solr.hdfs.blockcache.blocksperbank");
-    System.clearProperty("solr.hdfs.blockcache.enabled");
-    System.clearProperty("hadoop.log.dir");
-    System.clearProperty("test.build.dir");
-    System.clearProperty("test.build.data");
-    System.clearProperty("test.cache.data");
-    
-    if (mrCluster != null) {
-      mrCluster.stop();
-      mrCluster = null;
-    }
-    if (dfsCluster != null) {
-      dfsCluster.shutdown();
-      dfsCluster = null;
-    }
-    FileSystem.closeAll();
-  }
-  
-  private JobConf getJobConf() throws IOException {
-    JobConf jobConf = new JobConf(mrCluster.getConfig());
-    return jobConf;
-  }
-  
-  @Test
-  public void testBuildShardUrls() throws Exception {
-    // 2x3
-    Integer numShards = 2;
-    List<Object> urls = new ArrayList<>();
-    urls.add("shard1");
-    urls.add("shard2");
-    urls.add("shard3");
-    urls.add("shard4");
-    urls.add("shard5");
-    urls.add("shard6");
-    List<List<String>> shardUrls = MapReduceIndexerTool.buildShardUrls(urls , numShards);
-    
-    assertEquals(shardUrls.toString(), 2, shardUrls.size());
-    
-    for (List<String> u : shardUrls) {
-      assertEquals(3, u.size());
-    }
-    
-    // 1x6
-    numShards = 1;
-    shardUrls = MapReduceIndexerTool.buildShardUrls(urls , numShards);
-    
-    assertEquals(shardUrls.toString(), 1, shardUrls.size());
-    
-    for (List<String> u : shardUrls) {
-      assertEquals(6, u.size());
-    }
-    
-    // 6x1
-    numShards = 6;
-    shardUrls = MapReduceIndexerTool.buildShardUrls(urls , numShards);
-    
-    assertEquals(shardUrls.toString(), 6, shardUrls.size());
-    
-    for (List<String> u : shardUrls) {
-      assertEquals(1, u.size());
-    }
-    
-    // 3x2
-    numShards = 3;
-    shardUrls = MapReduceIndexerTool.buildShardUrls(urls , numShards);
-    
-    assertEquals(shardUrls.toString(), 3, shardUrls.size());
-    
-    for (List<String> u : shardUrls) {
-      assertEquals(2, u.size());
-    }
-    
-    // null shards, 6x1
-    numShards = null;
-    shardUrls = MapReduceIndexerTool.buildShardUrls(urls , numShards);
-    
-    assertEquals(shardUrls.toString(), 6, shardUrls.size());
-    
-    for (List<String> u : shardUrls) {
-      assertEquals(1, u.size());
-    }
-    
-    // null shards 3x1
-    numShards = null;
-    
-    urls = new ArrayList<>();
-    urls.add("shard1");
-    urls.add("shard2");
-    urls.add("shard3");
-    
-    shardUrls = MapReduceIndexerTool.buildShardUrls(urls , numShards);
-
-    assertEquals(shardUrls.toString(), 3, shardUrls.size());
-    
-    for (List<String> u : shardUrls) {
-      assertEquals(1, u.size());
-    }
-    
-    // 2x(2,3) off balance
-    numShards = 2;
-    urls = new ArrayList<>();
-    urls.add("shard1");
-    urls.add("shard2");
-    urls.add("shard3");
-    urls.add("shard4");
-    urls.add("shard5");
-    shardUrls = MapReduceIndexerTool.buildShardUrls(urls , numShards);
-
-    assertEquals(shardUrls.toString(), 2, shardUrls.size());
-    
-    Set<Integer> counts = new HashSet<>();
-    counts.add(shardUrls.get(0).size());
-    counts.add(shardUrls.get(1).size());
-    
-    assertTrue(counts.contains(2));
-    assertTrue(counts.contains(3));
-  }
-  
-  private String[] prependInitialArgs(String[] args) {
-    String[] head = new String[] {
-        "--morphline-file=" + tempDir + "/test-morphlines/solrCellDocumentTypes.conf",
-        "--morphline-id=morphline1",
-    };
-    return concat(head, args); 
-  }
-
-  @Nightly
-  @Test
-  public void test() throws Exception {
-    
-    waitForRecoveriesToFinish(false);
-    
-    FileSystem fs = dfsCluster.getFileSystem();
-    Path inDir = fs.makeQualified(new Path(
-        "/user/testing/testMapperReducer/input"));
-    fs.delete(inDir, true);
-    String DATADIR = "/user/testing/testMapperReducer/data";
-    Path dataDir = fs.makeQualified(new Path(DATADIR));
-    fs.delete(dataDir, true);
-    Path outDir = fs.makeQualified(new Path(
-        "/user/testing/testMapperReducer/output"));
-    fs.delete(outDir, true);
-    
-    assertTrue(fs.mkdirs(inDir));
-    Path INPATH = upAvroFile(fs, inDir, DATADIR, dataDir, inputAvroFile1);
-    
-    JobConf jobConf = getJobConf();
-    jobConf.set("jobclient.output.filter", "ALL");
-    // enable mapred.job.tracker = local to run in debugger and set breakpoints
-    // jobConf.set("mapred.job.tracker", "local");
-    jobConf.setMaxMapAttempts(1);
-    jobConf.setMaxReduceAttempts(1);
-    jobConf.setJar(SEARCH_ARCHIVES_JAR);
-
-    MapReduceIndexerTool tool;
-    int res;
-    QueryResponse results;
-    String[] args = new String[]{};
-    List<String> argList = new ArrayList<>();
-
-    try (HttpSolrClient server = getHttpSolrClient(cloudJettys.get(0).url)) {
-
-      args = new String[]{
-          "--solr-home-dir=" + MINIMR_CONF_DIR.getAbsolutePath(),
-          "--output-dir=" + outDir.toString(),
-          "--log4j=" + getFile("log4j.properties").getAbsolutePath(),
-          "--mappers=3",
-          random().nextBoolean() ? "--input-list=" + INPATH.toString() : dataDir.toString(),
-          "--go-live-threads", Integer.toString(random().nextInt(15) + 1),
-          "--verbose",
-          "--go-live"
-      };
-      args = prependInitialArgs(args);
-      getShardUrlArgs(argList);
-      args = concat(args, argList.toArray(new String[0]));
-
-      if (true) {
-        tool = new MapReduceIndexerTool();
-        res = ToolRunner.run(jobConf, tool, args);
-        assertEquals(0, res);
-        assertTrue(tool.job.isComplete());
-        assertTrue(tool.job.isSuccessful());
-        results = server.query(new SolrQuery("*:*"));
-        assertEquals(20, results.getResults().getNumFound());
-      }
-
-      fs.delete(inDir, true);
-      fs.delete(outDir, true);
-      fs.delete(dataDir, true);
-      assertTrue(fs.mkdirs(inDir));
-      INPATH = upAvroFile(fs, inDir, DATADIR, dataDir, inputAvroFile2);
-
-      args = new String[]{
-          "--solr-home-dir=" + MINIMR_CONF_DIR.getAbsolutePath(),
-          "--output-dir=" + outDir.toString(),
-          "--mappers=3",
-          "--verbose",
-          "--go-live",
-          random().nextBoolean() ? "--input-list=" + INPATH.toString() : dataDir.toString(),
-          "--go-live-threads", Integer.toString(random().nextInt(15) + 1)
-      };
-      args = prependInitialArgs(args);
-
-      getShardUrlArgs(argList);
-      args = concat(args, argList.toArray(new String[0]));
-
-      if (true) {
-        tool = new MapReduceIndexerTool();
-        res = ToolRunner.run(jobConf, tool, args);
-        assertEquals(0, res);
-        assertTrue(tool.job.isComplete());
-        assertTrue(tool.job.isSuccessful());
-        results = server.query(new SolrQuery("*:*"));
-
-        assertEquals(22, results.getResults().getNumFound());
-      }
-
-      // try using zookeeper
-      String collection = "collection1";
-      if (random().nextBoolean()) {
-        // sometimes, use an alias
-        createAlias("updatealias", "collection1");
-        collection = "updatealias";
-      }
-
-      fs.delete(inDir, true);
-      fs.delete(outDir, true);
-      fs.delete(dataDir, true);
-      INPATH = upAvroFile(fs, inDir, DATADIR, dataDir, inputAvroFile3);
-
-      cloudClient.deleteByQuery("*:*");
-      cloudClient.commit();
-      assertEquals(0, cloudClient.query(new SolrQuery("*:*")).getResults().getNumFound());
-
-      args = new String[]{
-          "--output-dir=" + outDir.toString(),
-          "--mappers=3",
-          "--reducers=6",
-          "--fanout=2",
-          "--verbose",
-          "--go-live",
-          random().nextBoolean() ? "--input-list=" + INPATH.toString() : dataDir.toString(),
-          "--zk-host", zkServer.getZkAddress(),
-          "--collection", collection
-      };
-      args = prependInitialArgs(args);
-
-      if (true) {
-        tool = new MapReduceIndexerTool();
-        res = ToolRunner.run(jobConf, tool, args);
-        assertEquals(0, res);
-        assertTrue(tool.job.isComplete());
-        assertTrue(tool.job.isSuccessful());
-
-        SolrDocumentList resultDocs = executeSolrQuery(cloudClient, "*:*");
-        assertEquals(RECORD_COUNT, resultDocs.getNumFound());
-        assertEquals(RECORD_COUNT, resultDocs.size());
-
-        // perform updates
-        for (int i = 0; i < RECORD_COUNT; i++) {
-          SolrDocument doc = resultDocs.get(i);
-          SolrInputDocument update = new SolrInputDocument();
-          for (Map.Entry<String, Object> entry : doc.entrySet()) {
-            update.setField(entry.getKey(), entry.getValue());
-          }
-          update.setField("user_screen_name", "Nadja" + i);
-          update.removeField("_version_");
-          cloudClient.add(update);
-        }
-        cloudClient.commit();
-
-        // verify updates
-        SolrDocumentList resultDocs2 = executeSolrQuery(cloudClient, "*:*");
-        assertEquals(RECORD_COUNT, resultDocs2.getNumFound());
-        assertEquals(RECORD_COUNT, resultDocs2.size());
-        for (int i = 0; i < RECORD_COUNT; i++) {
-          SolrDocument doc = resultDocs.get(i);
-          SolrDocument doc2 = resultDocs2.get(i);
-          assertEquals(doc.getFirstValue("id"), doc2.getFirstValue("id"));
-          assertEquals("Nadja" + i, doc2.getFirstValue("user_screen_name"));
-          assertEquals(doc.getFirstValue("text"), doc2.getFirstValue("text"));
-
-          // perform delete
-          cloudClient.deleteById((String) doc.getFirstValue("id"));
-        }
-        cloudClient.commit();
-
-        // verify deletes
-        assertEquals(0, executeSolrQuery(cloudClient, "*:*").size());
-      }
-
-      cloudClient.deleteByQuery("*:*");
-      cloudClient.commit();
-      assertEquals(0, cloudClient.query(new SolrQuery("*:*")).getResults().getNumFound());
-    }
-    
-    // try using zookeeper with replication
-    String replicatedCollection = "replicated_collection";
-    if (TEST_NIGHTLY) {
-      createCollection(replicatedCollection, 3, 3, 3);
-    } else {
-      createCollection(replicatedCollection, 2, 3, 2);
-    }
-    waitForRecoveriesToFinish(false);
-    cloudClient.setDefaultCollection(replicatedCollection);
-    fs.delete(inDir, true);   
-    fs.delete(outDir, true);  
-    fs.delete(dataDir, true);  
-    assertTrue(fs.mkdirs(dataDir));
-    INPATH = upAvroFile(fs, inDir, DATADIR, dataDir, inputAvroFile3);
-    
-    args = new String[] {
-        "--solr-home-dir=" + MINIMR_CONF_DIR.getAbsolutePath(),
-        "--output-dir=" + outDir.toString(),
-        "--mappers=3",
-        "--reducers=12",
-        "--fanout=2",
-        "--verbose",
-        "--go-live",
-        "--zk-host", zkServer.getZkAddress(), 
-        "--collection", replicatedCollection, dataDir.toString()
-    };
-    args = prependInitialArgs(args);
-    
-    if (true) {
-      tool = new MapReduceIndexerTool();
-      res = ToolRunner.run(jobConf, tool, args);
-      assertEquals(0, res);
-      assertTrue(tool.job.isComplete());
-      assertTrue(tool.job.isSuccessful());
-      
-      SolrDocumentList resultDocs = executeSolrQuery(cloudClient, "*:*");   
-      assertEquals(RECORD_COUNT, resultDocs.getNumFound());
-      assertEquals(RECORD_COUNT, resultDocs.size());
-      
-      checkConsistency(replicatedCollection);
-      
-      // perform updates
-      for (int i = 0; i < RECORD_COUNT; i++) {
-          SolrDocument doc = resultDocs.get(i);          
-          SolrInputDocument update = new SolrInputDocument();
-          for (Map.Entry<String, Object> entry : doc.entrySet()) {
-              update.setField(entry.getKey(), entry.getValue());
-          }
-          update.setField("user_screen_name", "@Nadja" + i);
-          update.removeField("_version_");
-          cloudClient.add(update);
-      }
-      cloudClient.commit();
-      
-      // verify updates
-      SolrDocumentList resultDocs2 = executeSolrQuery(cloudClient, "*:*");   
-      assertEquals(RECORD_COUNT, resultDocs2.getNumFound());
-      assertEquals(RECORD_COUNT, resultDocs2.size());
-      for (int i = 0; i < RECORD_COUNT; i++) {
-          SolrDocument doc = resultDocs.get(i);
-          SolrDocument doc2 = resultDocs2.get(i);
-          assertEquals(doc.getFieldValues("id"), doc2.getFieldValues("id"));
-          assertEquals(1, doc.getFieldValues("id").size());
-          assertEquals(Arrays.asList("@Nadja" + i), doc2.getFieldValues("user_screen_name"));
-          assertEquals(doc.getFieldValues("text"), doc2.getFieldValues("text"));
-          
-          // perform delete
-          cloudClient.deleteById((String)doc.getFirstValue("id"));
-      }
-      cloudClient.commit();
-      
-      // verify deletes
-      assertEquals(0, executeSolrQuery(cloudClient, "*:*").size());
-    }
-    
-    // try using solr_url with replication
-    cloudClient.deleteByQuery("*:*");
-    cloudClient.commit();
-    assertEquals(0, executeSolrQuery(cloudClient, "*:*").getNumFound());
-    assertEquals(0, executeSolrQuery(cloudClient, "*:*").size());
-    fs.delete(inDir, true);    
-    fs.delete(dataDir, true);
-    assertTrue(fs.mkdirs(dataDir));
-    INPATH = upAvroFile(fs, inDir, DATADIR, dataDir, inputAvroFile3);
-    
-    args = new String[] {
-        "--solr-home-dir=" + MINIMR_CONF_DIR.getAbsolutePath(),
-        "--output-dir=" + outDir.toString(),
-        "--shards", "2",
-        "--mappers=3",
-        "--verbose",
-        "--go-live", 
-        "--go-live-threads", Integer.toString(random().nextInt(15) + 1),  dataDir.toString()
-    };
-    args = prependInitialArgs(args);
-
-    argList = new ArrayList<>();
-    getShardUrlArgs(argList, replicatedCollection);
-    args = concat(args, argList.toArray(new String[0]));
-    
-    if (true) {
-      tool = new MapReduceIndexerTool();
-      res = ToolRunner.run(jobConf, tool, args);
-      assertEquals(0, res);
-      assertTrue(tool.job.isComplete());
-      assertTrue(tool.job.isSuccessful());
-      
-      checkConsistency(replicatedCollection);
-      
-      assertEquals(RECORD_COUNT, executeSolrQuery(cloudClient, "*:*").size());
-    }
-    
-    // delete collection
-    ModifiableSolrParams params = new ModifiableSolrParams();
-    params.set("action", CollectionAction.DELETE.toString());
-    params.set(CoreAdminParams.DELETE_INSTANCE_DIR, true);
-    params.set(CoreAdminParams.DELETE_DATA_DIR, true);
-    params.set(CoreAdminParams.DELETE_INDEX, true);
-    params.set("name", replicatedCollection);
-    QueryRequest request = new QueryRequest(params);
-    request.setPath("/admin/collections");
-    cloudClient.request(request);
-
-    final TimeOut timeout = new TimeOut(10, TimeUnit.SECONDS);
-    while (cloudClient.getZkStateReader().getClusterState().hasCollection(replicatedCollection)) {
-      if (timeout.hasTimedOut()) {
-         throw new AssertionError("Timeout waiting to see removed collection leave clusterstate");
-      }
-      
-      Thread.sleep(200);
-    }
-    
-    if (TEST_NIGHTLY) {
-      createCollection(replicatedCollection, 3, 3, 3);
-    } else {
-      createCollection(replicatedCollection, 2, 3, 2);
-    }
-    
-    waitForRecoveriesToFinish(replicatedCollection, false);
-    printLayout();
-    assertEquals(0, executeSolrQuery(cloudClient, "*:*").getNumFound());
-    
-    
-    args = new String[] {
-        "--solr-home-dir=" + MINIMR_CONF_DIR.getAbsolutePath(),
-        "--output-dir=" + outDir.toString(),
-        "--shards", "2",
-        "--mappers=3",
-        "--verbose",
-        "--go-live", 
-        "--go-live-threads", Integer.toString(random().nextInt(15) + 1),  dataDir.toString()
-    };
-    args = prependInitialArgs(args);
-
-    argList = new ArrayList<>();
-    getShardUrlArgs(argList, replicatedCollection);
-    args = concat(args, argList.toArray(new String[0]));
-    
-    tool = new MapReduceIndexerTool();
-    res = ToolRunner.run(jobConf, tool, args);
-    assertEquals(0, res);
-    assertTrue(tool.job.isComplete());
-    assertTrue(tool.job.isSuccessful());
-    
-    checkConsistency(replicatedCollection);
-    
-    assertEquals(RECORD_COUNT, executeSolrQuery(cloudClient, "*:*").size());
-  }
-
-  private void getShardUrlArgs(List<String> args) {
-    for (int i = 0; i < getShardCount(); i++) {
-      args.add("--shard-url");
-      args.add(cloudJettys.get(i).url);
-    }
-  }
-  
-  private SolrDocumentList executeSolrQuery(SolrClient collection, String queryString) throws SolrServerException, IOException {
-    SolrQuery query = new SolrQuery(queryString).setRows(2 * RECORD_COUNT).addSort("id", ORDER.asc);
-    QueryResponse response = collection.query(query);
-    return response.getResults();
-  }
-
-  private void checkConsistency(String replicatedCollection)
-      throws Exception {
-    Collection<Slice> slices = cloudClient.getZkStateReader().getClusterState()
-        .getSlices(replicatedCollection);
-    for (Slice slice : slices) {
-      Collection<Replica> replicas = slice.getReplicas();
-      long found = -1;
-      for (Replica replica : replicas) {
-        try (HttpSolrClient client = getHttpSolrClient(new ZkCoreNodeProps(replica).getCoreUrl())) {
-          SolrQuery query = new SolrQuery("*:*");
-          query.set("distrib", false);
-          QueryResponse replicaResults = client.query(query);
-          long count = replicaResults.getResults().getNumFound();
-          if (found != -1) {
-            assertEquals(slice.getName() + " is inconsistent "
-                + new ZkCoreNodeProps(replica).getCoreUrl(), found, count);
-          }
-          found = count;
-        }
-      }
-    }
-  }
-  
-  private void getShardUrlArgs(List<String> args, String replicatedCollection) {
-    Collection<Slice> slices = cloudClient.getZkStateReader().getClusterState().getSlices(replicatedCollection);
-    for (Slice slice : slices) {
-      Collection<Replica> replicas = slice.getReplicas();
-      for (Replica replica : replicas) {
-        args.add("--shard-url");
-        args.add(new ZkCoreNodeProps(replica).getCoreUrl());
-      }
-    }
-  }
-  
-  private Path upAvroFile(FileSystem fs, Path inDir, String DATADIR,
-      Path dataDir, String localFile) throws IOException, UnsupportedEncodingException {
-    Path INPATH = new Path(inDir, "input.txt");
-    OutputStream os = fs.create(INPATH);
-    Writer wr = new OutputStreamWriter(os, StandardCharsets.UTF_8);
-    wr.write(DATADIR + File.separator + localFile);
-    wr.close();
-    
-    assertTrue(fs.mkdirs(dataDir));
-    fs.copyFromLocalFile(new Path(DOCUMENTS_DIR, localFile), dataDir);
-    return INPATH;
-  }
-  
-  @Override
-  public JettySolrRunner createJetty(File solrHome, String dataDir,
-      String shardList, String solrConfigOverride, String schemaOverride)
-      throws Exception {
-
-    Properties props = new Properties();
-    if (solrConfigOverride != null)
-      props.setProperty("solrconfig", solrConfigOverride);
-    if (schemaOverride != null)
-      props.setProperty("schema", schemaOverride);
-    if (shardList != null) 
-      props.setProperty("shards", shardList);
-
-    String collection = System.getProperty("collection");
-    if (collection == null)
-      collection = "collection1";
-    props.setProperty("collection", collection);
-
-    JettySolrRunner jetty = new JettySolrRunner(solrHome.getAbsolutePath(), props, buildJettyConfig(context));
-    jetty.start();
-    
-    return jetty;
-  }
-  
-  private static void putConfig(SolrZkClient zkClient, File solrhome, String name) throws Exception {
-    putConfig(zkClient, solrhome, name, name);
-  }
-  
-  private static void putConfig(SolrZkClient zkClient, File solrhome, String srcName, String destName)
-      throws Exception {
-    
-    File file = new File(solrhome, "conf" + File.separator + srcName);
-    if (!file.exists()) {
-      // LOG.info("skipping " + file.getAbsolutePath() +
-      // " because it doesn't exist");
-      return;
-    }
-    
-    String destPath = "/configs/conf1/" + destName;
-    // LOG.info("put " + file.getAbsolutePath() + " to " + destPath);
-    zkClient.makePath(destPath, file, false, true);
-  }
-  
-  private void uploadConfFiles() throws Exception {
-    // upload our own config files
-    SolrZkClient zkClient = new SolrZkClient(zkServer.getZkAddress(), 10000);
-    putConfig(zkClient, new File(RESOURCES_DIR + "/solr/solrcloud"),
-        "solrconfig.xml");
-    putConfig(zkClient, MINIMR_CONF_DIR, "schema.xml");
-    putConfig(zkClient, MINIMR_CONF_DIR, "elevate.xml");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_en.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_ar.txt");
-    
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_bg.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_ca.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_cz.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_da.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_el.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_es.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_eu.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_de.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_fa.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_fi.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_fr.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_ga.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_gl.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_hi.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_hu.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_hy.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_id.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_it.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_ja.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_lv.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_nl.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_no.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_pt.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_ro.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_ru.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_sv.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_th.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stopwords_tr.txt");
-    
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/contractions_ca.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/contractions_fr.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/contractions_ga.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/contractions_it.txt");
-    
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/stemdict_nl.txt");
-    
-    putConfig(zkClient, MINIMR_CONF_DIR, "lang/hyphenations_ga.txt");
-    
-    putConfig(zkClient, MINIMR_CONF_DIR, "stopwords.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "protwords.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "currency.xml");
-    putConfig(zkClient, MINIMR_CONF_DIR, "open-exchange-rates.json");
-    putConfig(zkClient, MINIMR_CONF_DIR, "mapping-ISOLatin1Accent.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "old_synonyms.txt");
-    putConfig(zkClient, MINIMR_CONF_DIR, "synonyms.txt");
-    zkClient.close();
-  }
-  
-  protected static <T> T[] concat(T[]... arrays) {
-    if (arrays.length <= 0) {
-      throw new IllegalArgumentException();
-    }
-    Class clazz = null;
-    int length = 0;
-    for (T[] array : arrays) {
-      clazz = array.getClass();
-      length += array.length;
-    }
-    T[] result = (T[]) Array.newInstance(clazz.getComponentType(), length);
-    int pos = 0;
-    for (T[] array : arrays) {
-      System.arraycopy(array, 0, result, pos, array.length);
-      pos += array.length;
-    }
-    return result;
-  }
-  
-  private NamedList<Object> createAlias(String alias, String collections) throws SolrServerException, IOException {
-    ModifiableSolrParams params = new ModifiableSolrParams();
-    params.set("collections", collections);
-    params.set("name", alias);
-    params.set("action", CollectionAction.CREATEALIAS.toString());
-    QueryRequest request = new QueryRequest(params);
-    request.setPath("/admin/collections");
-    return cloudClient.request(request);
-  }
-
-  
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineMapperTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineMapperTest.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineMapperTest.java
deleted file mode 100644
index 4f93a66..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineMapperTest.java
+++ /dev/null
@@ -1,76 +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.hadoop;
-
-import java.net.URLEncoder;
-import java.util.List;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mrunit.mapreduce.MapDriver;
-import org.apache.hadoop.mrunit.types.Pair;
-import org.apache.lucene.util.Constants;
-import org.apache.lucene.util.LuceneTestCase.AwaitsFix;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.hadoop.morphline.MorphlineMapper;
-import org.apache.solr.util.BadHdfsThreadsFilter;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
-
-@ThreadLeakFilters(defaultFilters = true, filters = {
-    BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
-})
-@AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-9220")
-public class MorphlineMapperTest extends MRUnitBase {
-  
-  @BeforeClass
-  public static void beforeClass() {
-    assumeFalse("Does not work on Windows, because it uses UNIX shell commands or POSIX paths", Constants.WINDOWS);
-  }
-  
-  @Test
-  public void testMapper() throws Exception {
-    MorphlineMapper mapper = new MorphlineMapper();
-    MapDriver<LongWritable, Text, Text, SolrInputDocumentWritable> mapDriver = MapDriver.newMapDriver(mapper);;
-
-    Configuration config = mapDriver.getConfiguration();
-    setupHadoopConfig(config);
-
-    mapDriver.withInput(new LongWritable(0L), new Text("hdfs://localhost/" +
-        URLEncoder.encode(DOCUMENTS_DIR, "UTF-8").replace("+", "%20") +
-        "/sample-statuses-20120906-141433.avro"));
-
-    SolrInputDocument sid = new SolrInputDocument();
-    sid.addField("id", "uniqueid1");
-    sid.addField("user_name", "user1");
-    sid.addField("text", "content of record one");
-    SolrInputDocumentWritable sidw = new SolrInputDocumentWritable(sid);
-
-    mapDriver
-      .withCacheArchive(solrHomeZip.getAbsolutePath())
-      .withOutput(new Text("0"), sidw);
-    //mapDriver.runTest();
-    List<Pair<Text, SolrInputDocumentWritable>> result = mapDriver.run();
-    for (Pair<Text, SolrInputDocumentWritable> p: result) {
-      System.out.println(p.getFirst());
-      System.out.println(p.getSecond());
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineReducerTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineReducerTest.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineReducerTest.java
deleted file mode 100644
index 31616d8..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineReducerTest.java
+++ /dev/null
@@ -1,131 +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.hadoop;
-
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapred.TaskID;
-import org.apache.hadoop.mapreduce.InputFormat;
-import org.apache.hadoop.mapreduce.InputSplit;
-import org.apache.hadoop.mapreduce.JobContext;
-import org.apache.hadoop.mapreduce.RecordReader;
-import org.apache.hadoop.mapreduce.TaskAttemptContext;
-import org.apache.hadoop.mapreduce.TaskAttemptID;
-import org.apache.hadoop.mrunit.mapreduce.ReduceDriver;
-import org.apache.lucene.util.Constants;
-import org.apache.solr.common.SolrInputDocument;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-import com.google.common.collect.Lists;
-
-@Ignore("This test cannot currently work because it uses a local filesystem output path for the indexes and Solr requires hdfs output paths")
-public class MorphlineReducerTest extends MRUnitBase {
-  
-  @BeforeClass
-  public static void beforeClass2() {
-    assumeFalse("Does not work on Windows, because it uses UNIX shell commands or POSIX paths", Constants.WINDOWS);
-    
-    System.setProperty("verifyPartitionAssignment", "false");
-  }
-  
-  @AfterClass
-  public static void afterClass2() {
-    System.clearProperty("verifyPartitionAssignment");
-  }
-  
-  public static class MySolrReducer extends SolrReducer {
-    Context context;
-
-    @Override
-    protected void setup(Context context) throws IOException, InterruptedException {
-      this.context = context;
-
-      // handle a bug in MRUnit - should be fixed in MRUnit 1.0.0
-      when(context.getTaskAttemptID()).thenAnswer(new Answer<TaskAttemptID>() {
-        @Override
-        public TaskAttemptID answer(final InvocationOnMock invocation) {
-          // FIXME MRUNIT seems to pass taskid to the reduce task as mapred.TaskID rather than mapreduce.TaskID
-          return new TaskAttemptID(new TaskID("000000000000", 0, true, 0), 0);
-        }
-      });
-
-      super.setup(context);
-    }
-
-  }
-
-  public static class NullInputFormat<K, V> extends InputFormat<K, V> {
-    @Override
-    public List<InputSplit> getSplits(JobContext context) throws IOException,
-        InterruptedException {
-      return Lists.newArrayList();
-    }
-
-    @Override
-    public RecordReader<K, V> createRecordReader(InputSplit split,
-        TaskAttemptContext context) throws IOException, InterruptedException {
-      return null;
-    }
-    
-  }
-
-  @Test
-  public void testReducer() throws Exception {
-    MySolrReducer myReducer = new MySolrReducer();
-    try {
-      ReduceDriver<Text,SolrInputDocumentWritable,Text,SolrInputDocumentWritable> reduceDriver = ReduceDriver
-          .newReduceDriver(myReducer);
-      
-      Configuration config = reduceDriver.getConfiguration();
-      setupHadoopConfig(config);
-      
-      List<SolrInputDocumentWritable> values = new ArrayList<>();
-      SolrInputDocument sid = new SolrInputDocument();
-      String id = "myid1";
-      sid.addField("id", id);
-      sid.addField("text", "some unique text");
-      SolrInputDocumentWritable sidw = new SolrInputDocumentWritable(sid);
-      values.add(sidw);
-      reduceDriver.withInput(new Text(id), values);
-      
-      reduceDriver.withCacheArchive(solrHomeZip.getAbsolutePath());
-      
-      reduceDriver.withOutputFormat(SolrOutputFormat.class,
-          NullInputFormat.class);
-      
-      reduceDriver.run();
-      
-      assertEquals("Expected 1 counter increment", 1,
-          reduceDriver.getCounters().findCounter(SolrCounters.class.getName(),
-                  SolrCounters.DOCUMENTS_WRITTEN.toString()).getValue());
-    } finally {
-      myReducer.cleanup(myReducer.context);
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/UtilsForTests.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/UtilsForTests.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/UtilsForTests.java
deleted file mode 100644
index bc5148f..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/UtilsForTests.java
+++ /dev/null
@@ -1,57 +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.hadoop;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
-import org.apache.solr.client.solrj.response.QueryResponse;
-
-import java.io.File;
-import java.io.IOException;
-
-import static org.junit.Assert.assertEquals;
-
-
-public class UtilsForTests {
-  
-  public static void validateSolrServerDocumentCount(File solrHomeDir, FileSystem fs, Path outDir, int expectedDocs, int expectedShards)
-      throws IOException, SolrServerException {
-    
-    long actualDocs = 0;
-    int actualShards = 0;
-    for (FileStatus dir : fs.listStatus(outDir)) { // for each shard
-      if (dir.getPath().getName().startsWith("part") && dir.isDirectory()) {
-        actualShards++;
-        try (EmbeddedSolrServer solr
-                 = SolrRecordWriter.createEmbeddedSolrServer(new Path(solrHomeDir.getAbsolutePath()), fs, dir.getPath())) {
-          SolrQuery query = new SolrQuery();
-          query.setQuery("*:*");
-          QueryResponse resp = solr.query(query);
-          long numDocs = resp.getResults().getNumFound();
-          actualDocs += numDocs;
-        }
-      }
-    }
-    assertEquals(expectedShards, actualShards);
-    assertEquals(expectedDocs, actualDocs);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRClientCluster.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRClientCluster.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRClientCluster.java
deleted file mode 100644
index be5ea01..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRClientCluster.java
+++ /dev/null
@@ -1,41 +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.hadoop.hack;
-
-import java.io.IOException;
-
-import org.apache.hadoop.conf.Configuration;
-
-/*
- * A simple interface for a client MR cluster used for testing. This interface
- * provides basic methods which are independent of the underlying Mini Cluster (
- * either through MR1 or MR2).
- */
-public interface MiniMRClientCluster {
-
-  public void start() throws IOException;
-
-  /**
-   * Stop and start back the cluster using the same configuration.
-   */
-  public void restart() throws IOException;
-
-  public void stop() throws IOException;
-
-  public Configuration getConfig() throws IOException;
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRClientClusterFactory.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRClientClusterFactory.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRClientClusterFactory.java
deleted file mode 100644
index 2bf721b..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRClientClusterFactory.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.hadoop.hack;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.permission.FsPermission;
-import org.apache.hadoop.mapreduce.Job;
-import org.apache.hadoop.util.JarFinder;
-
-/**
- * A MiniMRCluster factory. In MR2, it provides a wrapper MiniMRClientCluster
- * interface around the MiniMRYarnCluster. While in MR1, it provides such
- * wrapper around MiniMRCluster. This factory should be used in tests to provide
- * an easy migration of tests across MR1 and MR2.
- */
-public class MiniMRClientClusterFactory {
-
-  public static MiniMRClientCluster create(Class<?> caller, int noOfNMs,
-      Configuration conf, File testWorkDir) throws IOException {
-    return create(caller, caller.getSimpleName(), noOfNMs, conf, testWorkDir);
-  }
-
-  public static MiniMRClientCluster create(Class<?> caller, String identifier,
-      int noOfNMs, Configuration conf, File testWorkDir) throws IOException {
-
-    if (conf == null) {
-      conf = new Configuration();
-    }
-
-    FileSystem fs = FileSystem.get(conf);
-
-    Path testRootDir = new Path(testWorkDir.getPath(), identifier + "-tmpDir")
-        .makeQualified(fs);
-    Path appJar = new Path(testRootDir, "MRAppJar.jar");
-
-    // Copy MRAppJar and make it private.
-    Path appMasterJar = new Path(MiniMRYarnCluster.APPJAR);
-
-    fs.copyFromLocalFile(appMasterJar, appJar);
-    fs.setPermission(appJar, new FsPermission("744"));
-
-    Job job = Job.getInstance(conf);
-
-    job.addFileToClassPath(appJar);
-
-    Path callerJar = new Path(JarFinder.getJar(caller));
-    Path remoteCallerJar = new Path(testRootDir, callerJar.getName());
-    fs.copyFromLocalFile(callerJar, remoteCallerJar);
-    fs.setPermission(remoteCallerJar, new FsPermission("744"));
-    job.addFileToClassPath(remoteCallerJar);
-
-    MiniMRYarnCluster miniMRYarnCluster;
-    try {
-      miniMRYarnCluster = new MiniMRYarnCluster(identifier,
-          noOfNMs, testWorkDir);
-    } catch (Exception e) {
-      throw new RuntimeException(e);
-    }
-    job.getConfiguration().set("minimrclientcluster.caller.name",
-        identifier);
-    job.getConfiguration().setInt("minimrclientcluster.nodemanagers.number",
-        noOfNMs);
-    miniMRYarnCluster.init(job.getConfiguration());
-    miniMRYarnCluster.start();
-
-    return new MiniMRYarnClusterAdapter(miniMRYarnCluster, testWorkDir);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRCluster.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRCluster.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRCluster.java
deleted file mode 100644
index cf872abd..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRCluster.java
+++ /dev/null
@@ -1,266 +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.hadoop.hack;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapred.JobID;
-import org.apache.hadoop.mapred.JobPriority;
-import org.apache.hadoop.mapred.MapTaskCompletionEventsUpdate;
-import org.apache.hadoop.mapred.TaskCompletionEvent;
-import org.apache.hadoop.security.AccessControlException;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.lucene.util.LuceneTestCase;
-
-
-/**
- * This class is an MR2 replacement for older MR1 MiniMRCluster, that was used
- * by tests prior to MR2. This replacement class uses the new MiniMRYarnCluster
- * in MR2 but provides the same old MR1 interface, so tests can be migrated from
- * MR1 to MR2 with minimal changes.
- *
- * Due to major differences between MR1 and MR2, a number of methods are either
- * unimplemented/unsupported or were re-implemented to provide wrappers around
- * MR2 functionality.
- *
- * @deprecated Use {@link org.apache.hadoop.mapred.MiniMRClientClusterFactory}
- * instead
- */
-@Deprecated
-public class MiniMRCluster {
-  private static final Log LOG = LogFactory.getLog(MiniMRCluster.class);
-
-  private MiniMRClientCluster mrClientCluster;
-
-  public String getTaskTrackerLocalDir(int taskTracker) {
-    throw new UnsupportedOperationException();
-  }
-
-  public String[] getTaskTrackerLocalDirs(int taskTracker) {
-    throw new UnsupportedOperationException();
-  }
-
-  class JobTrackerRunner {
-    // Mock class
-  }
-
-  class TaskTrackerRunner {
-    // Mock class
-  }
-
-  public JobTrackerRunner getJobTrackerRunner() {
-    throw new UnsupportedOperationException();
-  }
-
-  TaskTrackerRunner getTaskTrackerRunner(int id) {
-    throw new UnsupportedOperationException();
-  }
-
-  public int getNumTaskTrackers() {
-    throw new UnsupportedOperationException();
-  }
-
-  public void setInlineCleanupThreads() {
-    throw new UnsupportedOperationException();
-  }
-
-  public void waitUntilIdle() {
-    throw new UnsupportedOperationException();
-  }
-
-  private void waitTaskTrackers() {
-    throw new UnsupportedOperationException();
-  }
-
-  public int getJobTrackerPort() {
-    throw new UnsupportedOperationException();
-  }
-
-  public JobConf createJobConf() {
-    JobConf jobConf = null;
-    try {
-      jobConf = new JobConf(mrClientCluster.getConfig());
-    } catch (IOException e) {
-      LOG.error(e);
-    }
-    return jobConf;
-  }
-
-  public JobConf createJobConf(JobConf conf) {
-    JobConf jobConf = null;
-    try {
-      jobConf = new JobConf(mrClientCluster.getConfig());
-    } catch (IOException e) {
-      LOG.error(e);
-    }
-    return jobConf;
-  }
-
-  static JobConf configureJobConf(JobConf conf, String namenode,
-      int jobTrackerPort, int jobTrackerInfoPort, UserGroupInformation ugi) {
-    throw new UnsupportedOperationException();
-  }
-
-  public MiniMRCluster(int numTaskTrackers, String namenode, int numDir,
-      String[] racks, String[] hosts) throws Exception {
-    this(0, 0, numTaskTrackers, namenode, numDir, racks, hosts);
-  }
-
-  public MiniMRCluster(int numTaskTrackers, String namenode, int numDir,
-      String[] racks, String[] hosts, JobConf conf) throws Exception {
-    this(0, 0, numTaskTrackers, namenode, numDir, racks, hosts, null, conf);
-  }
-
-  public MiniMRCluster(int numTaskTrackers, String namenode, int numDir)
-      throws Exception {
-    this(0, 0, numTaskTrackers, namenode, numDir);
-  }
-
-  public MiniMRCluster(int jobTrackerPort, int taskTrackerPort,
-      int numTaskTrackers, String namenode, int numDir) throws Exception {
-    this(jobTrackerPort, taskTrackerPort, numTaskTrackers, namenode, numDir,
-        null);
-  }
-
-  public MiniMRCluster(int jobTrackerPort, int taskTrackerPort,
-      int numTaskTrackers, String namenode, int numDir, String[] racks)
-      throws Exception {
-    this(jobTrackerPort, taskTrackerPort, numTaskTrackers, namenode, numDir,
-        racks, null);
-  }
-
-  public MiniMRCluster(int jobTrackerPort, int taskTrackerPort,
-      int numTaskTrackers, String namenode, int numDir, String[] racks,
-      String[] hosts) throws Exception {
-    this(jobTrackerPort, taskTrackerPort, numTaskTrackers, namenode, numDir,
-        racks, hosts, null);
-  }
-
-  public MiniMRCluster(int jobTrackerPort, int taskTrackerPort,
-      int numTaskTrackers, String namenode, int numDir, String[] racks,
-      String[] hosts, UserGroupInformation ugi) throws Exception {
-    this(jobTrackerPort, taskTrackerPort, numTaskTrackers, namenode, numDir,
-        racks, hosts, ugi, null);
-  }
-
-  public MiniMRCluster(int jobTrackerPort, int taskTrackerPort,
-      int numTaskTrackers, String namenode, int numDir, String[] racks,
-      String[] hosts, UserGroupInformation ugi, JobConf conf)
-      throws Exception {
-    this(jobTrackerPort, taskTrackerPort, numTaskTrackers, namenode, numDir,
-        racks, hosts, ugi, conf, 0);
-  }
-
-  public MiniMRCluster(int jobTrackerPort, int taskTrackerPort,
-      int numTaskTrackers, String namenode, int numDir, String[] racks,
-      String[] hosts, UserGroupInformation ugi, JobConf conf,
-      int numTrackerToExclude) throws Exception {
-    if (conf == null) conf = new JobConf();
-    FileSystem.setDefaultUri(conf, namenode);
-    String identifier = this.getClass().getSimpleName() + "_"
-        + Integer.toString(LuceneTestCase.random().nextInt(Integer.MAX_VALUE));
-    mrClientCluster = MiniMRClientClusterFactory.create(this.getClass(),
-        identifier, numTaskTrackers, conf, new File(conf.get("testWorkDir")));
-  }
-
-  public UserGroupInformation getUgi() {
-    throw new UnsupportedOperationException();
-  }
-
-  public TaskCompletionEvent[] getTaskCompletionEvents(JobID id, int from,
-      int max) throws IOException {
-    throw new UnsupportedOperationException();
-  }
-
-  public void setJobPriority(JobID jobId, JobPriority priority)
-      throws AccessControlException, IOException {
-    throw new UnsupportedOperationException();
-  }
-
-  public JobPriority getJobPriority(JobID jobId) {
-    throw new UnsupportedOperationException();
-  }
-
-  public long getJobFinishTime(JobID jobId) {
-    throw new UnsupportedOperationException();
-  }
-
-  public void initializeJob(JobID jobId) throws IOException {
-    throw new UnsupportedOperationException();
-  }
-
-  public MapTaskCompletionEventsUpdate getMapTaskCompletionEventsUpdates(
-      int index, JobID jobId, int max) throws IOException {
-    throw new UnsupportedOperationException();
-  }
-
-  public JobConf getJobTrackerConf() {
-    JobConf jobConf = null;
-    try {
-      jobConf = new JobConf(mrClientCluster.getConfig());
-    } catch (IOException e) {
-      LOG.error(e);
-    }
-    return jobConf;
-  }
-
-  public int getFaultCount(String hostName) {
-    throw new UnsupportedOperationException();
-  }
-
-  public void startJobTracker() {
-    // Do nothing
-  }
-
-  public void startJobTracker(boolean wait) {
-    // Do nothing
-  }
-
-  public void stopJobTracker() {
-    // Do nothing
-  }
-
-  public void stopTaskTracker(int id) {
-    // Do nothing
-  }
-
-  public void startTaskTracker(String host, String rack, int idx, int numDir)
-      throws IOException {
-    // Do nothing
-  }
-
-  void addTaskTracker(TaskTrackerRunner taskTracker) {
-    throw new UnsupportedOperationException();
-  }
-
-  int getTaskTrackerID(String trackerName) {
-    throw new UnsupportedOperationException();
-  }
-
-  public void shutdown() {
-    try {
-      mrClientCluster.stop();
-    } catch (IOException e) {
-      LOG.error(e);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRYarnCluster.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRYarnCluster.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRYarnCluster.java
deleted file mode 100644
index 8fa1b31..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRYarnCluster.java
+++ /dev/null
@@ -1,205 +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.hadoop.hack;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Locale;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.CommonConfigurationKeys;
-import org.apache.hadoop.fs.FileContext;
-import org.apache.hadoop.fs.LocalFileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.mapred.LocalContainerLauncher;
-import org.apache.hadoop.mapred.ShuffleHandler;
-import org.apache.hadoop.mapreduce.MRConfig;
-import org.apache.hadoop.mapreduce.MRJobConfig;
-import org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer;
-import org.apache.hadoop.mapreduce.v2.jobhistory.JHAdminConfig;
-import org.apache.hadoop.mapreduce.v2.jobhistory.JobHistoryUtils;
-import org.apache.hadoop.service.AbstractService;
-import org.apache.hadoop.service.Service;
-import org.apache.hadoop.util.JarFinder;
-import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
-import org.apache.hadoop.yarn.server.nodemanager.ContainerExecutor;
-import org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor;
-
-/**
- * Configures and starts the MR-specific components in the YARN cluster.
- *
- */
-public class MiniMRYarnCluster extends MiniYARNCluster {
-
-  public static final String APPJAR = JarFinder.getJar(LocalContainerLauncher.class);
-
-  private static final Log LOG = LogFactory.getLog(MiniMRYarnCluster.class);
-  private JobHistoryServer historyServer;
-  private JobHistoryServerWrapper historyServerWrapper;
-
-  public MiniMRYarnCluster(String testName, File testWorkDir) {
-    this(testName, 1, testWorkDir);
-  }
-
-  public MiniMRYarnCluster(String testName, int noOfNMs, File testWorkDir) {
-    super(testName, noOfNMs, 4, 4, testWorkDir);
-    //TODO: add the history server
-    historyServerWrapper = new JobHistoryServerWrapper();
-    addService(historyServerWrapper);
-  }
-
-  @Override
-  public void serviceInit(Configuration conf) throws Exception {
-    conf.set(MRConfig.FRAMEWORK_NAME, MRConfig.YARN_FRAMEWORK_NAME);
-    if (conf.get(MRJobConfig.MR_AM_STAGING_DIR) == null) {
-      conf.set(MRJobConfig.MR_AM_STAGING_DIR, new File(getTestWorkDir(),
-          "apps_staging_dir/").getAbsolutePath());
-    }
-
-    // By default, VMEM monitoring disabled, PMEM monitoring enabled.
-    if (!conf.getBoolean(
-        MRConfig.MAPREDUCE_MINICLUSTER_CONTROL_RESOURCE_MONITORING,
-        MRConfig.DEFAULT_MAPREDUCE_MINICLUSTER_CONTROL_RESOURCE_MONITORING)) {
-      conf.setBoolean(YarnConfiguration.NM_PMEM_CHECK_ENABLED, false);
-      conf.setBoolean(YarnConfiguration.NM_VMEM_CHECK_ENABLED, false);
-    }
-
-    conf.set(CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY,  "000");
-
-    try {
-      Path stagingPath = FileContext.getFileContext(conf).makeQualified(
-          new Path(conf.get(MRJobConfig.MR_AM_STAGING_DIR)));
-      /*
-       * Re-configure the staging path on Windows if the file system is localFs.
-       * We need to use a absolute path that contains the drive letter. The unit
-       * test could run on a different drive than the AM. We can run into the
-       * issue that job files are localized to the drive where the test runs on,
-       * while the AM starts on a different drive and fails to find the job
-       * metafiles. Using absolute path can avoid this ambiguity.
-       */
-      if (Path.WINDOWS) {
-        if (LocalFileSystem.class.isInstance(stagingPath.getFileSystem(conf))) {
-          conf.set(MRJobConfig.MR_AM_STAGING_DIR,
-              new File(conf.get(MRJobConfig.MR_AM_STAGING_DIR))
-                  .getAbsolutePath());
-        }
-      }
-      FileContext fc=FileContext.getFileContext(stagingPath.toUri(), conf);
-      if (fc.util().exists(stagingPath)) {
-        LOG.info(stagingPath + " exists! deleting...");
-        fc.delete(stagingPath, true);
-      }
-      LOG.info("mkdir: " + stagingPath);
-      //mkdir the staging directory so that right permissions are set while running as proxy user
-      fc.mkdir(stagingPath, null, true);
-      //mkdir done directory as well 
-      String doneDir = JobHistoryUtils.getConfiguredHistoryServerDoneDirPrefix(conf);
-      Path doneDirPath = fc.makeQualified(new Path(doneDir));
-      fc.mkdir(doneDirPath, null, true);
-    } catch (IOException e) {
-      throw new YarnRuntimeException("Could not create staging directory. ", e);
-    }
-    conf.set(MRConfig.MASTER_ADDRESS, "test"); // The default is local because of
-                                             // which shuffle doesn't happen
-    //configure the shuffle service in NM
-    conf.setStrings(YarnConfiguration.NM_AUX_SERVICES,
-        new String[] { ShuffleHandler.MAPREDUCE_SHUFFLE_SERVICEID });
-    conf.setClass(String.format(Locale.ENGLISH, YarnConfiguration.NM_AUX_SERVICE_FMT,
-        ShuffleHandler.MAPREDUCE_SHUFFLE_SERVICEID), ShuffleHandler.class,
-        Service.class);
-
-    // Non-standard shuffle port
-    conf.setInt(ShuffleHandler.SHUFFLE_PORT_CONFIG_KEY, 0);
-
-    conf.setClass(YarnConfiguration.NM_CONTAINER_EXECUTOR,
-        DefaultContainerExecutor.class, ContainerExecutor.class);
-
-    // TestMRJobs is for testing non-uberized operation only; see TestUberAM
-    // for corresponding uberized tests.
-    conf.setBoolean(MRJobConfig.JOB_UBERTASK_ENABLE, false);
-
-    super.serviceInit(conf);
-  }
-
-  private class JobHistoryServerWrapper extends AbstractService {
-    public JobHistoryServerWrapper() {
-      super(JobHistoryServerWrapper.class.getName());
-    }
-
-    @Override
-    public synchronized void serviceStart() throws Exception {
-      try {
-        if (!getConfig().getBoolean(
-            JHAdminConfig.MR_HISTORY_MINICLUSTER_FIXED_PORTS,
-            JHAdminConfig.DEFAULT_MR_HISTORY_MINICLUSTER_FIXED_PORTS)) {
-          // pick free random ports.
-          getConfig().set(JHAdminConfig.MR_HISTORY_ADDRESS,
-              MiniYARNCluster.getHostname() + ":0");
-          getConfig().set(JHAdminConfig.MR_HISTORY_WEBAPP_ADDRESS,
-              MiniYARNCluster.getHostname() + ":0");
-        }
-        historyServer = new JobHistoryServer();
-        historyServer.init(getConfig());
-        new Thread() {
-          public void run() {
-            historyServer.start();
-          };
-        }.start();
-        while (historyServer.getServiceState() == STATE.INITED) {
-          LOG.info("Waiting for HistoryServer to start...");
-          Thread.sleep(1500);
-        }
-        //TODO Add a timeout. State.STOPPED check ?
-        if (historyServer.getServiceState() != STATE.STARTED) {
-          throw new IOException("HistoryServer failed to start");
-        }
-        super.serviceStart();
-      } catch (Throwable t) {
-        throw new YarnRuntimeException(t);
-      }
-      //need to do this because historyServer.init creates a new Configuration
-      getConfig().set(JHAdminConfig.MR_HISTORY_ADDRESS,
-                      historyServer.getConfig().get(JHAdminConfig.MR_HISTORY_ADDRESS));
-      getConfig().set(JHAdminConfig.MR_HISTORY_WEBAPP_ADDRESS,
-                      historyServer.getConfig().get(JHAdminConfig.MR_HISTORY_WEBAPP_ADDRESS));
-
-      LOG.info("MiniMRYARN ResourceManager address: " +
-               getConfig().get(YarnConfiguration.RM_ADDRESS));
-      LOG.info("MiniMRYARN ResourceManager web address: " +
-               getConfig().get(YarnConfiguration.RM_WEBAPP_ADDRESS));
-      LOG.info("MiniMRYARN HistoryServer address: " +
-               getConfig().get(JHAdminConfig.MR_HISTORY_ADDRESS));
-      LOG.info("MiniMRYARN HistoryServer web address: " +
-               getConfig().get(JHAdminConfig.MR_HISTORY_WEBAPP_ADDRESS));
-    }
-
-    @Override
-    public synchronized void serviceStop() throws Exception {
-      if (historyServer != null) {
-        historyServer.stop();
-      }
-      super.serviceStop();
-    }
-  }
-
-  public JobHistoryServer getHistoryServer() {
-    return this.historyServer;
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRYarnClusterAdapter.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRYarnClusterAdapter.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRYarnClusterAdapter.java
deleted file mode 100644
index 08ab881..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniMRYarnClusterAdapter.java
+++ /dev/null
@@ -1,78 +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.hadoop.hack;
-
-import java.io.File;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.mapreduce.v2.jobhistory.JHAdminConfig;
-import org.apache.hadoop.service.Service.STATE;
-import org.apache.hadoop.yarn.conf.YarnConfiguration;
-
-/**
- * An adapter for MiniMRYarnCluster providing a MiniMRClientCluster interface.
- * This interface could be used by tests across both MR1 and MR2.
- */
-public class MiniMRYarnClusterAdapter implements MiniMRClientCluster {
-
-  private MiniMRYarnCluster miniMRYarnCluster;
-
-  private File testWorkDir;
-
-  private static final Log LOG = LogFactory.getLog(MiniMRYarnClusterAdapter.class);
-
-  public MiniMRYarnClusterAdapter(MiniMRYarnCluster miniMRYarnCluster, File testWorkDir) {
-    this.miniMRYarnCluster = miniMRYarnCluster;
-    this.testWorkDir = testWorkDir;
-  }
-
-  @Override
-  public Configuration getConfig() {
-    return miniMRYarnCluster.getConfig();
-  }
-
-  @Override
-  public void start() {
-    miniMRYarnCluster.start();
-  }
-
-  @Override
-  public void stop() {
-    miniMRYarnCluster.stop();
-  }
-
-  @Override
-  public void restart() {
-    if (!miniMRYarnCluster.getServiceState().equals(STATE.STARTED)){
-      LOG.warn("Cannot restart the mini cluster, start it first");
-      return;
-    }
-    Configuration oldConf = new Configuration(getConfig());
-    String callerName = oldConf.get("minimrclientcluster.caller.name",
-        this.getClass().getName());
-    int noOfNMs = oldConf.getInt("minimrclientcluster.nodemanagers.number", 1);
-    oldConf.setBoolean(YarnConfiguration.YARN_MINICLUSTER_FIXED_PORTS, true);
-    oldConf.setBoolean(JHAdminConfig.MR_HISTORY_MINICLUSTER_FIXED_PORTS, true);
-    stop();
-    miniMRYarnCluster = new MiniMRYarnCluster(callerName, noOfNMs, testWorkDir);
-    miniMRYarnCluster.init(oldConf);
-    miniMRYarnCluster.start();
-  }
-
-}


[27/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/SortingUpdateConflictResolver.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/SortingUpdateConflictResolver.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/SortingUpdateConflictResolver.java
deleted file mode 100644
index 24ea936..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/SortingUpdateConflictResolver.java
+++ /dev/null
@@ -1,79 +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.hadoop.dedup;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.hadoop.conf.Configurable;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Reducer.Context;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.hadoop.HdfsFileFieldNames;
-
-/**
- * UpdateConflictResolver implementation that orders colliding updates ascending
- * from least recent to most recent (partial) update, based on a configurable
- * numeric Solr field, which defaults to the file_last_modified timestamp.
- */
-public class SortingUpdateConflictResolver implements UpdateConflictResolver, Configurable {
-
-  private Configuration conf;
-  private String orderByFieldName = ORDER_BY_FIELD_NAME_DEFAULT;
-  
-  public static final String ORDER_BY_FIELD_NAME_KEY = 
-      SortingUpdateConflictResolver.class.getName() + ".orderByFieldName";
-  
-  public static final String ORDER_BY_FIELD_NAME_DEFAULT = HdfsFileFieldNames.FILE_LAST_MODIFIED;
-
-  @Override
-  public void setConf(Configuration conf) {
-    this.conf = conf;
-    this.orderByFieldName = conf.get(ORDER_BY_FIELD_NAME_KEY, orderByFieldName);
-  }
-
-  @Override
-  public Configuration getConf() {
-    return conf;
-  }
-  
-  protected String getOrderByFieldName() {
-    return orderByFieldName;
-  }
-  
-  @Override
-  public Iterator<SolrInputDocument> orderUpdates(Text key, Iterator<SolrInputDocument> updates, Context ctx) {    
-    return sort(updates, getOrderByFieldName(), new SolrInputDocumentComparator.TimeStampComparator());
-  }
-
-  protected Iterator<SolrInputDocument> sort(Iterator<SolrInputDocument> updates, String fieldName, Comparator child) {
-    // TODO: use an external merge sort in the pathological case where there are a huge amount of collisions
-    List<SolrInputDocument> sortedUpdates = new ArrayList(1); 
-    while (updates.hasNext()) {
-      sortedUpdates.add(updates.next());
-    }
-    if (sortedUpdates.size() > 1) { // conflicts are rare
-      Collections.sort(sortedUpdates, new SolrInputDocumentComparator(fieldName, child));
-    }
-    return sortedUpdates.iterator();
-  }
-    
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/UpdateConflictResolver.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/UpdateConflictResolver.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/UpdateConflictResolver.java
deleted file mode 100644
index 94e23e1..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/UpdateConflictResolver.java
+++ /dev/null
@@ -1,71 +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.hadoop.dedup;
-
-import java.util.Iterator;
-
-import org.apache.hadoop.conf.Configurable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Reducer;
-import org.apache.hadoop.mapreduce.Reducer.Context;
-import org.apache.solr.common.SolrInputDocument;
-
-/**
- * Interface that enables deduplication and ordering of a series of document
- * updates for the same unique document key.
- * 
- * For example, a MapReduce batch job might index multiple files in the same job
- * where some of the files contain old and new versions of the very same
- * document, using the same unique document key.
- * 
- * Typically, implementations of this interface forbid collisions by throwing an
- * exception, or ignore all but the most recent document version, or, in the
- * general case, order colliding updates ascending from least recent to most
- * recent (partial) update.
- * 
- * The caller of this interface (i.e. the Hadoop Reducer) will then apply the
- * updates to Solr in the order returned by the orderUpdates() method.
- * 
- * Configuration: If an UpdateConflictResolver implementation also implements
- * {@link Configurable} then the Hadoop Reducer will call
- * {@link Configurable#setConf(org.apache.hadoop.conf.Configuration)} on
- * instance construction and pass the standard Hadoop configuration information.
- */
-public interface UpdateConflictResolver {
-  
-  /**
-   * Given a list of all colliding document updates for the same unique document
-   * key, this method returns zero or more documents in an application specific
-   * order.
-   * 
-   * The caller will then apply the updates for this key to Solr in the order
-   * returned by the orderUpdate() method.
-   * 
-   * @param uniqueKey
-   *          the document key common to all collidingUpdates mentioned below
-   * @param collidingUpdates
-   *          all updates in the MapReduce job that have a key equal to
-   *          {@code uniqueKey} mentioned above. The input order is unspecified.
-   * @param context
-   *          The <code>Context</code> passed from the {@link Reducer}
-   *          implementations.
-   * @return the order in which the updates shall be applied to Solr
-   */
-  Iterator<SolrInputDocument> orderUpdates(
-      Text uniqueKey, Iterator<SolrInputDocument> collidingUpdates, Context context);
-  
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/package-info.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/package-info.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/package-info.java
deleted file mode 100644
index a021282..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/package-info.java
+++ /dev/null
@@ -1,25 +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.
- */
- 
-/** 
- * Dedupe related code.
- */
-package org.apache.solr.hadoop.dedup;
-
-
-
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineCounters.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineCounters.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineCounters.java
deleted file mode 100644
index 5ba98ff..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineCounters.java
+++ /dev/null
@@ -1,47 +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.hadoop.morphline;
-
-import org.apache.solr.hadoop.Utils;
-
-public enum MorphlineCounters {
-
-  FILES_READ (getClassName(MorphlineMapper.class) + ": Number of files read"),
-
-  FILE_BYTES_READ (getClassName(MorphlineMapper.class) + ": Number of file bytes read"),
-
-  DOCS_READ (getClassName(MorphlineMapper.class) + ": Number of documents read"),
-
-  PARSER_OUTPUT_BYTES (getClassName(MorphlineMapper.class) + ": Number of document bytes generated by Tika parser"),
-
-  ERRORS (getClassName(MorphlineMapper.class) + ": Number of errors");
-
-  private final String label;
-  
-  private MorphlineCounters(String label) {
-    this.label = label;
-  }
-  
-  public String toString() {
-    return label;
-  }
-  
-  private static String getClassName(Class clazz) {
-    return Utils.getShortClassName(clazz);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineMapRunner.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineMapRunner.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineMapRunner.java
deleted file mode 100644
index 372c48b..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineMapRunner.java
+++ /dev/null
@@ -1,268 +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.hadoop.morphline;
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.invoke.MethodHandles;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.stream.Collectors;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.mapreduce.Mapper.Context;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.hadoop.HdfsFileFieldNames;
-import org.apache.solr.hadoop.PathParts;
-import org.apache.solr.hadoop.Utils;
-import org.apache.solr.morphlines.solr.DocumentLoader;
-import org.apache.solr.morphlines.solr.SolrLocator;
-import org.apache.solr.morphlines.solr.SolrMorphlineContext;
-import org.apache.solr.schema.IndexSchema;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.kitesdk.morphline.api.Command;
-import org.kitesdk.morphline.api.MorphlineCompilationException;
-import org.kitesdk.morphline.api.MorphlineContext;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.Compiler;
-import org.kitesdk.morphline.base.FaultTolerance;
-import org.kitesdk.morphline.base.Fields;
-import org.kitesdk.morphline.base.Metrics;
-import org.kitesdk.morphline.base.Notifications;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
-import com.google.common.annotations.Beta;
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
-
-/**
- * Internal helper for {@link MorphlineMapper} and dryRun mode; This API is for *INTERNAL* use only
- * and should not be considered public.
- */
-@Beta
-public final class MorphlineMapRunner {
-
-  private MorphlineContext morphlineContext;
-  private Command morphline;
-  private IndexSchema schema;
-  private Map<String, String> commandLineMorphlineHeaders;
-  private boolean disableFileOpen;
-  private String morphlineFileAndId;
-  private final Timer elapsedTime;   
-  
-  public static final String MORPHLINE_FILE_PARAM = "morphlineFile";
-  public static final String MORPHLINE_ID_PARAM = "morphlineId";
-  
-  /**
-   * Morphline variables can be passed from the CLI to the Morphline, e.g.:
-   * hadoop ... -D morphlineVariable.zkHost=127.0.0.1:2181/solr
-   */
-  public static final String MORPHLINE_VARIABLE_PARAM = "morphlineVariable";
-  
-  /**
-   * Headers, including MIME types, can also explicitly be passed by force from the CLI to Morphline, e.g:
-   * hadoop ... -D morphlineField._attachment_mimetype=text/csv
-   */
-  public static final String MORPHLINE_FIELD_PREFIX = "morphlineField.";
-  
-  /**
-   * Flag to disable reading of file contents if indexing just file metadata is sufficient. 
-   * This improves performance and confidentiality.
-   */
-  public static final String DISABLE_FILE_OPEN = "morphlineDisableFileOpen";
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
-  MorphlineContext getMorphlineContext() {
-    return morphlineContext;
-  }
-  
-  IndexSchema getSchema() {
-    return schema;
-  }
-
-  public MorphlineMapRunner(Configuration configuration, DocumentLoader loader, String solrHomeDir) throws IOException {
-    if (LOG.isTraceEnabled()) {
-      LOG.trace("CWD is {}", new File(".").getCanonicalPath());
-      TreeMap map = new TreeMap();
-      for (Map.Entry<String,String> entry : configuration) {
-        map.put(entry.getKey(), entry.getValue());
-      }
-      LOG.trace("Configuration:\n" +
-          map.entrySet().stream().map(Object::toString).collect(Collectors.joining("\n")));
-    }
-    
-    FaultTolerance faultTolerance = new FaultTolerance(
-        configuration.getBoolean(FaultTolerance.IS_PRODUCTION_MODE, false), 
-        configuration.getBoolean(FaultTolerance.IS_IGNORING_RECOVERABLE_EXCEPTIONS, false),
-        configuration.get(FaultTolerance.RECOVERABLE_EXCEPTION_CLASSES, SolrServerException.class.getName())        
-        );
-    
-    morphlineContext = new SolrMorphlineContext.Builder()
-      .setDocumentLoader(loader)
-      .setExceptionHandler(faultTolerance)
-      .setMetricRegistry(new MetricRegistry())
-      .build();
-
-    class MySolrLocator extends SolrLocator { // trick to access protected ctor
-      public MySolrLocator(MorphlineContext ctx) {
-        super(ctx);
-      }
-    }
-
-    SolrLocator locator = new MySolrLocator(morphlineContext);
-    locator.setSolrHomeDir(solrHomeDir);
-    schema = locator.getIndexSchema();
-
-    // rebuild context, now with schema
-    morphlineContext = new SolrMorphlineContext.Builder()
-      .setIndexSchema(schema)
-      .setDocumentLoader(loader)
-      .setExceptionHandler(faultTolerance)
-      .setMetricRegistry(morphlineContext.getMetricRegistry())
-      .build();
-
-    String morphlineFile = configuration.get(MORPHLINE_FILE_PARAM);
-    String morphlineId = configuration.get(MORPHLINE_ID_PARAM);
-    if (morphlineFile == null || morphlineFile.trim().length() == 0) {
-      throw new MorphlineCompilationException("Missing parameter: " + MORPHLINE_FILE_PARAM, null);
-    }
-    Map morphlineVariables = new HashMap();
-    for (Map.Entry<String, String> entry : configuration) {
-      String variablePrefix = MORPHLINE_VARIABLE_PARAM + ".";
-      if (entry.getKey().startsWith(variablePrefix)) {
-        morphlineVariables.put(entry.getKey().substring(variablePrefix.length()), entry.getValue());
-      }
-    }
-    Config override = ConfigFactory.parseMap(morphlineVariables);
-    morphline = new Compiler().compile(new File(morphlineFile), morphlineId, morphlineContext, null, override);
-    morphlineFileAndId = morphlineFile + "@" + morphlineId;
-    
-    disableFileOpen = configuration.getBoolean(DISABLE_FILE_OPEN, false);
-    LOG.debug("disableFileOpen: {}", disableFileOpen);
-        
-    commandLineMorphlineHeaders = new HashMap();
-    for (Map.Entry<String,String> entry : configuration) {     
-      if (entry.getKey().startsWith(MORPHLINE_FIELD_PREFIX)) {
-        commandLineMorphlineHeaders.put(entry.getKey().substring(MORPHLINE_FIELD_PREFIX.length()), entry.getValue());
-      }
-    }
-    LOG.debug("Headers, including MIME types, passed by force from the CLI to morphline: {}", commandLineMorphlineHeaders);
-
-    String metricName = MetricRegistry.name(Utils.getShortClassName(getClass()), Metrics.ELAPSED_TIME);
-    this.elapsedTime = morphlineContext.getMetricRegistry().timer(metricName);
-    Notifications.notifyBeginTransaction(morphline);
-  }
-
-  /**
-   * Extract content from the path specified in the value. Key is useless.
-   */
-  public void map(String value, Configuration configuration, Context context) throws IOException {
-    LOG.info("Processing file {}", value);
-    InputStream in = null;
-    Record record = null;
-    Timer.Context timerContext = elapsedTime.time();
-    try {
-      PathParts parts = new PathParts(value.toString(), configuration);
-      record = getRecord(parts);
-      if (record == null) {
-        return; // ignore
-      }
-      for (Map.Entry<String, String> entry : commandLineMorphlineHeaders.entrySet()) {
-        record.replaceValues(entry.getKey(), entry.getValue());
-      }
-      long fileLength = parts.getFileStatus().getLen();
-      if (disableFileOpen) {
-        in = new ByteArrayInputStream(new byte[0]);
-      } else {
-        in = new BufferedInputStream(parts.getFileSystem().open(parts.getUploadPath()));
-      }
-      record.put(Fields.ATTACHMENT_BODY, in);
-      Notifications.notifyStartSession(morphline);
-      if (!morphline.process(record)) {
-        LOG.warn("Morphline {} failed to process record: {}", morphlineFileAndId, record);
-      }
-      if (context != null) {
-        context.getCounter(MorphlineCounters.class.getName(), MorphlineCounters.FILES_READ.toString()).increment(1);
-        context.getCounter(MorphlineCounters.class.getName(), MorphlineCounters.FILE_BYTES_READ.toString()).increment(fileLength);
-      }
-    } catch (Exception e) {
-      LOG.error("Unable to process file " + value, e);
-      if (context != null) {
-        context.getCounter(getClass().getName() + ".errors", e.getClass().getName()).increment(1);
-      }
-      morphlineContext.getExceptionHandler().handleException(e, record);
-    } finally {
-      timerContext.stop();
-      if (in != null) {
-        in.close();
-      }
-    }
-  }
-  
-  protected Record getRecord(PathParts parts) {
-    FileStatus stats;
-    try {
-      stats = parts.getFileStatus();
-    } catch (IOException e) {
-      stats = null;
-    }
-    if (stats == null) {
-      LOG.warn("Ignoring file that somehow has become unavailable since the job was submitted: {}",
-          parts.getUploadURL());
-      return null;
-    }
-    
-    Record headers = new Record();
-    //headers.put(getSchema().getUniqueKeyField().getName(), parts.getId()); // use HDFS file path as docId if no docId is specified
-    headers.put(Fields.BASE_ID, parts.getId()); // with sanitizeUniqueKey command, use HDFS file path as docId if no docId is specified
-    headers.put(Fields.ATTACHMENT_NAME, parts.getName()); // Tika can use the file name in guessing the right MIME type
-    
-    // enable indexing and storing of file meta data in Solr
-    headers.put(HdfsFileFieldNames.FILE_UPLOAD_URL, parts.getUploadURL());
-    headers.put(HdfsFileFieldNames.FILE_DOWNLOAD_URL, parts.getDownloadURL());
-    headers.put(HdfsFileFieldNames.FILE_SCHEME, parts.getScheme()); 
-    headers.put(HdfsFileFieldNames.FILE_HOST, parts.getHost()); 
-    headers.put(HdfsFileFieldNames.FILE_PORT, String.valueOf(parts.getPort())); 
-    headers.put(HdfsFileFieldNames.FILE_PATH, parts.getURIPath()); 
-    headers.put(HdfsFileFieldNames.FILE_NAME, parts.getName());     
-    headers.put(HdfsFileFieldNames.FILE_LAST_MODIFIED, String.valueOf(stats.getModificationTime())); // FIXME also add in SpoolDirectorySource
-    headers.put(HdfsFileFieldNames.FILE_LENGTH, String.valueOf(stats.getLen())); // FIXME also add in SpoolDirectorySource
-    headers.put(HdfsFileFieldNames.FILE_OWNER, stats.getOwner());
-    headers.put(HdfsFileFieldNames.FILE_GROUP, stats.getGroup());
-    headers.put(HdfsFileFieldNames.FILE_PERMISSIONS_USER, stats.getPermission().getUserAction().SYMBOL);
-    headers.put(HdfsFileFieldNames.FILE_PERMISSIONS_GROUP, stats.getPermission().getGroupAction().SYMBOL);
-    headers.put(HdfsFileFieldNames.FILE_PERMISSIONS_OTHER, stats.getPermission().getOtherAction().SYMBOL);
-    headers.put(HdfsFileFieldNames.FILE_PERMISSIONS_STICKYBIT, String.valueOf(stats.getPermission().getStickyBit()));
-    // TODO: consider to add stats.getAccessTime(), stats.getReplication(), stats.isSymlink(), stats.getBlockSize()
-    
-    return headers;
-  }
-
-  public void cleanup() {
-    Notifications.notifyCommitTransaction(morphline);
-    Notifications.notifyShutdown(morphline);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineMapper.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineMapper.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineMapper.java
deleted file mode 100644
index 8ba2ea6..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/MorphlineMapper.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.hadoop.morphline;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.Collection;
-import java.util.Map;
-
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.response.SolrPingResponse;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.SolrInputField;
-import org.apache.solr.hadoop.HeartBeater;
-import org.apache.solr.hadoop.SolrInputDocumentWritable;
-import org.apache.solr.hadoop.SolrMapper;
-import org.apache.solr.morphlines.solr.DocumentLoader;
-import org.apache.solr.schema.IndexSchema;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.codahale.metrics.Counter;
-import com.codahale.metrics.Counting;
-import com.codahale.metrics.Histogram;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.Timer;
-
-/**
- * This class takes the input files, extracts the relevant content, transforms
- * it and hands SolrInputDocuments to a set of reducers.
- * 
- * More specifically, it consumes a list of &lt;offset, hdfsFilePath&gt; input pairs.
- * For each such pair extracts a set of zero or more SolrInputDocuments and
- * sends them to a downstream Reducer. The key for the reducer is the unique id
- * of the SolrInputDocument specified in Solr schema.xml.
- */
-public class MorphlineMapper extends SolrMapper<LongWritable, Text> {
-
-  private Context context;
-  private MorphlineMapRunner runner;
-  private HeartBeater heartBeater;
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
-  protected IndexSchema getSchema() {
-    return runner.getSchema();
-  }
-
-  protected Context getContext() {
-    return context;
-  }
-
-  @Override
-  protected void setup(Context context) throws IOException, InterruptedException {
-    super.setup(context);
-    this.context = context;
-    heartBeater = new HeartBeater(context);
-    this.runner = new MorphlineMapRunner(
-        context.getConfiguration(), new MyDocumentLoader(), getSolrHomeDir().toString());
-  }
-
-  /**
-   * Extract content from the path specified in the value. Key is useless.
-   */
-  @Override
-  public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
-    heartBeater.needHeartBeat();
-    try {
-      runner.map(value.toString(), context.getConfiguration(), context);
-    } finally {
-      heartBeater.cancelHeartBeat();
-    }
-  }
-  
-  @Override
-  protected void cleanup(Context context) throws IOException, InterruptedException {
-    heartBeater.close();
-    runner.cleanup();
-    addMetricsToMRCounters(runner.getMorphlineContext().getMetricRegistry(), context);
-    super.cleanup(context);
-  }
-
-  private void addMetricsToMRCounters(MetricRegistry metricRegistry, Context context) {
-    for (Map.Entry<String, Counter> entry : metricRegistry.getCounters().entrySet()) {
-      addCounting(entry.getKey(),  entry.getValue(), 1);
-    }
-    for (Map.Entry<String, Histogram> entry : metricRegistry.getHistograms().entrySet()) {
-      addCounting(entry.getKey(),  entry.getValue(), 1);
-    }
-    for (Map.Entry<String, Meter> entry : metricRegistry.getMeters().entrySet()) {
-      addCounting(entry.getKey(), entry.getValue(), 1);
-    }
-    for (Map.Entry<String, Timer> entry : metricRegistry.getTimers().entrySet()) {
-      long nanosPerMilliSec = 1000 * 1000;
-      addCounting(entry.getKey(), entry.getValue(), nanosPerMilliSec);
-    }
-  }
-  
-  private void addCounting(String metricName, Counting value, long scale) {
-    context.getCounter("morphline", metricName).increment(value.getCount() / scale);
-  }
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private final class MyDocumentLoader implements DocumentLoader {
-
-    @Override
-    public void beginTransaction() {
-    }
-
-    @Override
-    public void load(SolrInputDocument doc) throws IOException, SolrServerException {
-      String uniqueKeyFieldName = getSchema().getUniqueKeyField().getName();
-      Object id = doc.getFieldValue(uniqueKeyFieldName);
-      if (id == null) {
-        throw new IllegalArgumentException("Missing value for (required) unique document key: " + uniqueKeyFieldName
-            + " (see Solr schema.xml)");
-      }
-      try {
-        context.write(new Text(id.toString()), new SolrInputDocumentWritable(doc));
-      } catch (InterruptedException e) {
-        throw new IOException("Interrupted while writing " + doc, e);
-      }
-
-      if (LOG.isDebugEnabled()) {
-        long numParserOutputBytes = 0;
-        for (SolrInputField field : doc.values()) {
-          numParserOutputBytes += sizeOf(field.getValue());
-        }
-        context.getCounter(MorphlineCounters.class.getName(), MorphlineCounters.PARSER_OUTPUT_BYTES.toString()).increment(numParserOutputBytes);
-      }
-      context.getCounter(MorphlineCounters.class.getName(), MorphlineCounters.DOCS_READ.toString()).increment(1);
-    }
-
-    // just an approximation
-    private long sizeOf(Object value) {
-      if (value instanceof CharSequence) {
-        return ((CharSequence) value).length();
-      } else if (value instanceof Integer) {
-        return 4;
-      } else if (value instanceof Long) {
-        return 8;
-      } else if (value instanceof Collection) {
-        long size = 0;
-        for (Object val : (Collection) value) {
-          size += sizeOf(val);
-        }
-        return size;      
-      } else {
-        return String.valueOf(value).length();
-      }
-    }
-
-    @Override
-    public void commitTransaction() {
-    }
-
-    @Override
-    public UpdateResponse rollbackTransaction() throws SolrServerException, IOException {
-      return new UpdateResponse();
-    }
-
-    @Override
-    public void shutdown() {
-    }
-
-    @Override
-    public SolrPingResponse ping() throws SolrServerException, IOException {
-      return new SolrPingResponse();
-    }
-
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/package-info.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/package-info.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/package-info.java
deleted file mode 100644
index c754f79..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/morphline/package-info.java
+++ /dev/null
@@ -1,25 +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.
- */
- 
-/** 
- * Morphlines related code.
- */
-package org.apache.solr.hadoop.morphline;
-
-
-
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/package-info.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/package-info.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/package-info.java
deleted file mode 100644
index 043a150..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/package-info.java
+++ /dev/null
@@ -1,25 +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.
- */
- 
-/** 
- * {@link org.apache.solr.hadoop.MapReduceIndexerTool} and related code.
- */
-package org.apache.solr.hadoop;
-
-
-
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/overview.html
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/overview.html b/solr/contrib/map-reduce/src/java/overview.html
deleted file mode 100644
index ad7c1c0..0000000
--- a/solr/contrib/map-reduce/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: Solr MapReduce contrib
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test-files/README.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test-files/README.txt b/solr/contrib/map-reduce/src/test-files/README.txt
deleted file mode 100644
index 8905df2..0000000
--- a/solr/contrib/map-reduce/src/test-files/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-The test-files by this module are located in the morphlines-core module.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/AlphaNumericComparatorTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/AlphaNumericComparatorTest.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/AlphaNumericComparatorTest.java
deleted file mode 100644
index cab29e7..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/AlphaNumericComparatorTest.java
+++ /dev/null
@@ -1,46 +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.hadoop;
-
-import java.util.Comparator;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class AlphaNumericComparatorTest extends Assert {
-
-  @Test
-  public void testBasic() {
-    Comparator c = new AlphaNumericComparator();
-    assertTrue(c.compare("a", "b") < 0);
-    assertTrue(c.compare("shard1", "shard1") == 0);
-    //assertTrue(c.compare("shard01", "shard1") == 0);
-    assertTrue(c.compare("shard10", "shard10") == 0);
-    assertTrue(c.compare("shard1", "shard2") < 0);
-    assertTrue(c.compare("shard9", "shard10") < 0);
-    assertTrue(c.compare("shard09", "shard10") < 0);
-    assertTrue(c.compare("shard019", "shard10") > 0);
-    assertTrue(c.compare("shard10", "shard11") < 0);
-    assertTrue(c.compare("shard10z", "shard10z") == 0);
-    assertTrue(c.compare("shard10z", "shard11z") < 0);
-    assertTrue(c.compare("shard10a", "shard10z") < 0);
-    assertTrue(c.compare("shard10z", "shard10a") > 0);
-    assertTrue(c.compare("shard1z", "shard1z") == 0);
-    assertTrue(c.compare("shard2", "shard1") > 0);
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/IdentityMapper.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/IdentityMapper.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/IdentityMapper.java
deleted file mode 100644
index 9ba70d5..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/IdentityMapper.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.hadoop;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Mapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class IdentityMapper extends Mapper<LongWritable, Text, Text, NullWritable> {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  @Override
-  protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
-    LOGGER.info("map key: {}, value: {}", key, value);
-    context.write(value, NullWritable.get());
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/IdentityReducer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/IdentityReducer.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/IdentityReducer.java
deleted file mode 100644
index 1c248c6..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/IdentityReducer.java
+++ /dev/null
@@ -1,37 +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.hadoop;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Reducer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class IdentityReducer extends Reducer<Text, NullWritable, Text, NullWritable> {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  @Override
-  protected void reduce(Text key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {
-    LOGGER.info("reduce key: {}, value: {}", key, values);
-    context.write(key, NullWritable.get());
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/LineRandomizerMapperReducerTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/LineRandomizerMapperReducerTest.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/LineRandomizerMapperReducerTest.java
deleted file mode 100644
index 2354fdd..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/LineRandomizerMapperReducerTest.java
+++ /dev/null
@@ -1,94 +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.hadoop;
-
-import java.io.IOException;
-import java.util.Arrays;
-
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mrunit.mapreduce.MapReduceDriver;
-import org.apache.hadoop.mrunit.types.Pair;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-public class LineRandomizerMapperReducerTest extends Assert {
-
-  private MapReduceDriver<LongWritable, Text, LongWritable, Text, Text, NullWritable> mapReduceDriver;
-
-  @Before
-  public void setUp() {
-    LineRandomizerMapper mapper = new LineRandomizerMapper();
-    LineRandomizerReducer reducer = new LineRandomizerReducer();
-    mapReduceDriver = MapReduceDriver.newMapReduceDriver(mapper, reducer);
-  }
-
-  @Test
-  public void testMapReduce1Item() throws IOException {
-    mapReduceDriver.withInput(new LongWritable(0), new Text("hello"));
-    mapReduceDriver.withOutput(new Text("hello"), NullWritable.get());
-    mapReduceDriver.runTest();
-  }
-  
-  @Test
-  public void testMapReduce2Items() throws IOException {
-    mapReduceDriver.withAll(Arrays.asList(
-        new Pair<>(new LongWritable(0), new Text("hello")),
-        new Pair<>(new LongWritable(1), new Text("world"))
-        ));
-    mapReduceDriver.withAllOutput(Arrays.asList(
-        new Pair<>(new Text("world"), NullWritable.get()),
-        new Pair<>(new Text("hello"), NullWritable.get())
-        ));
-    mapReduceDriver.runTest();
-  }
-  
-  @Test
-  public void testMapReduce3Items() throws IOException {
-    mapReduceDriver.withAll(Arrays.asList(
-        new Pair<>(new LongWritable(0), new Text("hello")),
-        new Pair<>(new LongWritable(1), new Text("world")),
-        new Pair<>(new LongWritable(2), new Text("nadja"))
-        ));
-    mapReduceDriver.withAllOutput(Arrays.asList(
-        new Pair<>(new Text("nadja"), NullWritable.get()),
-        new Pair<>(new Text("world"), NullWritable.get()),
-        new Pair<>(new Text("hello"), NullWritable.get())
-        ));
-    mapReduceDriver.runTest();
-  }
-  
-  @Test
-  public void testMapReduce4Items() throws IOException {
-    mapReduceDriver.withAll(Arrays.asList(
-        new Pair<>(new LongWritable(0), new Text("hello")),
-        new Pair<>(new LongWritable(1), new Text("world")),
-        new Pair<>(new LongWritable(2), new Text("nadja")),
-        new Pair<>(new LongWritable(3), new Text("basti"))
-        ));
-    mapReduceDriver.withAllOutput(Arrays.asList(
-        new Pair<>(new Text("nadja"), NullWritable.get()),
-        new Pair<>(new Text("world"), NullWritable.get()),
-        new Pair<>(new Text("basti"), NullWritable.get()),
-        new Pair<>(new Text("hello"), NullWritable.get())
-        ));
-    mapReduceDriver.runTest();
-  }
-  
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MRUnitBase.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MRUnitBase.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MRUnitBase.java
deleted file mode 100644
index 558d662..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MRUnitBase.java
+++ /dev/null
@@ -1,64 +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.hadoop;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.Locale;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.hadoop.morphline.MorphlineMapRunner;
-import org.apache.solr.morphlines.solr.AbstractSolrMorphlineTestBase;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-
-public abstract class MRUnitBase extends SolrTestCaseJ4 {
-  
-  protected static final String RESOURCES_DIR = getFile("morphlines-core.marker").getParent();
-  protected static final String DOCUMENTS_DIR = RESOURCES_DIR + "/test-documents";
-  protected static File solrHomeZip;
-
-  @BeforeClass
-  public static void setupClass() throws Exception {
-    assumeFalse("This test fails on UNIX with Turkish default locale (https://issues.apache.org/jira/browse/SOLR-6387)",
-        new Locale("tr").getLanguage().equals(Locale.getDefault().getLanguage()));
-    solrHomeZip = SolrOutputFormat.createSolrHomeZip(new File(RESOURCES_DIR + "/solr/mrunit"));
-    assertNotNull(solrHomeZip);
-  }
-
-  @AfterClass
-  public static void teardownClass() throws Exception {
-    if (solrHomeZip != null) Files.delete(solrHomeZip.toPath());
-    solrHomeZip = null;
-  }
-  
-  protected void setupHadoopConfig(Configuration config) throws IOException {
-    
-    String tempDir = createTempDir().toFile().getAbsolutePath();
-
-    FileUtils.copyFile(new File(RESOURCES_DIR + "/custom-mimetypes.xml"), new File(tempDir + "/custom-mimetypes.xml"));
-
-    AbstractSolrMorphlineTestBase.setupMorphline(tempDir, "test-morphlines/solrCellDocumentTypes", true);
-    
-    config.set(MorphlineMapRunner.MORPHLINE_FILE_PARAM, tempDir + "/test-morphlines/solrCellDocumentTypes.conf");
-    config.set(SolrOutputFormat.ZIP_NAME, solrHomeZip.getName());
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MapReduceIndexerToolArgumentParserTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MapReduceIndexerToolArgumentParserTest.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MapReduceIndexerToolArgumentParserTest.java
deleted file mode 100644
index 1aebcf7..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MapReduceIndexerToolArgumentParserTest.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.hadoop;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.PrintStream;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Locale;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.Path;
-import org.apache.lucene.util.Constants;
-import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.cloud.AbstractZkTestCase;
-import org.apache.solr.hadoop.dedup.NoChangeUpdateConflictResolver;
-import org.apache.solr.hadoop.dedup.RetainMostRecentUpdateConflictResolver;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-public class MapReduceIndexerToolArgumentParserTest extends SolrTestCaseJ4 {
-  
-  private Configuration conf; 
-  private MapReduceIndexerTool.MyArgumentParser parser;
-  private MapReduceIndexerTool.Options opts;
-  private PrintStream oldSystemOut;
-  private PrintStream oldSystemErr;
-  private ByteArrayOutputStream bout;
-  private ByteArrayOutputStream berr;
-  
-  private static final String RESOURCES_DIR = getFile("morphlines-core.marker").getParent();  
-  private static final File MINIMR_INSTANCE_DIR = new File(RESOURCES_DIR + "/solr/minimr");
-
-  private static final String MORPHLINE_FILE = RESOURCES_DIR + "/test-morphlines/solrCellDocumentTypes.conf";
-    
-  private final File solrHomeDirectory = createTempDir().toFile();
-  
-  @BeforeClass
-  public static void beforeClass() {
-    assumeFalse("Does not work on Windows, because it uses UNIX shell commands or POSIX paths", Constants.WINDOWS);
-    assumeFalse("This test fails on UNIX with Turkish default locale (https://issues.apache.org/jira/browse/SOLR-6387)",
-                new Locale("tr").getLanguage().equals(Locale.getDefault().getLanguage()));
-  }
-  
-  @Before
-  public void setUp() throws Exception {
-    super.setUp();
-    AbstractZkTestCase.SOLRHOME = solrHomeDirectory;
-    FileUtils.copyDirectory(MINIMR_INSTANCE_DIR, solrHomeDirectory);
-    
-    conf = new Configuration();
-    parser = new MapReduceIndexerTool.MyArgumentParser();
-    opts = new MapReduceIndexerTool.Options();
-    oldSystemOut = System.out;
-    bout = new ByteArrayOutputStream();
-    System.setOut(new PrintStream(bout, true, "UTF-8"));
-    oldSystemErr = System.err;
-    berr = new ByteArrayOutputStream();
-    System.setErr(new PrintStream(berr, true, "UTF-8"));
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    super.tearDown();
-    System.setOut(oldSystemOut);
-    System.setErr(oldSystemErr);
-  }
-
-  @Test
-  public void testArgsParserTypicalUse() {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--morphline-id", "morphline_xyz",
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(),
-        "--mappers", "10", 
-        "--reducers", "9", 
-        "--fanout", "8", 
-        "--max-segments", "7", 
-        "--shards", "1",
-        "--verbose", 
-        "file:///home",
-        "file:///dev",
-        };
-    Integer res = parser.parseArgs(args, conf, opts);
-    assertNull(res != null ? res.toString() : "", res);
-    assertEquals(Collections.singletonList(new Path("file:///tmp")), opts.inputLists);
-    assertEquals(new Path("file:/tmp/foo"), opts.outputDir);
-    assertEquals(new File(MINIMR_INSTANCE_DIR.getPath()), opts.solrHomeDir);
-    assertEquals(10, opts.mappers);
-    assertEquals(9, opts.reducers);
-    assertEquals(8, opts.fanout);
-    assertEquals(7, opts.maxSegments);
-    assertEquals(new Integer(1), opts.shards);
-    assertEquals(null, opts.fairSchedulerPool);
-    assertTrue(opts.isVerbose);
-    assertEquals(Arrays.asList(new Path("file:///home"), new Path("file:///dev")), opts.inputFiles);
-    assertEquals(RetainMostRecentUpdateConflictResolver.class.getName(), opts.updateConflictResolver);
-    assertEquals(MORPHLINE_FILE, opts.morphlineFile.getPath());
-    assertEquals("morphline_xyz", opts.morphlineId);
-    assertEmptySystemErrAndEmptySystemOut();
-  }
-
-  @Test
-  public void testArgsParserMultipleSpecsOfSameKind() {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--input-list", "file:///",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shards", "1",
-        "file:///home",
-        "file:///dev",
-        };
-    assertNull(parser.parseArgs(args, conf, opts));
-    assertEquals(Arrays.asList(new Path("file:///tmp"), new Path("file:///")), opts.inputLists);
-    assertEquals(Arrays.asList(new Path("file:///home"), new Path("file:///dev")), opts.inputFiles);
-    assertEquals(new Path("file:/tmp/foo"), opts.outputDir);
-    assertEquals(new File(MINIMR_INSTANCE_DIR.getPath()), opts.solrHomeDir);
-    assertEmptySystemErrAndEmptySystemOut();
-  }
-
-  @Test
-  public void testArgsParserTypicalUseWithEqualsSign() {
-    String[] args = new String[] { 
-        "--input-list=file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir=file:/tmp/foo",
-        "--solr-home-dir=" + MINIMR_INSTANCE_DIR.getPath(), 
-        "--mappers=10", 
-        "--shards", "1",
-        "--verbose", 
-        "file:///home",
-        "file:///dev",
-        };
-    assertNull(parser.parseArgs(args, conf, opts));
-    assertEquals(Collections.singletonList(new Path("file:///tmp")), opts.inputLists);
-    assertEquals(new Path("file:/tmp/foo"), opts.outputDir);
-    assertEquals(new File(MINIMR_INSTANCE_DIR.getPath()), opts.solrHomeDir);
-    assertEquals(10, opts.mappers);
-    assertEquals(new Integer(1), opts.shards);
-    assertEquals(null, opts.fairSchedulerPool);
-    assertTrue(opts.isVerbose);
-    assertEquals(Arrays.asList(new Path("file:///home"), new Path("file:///dev")), opts.inputFiles);
-    assertEmptySystemErrAndEmptySystemOut();
-  }
-
-  @Test
-  public void testArgsParserMultipleSpecsOfSameKindWithEqualsSign() {
-    String[] args = new String[] { 
-        "--input-list=file:///tmp",
-        "--input-list=file:///",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir=file:/tmp/foo",
-        "--solr-home-dir=" + MINIMR_INSTANCE_DIR.getPath(), 
-        "--shards", "1",
-        "file:///home",
-        "file:///dev",
-        };
-    assertNull(parser.parseArgs(args, conf, opts));
-    assertEquals(Arrays.asList(new Path("file:///tmp"), new Path("file:///")), opts.inputLists);
-    assertEquals(Arrays.asList(new Path("file:///home"), new Path("file:///dev")), opts.inputFiles);
-    assertEquals(new Path("file:/tmp/foo"), opts.outputDir);
-    assertEquals(new File(MINIMR_INSTANCE_DIR.getPath()), opts.solrHomeDir);
-    assertEmptySystemErrAndEmptySystemOut();
-  }
-
-  @Test
-  public void testArgsParserHelp() throws UnsupportedEncodingException  {
-    String[] args = new String[] { "--help" };
-    assertEquals(new Integer(0), parser.parseArgs(args, conf, opts));
-    String helpText = new String(bout.toByteArray(), StandardCharsets.UTF_8);
-    assertTrue(helpText.contains("MapReduce batch job driver that "));
-    assertTrue(helpText.contains("bin/hadoop command"));
-    assertEquals(0, berr.toByteArray().length);
-  }
-  
-  @Test
-  public void testArgsParserOk() {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shards", "1",
-        };
-    assertNull(parser.parseArgs(args, conf, opts));
-    assertEquals(new Integer(1), opts.shards);
-    assertEmptySystemErrAndEmptySystemOut();
-  }
-
-  @Test
-  public void testArgsParserUpdateConflictResolver() {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shards", "1",
-        "--update-conflict-resolver", NoChangeUpdateConflictResolver.class.getName(),
-        };
-    assertNull(parser.parseArgs(args, conf, opts));
-    assertEquals(NoChangeUpdateConflictResolver.class.getName(), opts.updateConflictResolver);
-    assertEmptySystemErrAndEmptySystemOut();
-  }
-
-  @Test
-  public void testArgsParserUnknownArgName() throws Exception {
-    String[] args = new String[] { 
-        "--xxxxxxxxinputlist", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shards", "1",
-        };
-    assertArgumentParserException(args);
-  }
-
-  @Test
-  public void testArgsParserFileNotFound1() throws Exception {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/fileNotFound/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shards", "1",
-        };
-    assertArgumentParserException(args);
-  }
-  
-  @Test
-  public void testArgsParserFileNotFound2() throws Exception {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", "/fileNotFound", 
-        "--shards", "1",
-        };
-    assertArgumentParserException(args);
-  }
-  
-  @Test
-  public void testArgsParserIntOutOfRange() throws Exception {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shards", "1",
-        "--mappers", "-20"
-        };
-    assertArgumentParserException(args);
-  }
-  
-  @Test
-  public void testArgsParserIllegalFanout() throws Exception {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shards", "1",
-        "--fanout", "1" // must be >= 2
-        };
-    assertArgumentParserException(args);
-  }
-  
-  @Test
-  public void testArgsParserSolrHomeMustContainSolrConfigFile() throws Exception {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--shards", "1",
-        "--solr-home-dir", "/",
-        };
-    assertArgumentParserException(args);
-  }
-
-  @Test
-  public void testArgsShardUrlOk() {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shard-url", "http://localhost:8983/solr/collection1",
-        "--shard-url", "http://localhost:8983/solr/collection2",
-        };
-    assertNull(parser.parseArgs(args, conf, opts));
-    assertEquals(Arrays.asList(
-        Collections.singletonList("http://localhost:8983/solr/collection1"),
-        Collections.singletonList("http://localhost:8983/solr/collection2")),
-        opts.shardUrls);
-    assertEquals(new Integer(2), opts.shards);
-    assertEmptySystemErrAndEmptySystemOut();
-  }
-  
-  @Test
-  public void testArgsShardUrlMustHaveAParam() throws Exception {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shard-url",
-        };
-    assertArgumentParserException(args);
-  }
-  
-  @Test
-  public void testArgsShardUrlAndShardsSucceeds() {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shards", "1", 
-        "--shard-url", "http://localhost:8983/solr/collection1",
-        };
-    assertNull(parser.parseArgs(args, conf, opts));
-    assertEmptySystemErrAndEmptySystemOut();
-  }
-  
-  @Test
-  public void testArgsShardUrlNoGoLive() {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shard-url", "http://localhost:8983/solr/collection1"
-        };
-    assertNull(parser.parseArgs(args, conf, opts));
-    assertEmptySystemErrAndEmptySystemOut();
-    assertEquals(new Integer(1), opts.shards);
-  }
-  
-  @Test
-  public void testArgsShardUrlsAndZkhostAreMutuallyExclusive() throws Exception {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shard-url", "http://localhost:8983/solr/collection1",
-        "--shard-url", "http://localhost:8983/solr/collection1",
-        "--zk-host", "http://localhost:2185",
-        "--go-live"
-        };
-    assertArgumentParserException(args);
-  }
-  
-  @Test
-  public void testArgsGoLiveAndSolrUrl() {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--shard-url", "http://localhost:8983/solr/collection1",
-        "--shard-url", "http://localhost:8983/solr/collection1",
-        "--go-live"
-        };
-    Integer result = parser.parseArgs(args, conf, opts);
-    assertNull(result);
-    assertEmptySystemErrAndEmptySystemOut();
-  }
-  
-  @Test
-  public void testArgsZkHostNoGoLive() throws Exception {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--zk-host", "http://localhost:2185",
-        };
-    assertArgumentParserException(args);
-  }
-  
-  @Test
-  public void testArgsGoLiveZkHostNoCollection() throws Exception {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--zk-host", "http://localhost:2185",
-        "--go-live"
-        };
-    assertArgumentParserException(args);
-  }
-  
-  @Test
-  public void testArgsGoLiveNoZkHostOrSolrUrl() throws Exception {
-    String[] args = new String[] { 
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--solr-home-dir", MINIMR_INSTANCE_DIR.getPath(), 
-        "--go-live"
-        };
-    assertArgumentParserException(args);
-  }  
-
-  @Test
-  public void testNoSolrHomeDirOrZKHost() throws Exception {
-    String[] args = new String[] {
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--shards", "1",
-        };
-    assertArgumentParserException(args);
-  }
-
-  @Test
-  public void testZKHostNoSolrHomeDirOk() {
-    String[] args = new String[] {
-        "--input-list", "file:///tmp",
-        "--morphline-file", MORPHLINE_FILE,
-        "--output-dir", "file:/tmp/foo",
-        "--zk-host", "http://localhost:2185",
-        "--collection", "collection1",
-        };
-    assertNull(parser.parseArgs(args, conf, opts));
-    assertEmptySystemErrAndEmptySystemOut();
-  }
-
-  private void assertEmptySystemErrAndEmptySystemOut() {
-    assertEquals(0, bout.toByteArray().length);
-    assertEquals(0, berr.toByteArray().length);
-  }
-  
-  private void assertArgumentParserException(String[] args) throws UnsupportedEncodingException {
-    assertEquals("should have returned fail code", new Integer(1), parser.parseArgs(args, conf, opts));
-    assertEquals("no sys out expected:" + new String(bout.toByteArray(), StandardCharsets.UTF_8), 0, bout.toByteArray().length);
-    String usageText;
-    usageText = new String(berr.toByteArray(), StandardCharsets.UTF_8);
-
-    assertTrue("should start with usage msg \"usage: hadoop \":" + usageText, usageText.startsWith("usage: hadoop "));
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineBasicMiniMRTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineBasicMiniMRTest.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineBasicMiniMRTest.java
deleted file mode 100644
index 6479a20..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineBasicMiniMRTest.java
+++ /dev/null
@@ -1,415 +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.hadoop;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.lang.reflect.Array;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.FileUtil;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.permission.FsPermission;
-import org.apache.hadoop.hdfs.MiniDFSCluster;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.hadoop.mapreduce.Job;
-import org.apache.hadoop.security.authorize.ProxyUsers;
-import org.apache.hadoop.util.JarFinder;
-import org.apache.hadoop.util.ToolRunner;
-import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.lucene.util.Constants;
-import org.apache.lucene.util.LuceneTestCase.AwaitsFix;
-import org.apache.lucene.util.LuceneTestCase.Slow;
-import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.cloud.AbstractZkTestCase;
-import org.apache.solr.hadoop.hack.MiniMRCluster;
-import org.apache.solr.morphlines.solr.AbstractSolrMorphlineTestBase;
-import org.apache.solr.util.BadHdfsThreadsFilter;
-import org.apache.solr.util.BadMrClusterThreadsFilter;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.carrotsearch.randomizedtesting.annotations.Nightly;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction.Action;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakZombies.Consequence;
-
-@ThreadLeakAction({Action.WARN})
-@ThreadLeakLingering(linger = 0)
-@ThreadLeakZombies(Consequence.CONTINUE)
-@ThreadLeakFilters(defaultFilters = true, filters = {
-    BadHdfsThreadsFilter.class, BadMrClusterThreadsFilter.class // hdfs currently leaks thread(s)
-})
-@Slow
-@Nightly
-@AwaitsFix(bugUrl = "https://issues.apache.org/jira/browse/SOLR-9076")
-public class MorphlineBasicMiniMRTest extends SolrTestCaseJ4 {
-  
-  private static final boolean ENABLE_LOCAL_JOB_RUNNER = false; // for debugging only
-  private static final String RESOURCES_DIR = getFile("morphlines-core.marker").getParent();  
-  private static final String DOCUMENTS_DIR = RESOURCES_DIR + "/test-documents";
-  private static final File MINIMR_CONF_DIR = new File(RESOURCES_DIR + "/solr/minimr");
-  
-  private static String SEARCH_ARCHIVES_JAR;
-
-  private static MiniDFSCluster dfsCluster = null;
-  private static MiniMRCluster mrCluster = null;
-  private static int numRuns = 0;
-
-  private final String inputAvroFile;
-  private final int count;
-  
-  private static String tempDir;
-  
-  private static File solrHomeDirectory;
-  
-  protected MapReduceIndexerTool createTool() {
-    return new MapReduceIndexerTool();
-  }
-
-  public MorphlineBasicMiniMRTest() {
-    int data = random().nextInt(3);
-    switch (data) {
-      case 0:
-        this.inputAvroFile = "sample-statuses-20120906-141433.avro";
-        this.count = 2;
-        break;
-      case 1:
-        this.inputAvroFile = "sample-statuses-20120521-100919.avro";
-        this.count = 20;
-        break;
-      case 2:
-      this.inputAvroFile = "sample-statuses-20120906-141433-medium.avro";
-      this.count = 2104;
-        break;
-      default:
-        throw new RuntimeException("Test setup is broken");
-    }
-
-  }
-
-  @BeforeClass
-  public static void setupClass() throws Exception {
-    solrHomeDirectory = createTempDir().toFile();
-    
-    assumeFalse("HDFS tests were disabled by -Dtests.disableHdfs",
-        Boolean.parseBoolean(System.getProperty("tests.disableHdfs", "false")));
-    
-    assumeFalse("FIXME: This test does not work with Windows because of native library requirements", Constants.WINDOWS);
-    
-    AbstractZkTestCase.SOLRHOME = solrHomeDirectory;
-    FileUtils.copyDirectory(MINIMR_CONF_DIR, solrHomeDirectory);
-    File dataDir = createTempDir().toFile();
-    tempDir = dataDir.getAbsolutePath();
-    new File(tempDir).mkdirs();
-    FileUtils.copyFile(new File(RESOURCES_DIR + "/custom-mimetypes.xml"), new File(tempDir + "/custom-mimetypes.xml"));
-    
-    AbstractSolrMorphlineTestBase.setupMorphline(tempDir, "test-morphlines/solrCellDocumentTypes", true);
-    
-    System.setProperty("hadoop.log.dir", new File(solrHomeDirectory, "logs").getAbsolutePath());
-    
-    int taskTrackers = 1;
-    int dataNodes = 2;
-//    String proxyUser = System.getProperty("user.name");
-//    String proxyGroup = "g";
-//    StringBuilder sb = new StringBuilder();
-//    sb.append("127.0.0.1,localhost");
-//    for (InetAddress i : InetAddress.getAllByName(InetAddress.getLocalHost().getHostName())) {
-//      sb.append(",").append(i.getCanonicalHostName());
-//    }
-    
-    new File(dataDir, "nm-local-dirs").mkdirs();
-    
-    System.setProperty("solr.hdfs.blockcache.enabled", "false");
-    
-    System.setProperty("test.build.dir", dataDir + File.separator + "hdfs" + File.separator + "test-build-dir");
-    System.setProperty("test.build.data", dataDir + File.separator + "hdfs" + File.separator + "build");
-    System.setProperty("test.cache.data", dataDir + File.separator + "hdfs" + File.separator + "cache");
-
-    // Initialize AFTER test.build.dir is set, JarFinder uses it.
-    SEARCH_ARCHIVES_JAR = JarFinder.getJar(MapReduceIndexerTool.class);
-
-    JobConf conf = new JobConf();
-    conf.set("dfs.block.access.token.enable", "false");
-    conf.set("dfs.permissions", "true");
-    conf.set("hadoop.security.authentication", "simple");
-    conf.set(YarnConfiguration.NM_LOCAL_DIRS, dataDir.getPath() + File.separator +  "nm-local-dirs");
-    conf.set(YarnConfiguration.DEFAULT_NM_LOG_DIRS, dataDir + File.separator +  "nm-logs");
-    conf.set("testWorkDir", dataDir.getPath() + File.separator +  "testWorkDir");
-    conf.set("mapreduce.jobhistory.minicluster.fixed.ports", "false");
-    conf.set("mapreduce.jobhistory.admin.address", "0.0.0.0:0");
-
-    dfsCluster = new MiniDFSCluster(conf, dataNodes, true, null);
-    FileSystem fileSystem = dfsCluster.getFileSystem();
-    fileSystem.mkdirs(new Path("/tmp"));
-    fileSystem.mkdirs(new Path("/user"));
-    fileSystem.mkdirs(new Path("/hadoop/mapred/system"));
-    fileSystem.setPermission(new Path("/tmp"), FsPermission.valueOf("-rwxrwxrwx"));
-    fileSystem.setPermission(new Path("/user"), FsPermission.valueOf("-rwxrwxrwx"));
-    fileSystem.setPermission(new Path("/hadoop/mapred/system"), FsPermission.valueOf("-rwx------"));
-    String nnURI = fileSystem.getUri().toString();
-    int numDirs = 1;
-    String[] racks = null;
-    String[] hosts = null;
-
-    mrCluster = new MiniMRCluster(0, 0, taskTrackers, nnURI, numDirs, racks, hosts, null, conf);
-    ProxyUsers.refreshSuperUserGroupsConfiguration(conf);
-  }
-
-  @AfterClass
-  public static void teardownClass() throws Exception {
-    System.clearProperty("solr.hdfs.blockcache.enabled");
-    System.clearProperty("test.build.dir");
-    System.clearProperty("test.build.data");
-    System.clearProperty("test.cache.data");
-
-    if (mrCluster != null) {
-      mrCluster.shutdown();
-      mrCluster = null;
-    }
-    if (dfsCluster != null) {
-      dfsCluster.shutdown();
-      dfsCluster = null;
-    }
-    
-    FileSystem.closeAll();
-  }
-  
-  @After
-  public void tearDown() throws Exception {
-    System.clearProperty("hadoop.log.dir");
-    System.clearProperty("solr.hdfs.blockcache.enabled");
-    
-    super.tearDown();
-  }
-
-  private JobConf getJobConf() {
-    return mrCluster.createJobConf();
-  }
-
-  @Test
-  public void testPathParts() throws Exception { // see PathParts
-    FileSystem fs = dfsCluster.getFileSystem();
-    int dfsClusterPort = fs.getWorkingDirectory().toUri().getPort();
-    assertTrue(dfsClusterPort > 0);
-    JobConf jobConf = getJobConf();
-    Configuration simpleConf = new Configuration();
-    
-    for (Configuration conf : Arrays.asList(jobConf, simpleConf)) {
-      for (String queryAndFragment : Arrays.asList("", "?key=value#fragment")) {
-        for (String up : Arrays.asList("", "../")) {
-          String down = up.length() == 0 ? "foo/" : "";
-          String uploadURL = "hdfs://localhost:12345/user/foo/" + up + "bar.txt" + queryAndFragment;
-          PathParts parts = new PathParts(uploadURL, conf);
-          assertEquals(uploadURL, parts.getUploadURL());
-          assertEquals("/user/" + down + "bar.txt", parts.getURIPath());
-          assertEquals("bar.txt", parts.getName());
-          assertEquals("hdfs", parts.getScheme());
-          assertEquals("localhost", parts.getHost());
-          assertEquals(12345, parts.getPort());
-          assertEquals("hdfs://localhost:12345/user/" + down + "bar.txt", parts.getId());
-          assertEquals(parts.getId(), parts.getDownloadURL());
-          assertFileNotFound(parts);
-    
-          uploadURL = "hdfs://localhost/user/foo/" + up + "bar.txt" + queryAndFragment;
-          parts = new PathParts(uploadURL, conf);
-          assertEquals(uploadURL, parts.getUploadURL());
-          assertEquals("/user/" + down + "bar.txt", parts.getURIPath());
-          assertEquals("bar.txt", parts.getName());
-          assertEquals("hdfs", parts.getScheme());
-          assertEquals("localhost", parts.getHost());
-          assertEquals(8020, parts.getPort());
-          assertEquals("hdfs://localhost:8020/user/" + down + "bar.txt", parts.getId());
-          assertEquals(parts.getId(), parts.getDownloadURL());
-          assertFileNotFound(parts);
-        }
-      }
-    }    
-
-    for (Configuration conf : Arrays.asList(jobConf)) {
-      for (String queryAndFragment : Arrays.asList("", "?key=value#fragment")) {
-        for (String up : Arrays.asList("", "../")) {
-          // verify using absolute path
-          String down = up.length() == 0 ? "foo/" : "";
-          String uploadURL = "/user/foo/" + up + "bar.txt" + queryAndFragment;
-          PathParts parts = new PathParts(uploadURL, conf);
-          assertEquals(uploadURL, parts.getUploadURL());
-          assertEquals("/user/" + down + "bar.txt", parts.getURIPath());
-          assertEquals("bar.txt", parts.getName());
-          assertEquals("hdfs", parts.getScheme());
-          assertTrue("localhost".equals(parts.getHost()) || "localhost.localdomain".equals(parts.getHost()));
-          assertEquals(dfsClusterPort, parts.getPort());
-          assertTrue(parts.getId().equals("hdfs://localhost:" + dfsClusterPort + "/user/" + down + "bar.txt")
-                  || parts.getId().equals("hdfs://localhost.localdomain:" + dfsClusterPort + "/user/" + down + "bar.txt")
-          );
-          assertFileNotFound(parts);          
-          
-          // verify relative path is interpreted to be relative to user's home dir and resolved to an absolute path
-          uploadURL = "xuser/foo/" + up + "bar.txt" + queryAndFragment;
-          parts = new PathParts(uploadURL, conf);
-          assertEquals(uploadURL, parts.getUploadURL());
-          String homeDir = "/user/" + System.getProperty("user.name");
-          assertEquals(homeDir + "/xuser/" + down + "bar.txt", parts.getURIPath());
-          assertEquals("bar.txt", parts.getName());
-          assertEquals("hdfs", parts.getScheme());
-          assertTrue("localhost".equals(parts.getHost()) || "localhost.localdomain".equals(parts.getHost()));
-          assertEquals(dfsClusterPort, parts.getPort());
-          assertTrue(parts.getId().equals("hdfs://localhost:" + dfsClusterPort + homeDir + "/xuser/" + down + "bar.txt")
-                  || parts.getId().equals("hdfs://localhost.localdomain:" + dfsClusterPort + homeDir + "/xuser/" + down + "bar.txt")
-          );
-          assertFileNotFound(parts);
-        }
-      }
-    }
-    
-    try {
-      new PathParts("/user/foo/bar.txt", simpleConf);
-      fail("host/port resolution requires minimr conf, not a simple conf");
-    } catch (IllegalArgumentException e) {
-      ; // expected
-    }    
-  }
-
-  private void assertFileNotFound(PathParts parts) {
-    try {
-      parts.getFileSystem().getFileStatus(parts.getUploadPath());
-      fail();
-    } catch (IOException e) {
-      ; // expected
-    }
-  }
-
-  @Test
-  public void mrRun() throws Exception {
-    FileSystem fs = dfsCluster.getFileSystem();
-    Path inDir = fs.makeQualified(new Path("/user/testing/testMapperReducer/input"));
-    fs.delete(inDir, true);
-    String DATADIR = "/user/testing/testMapperReducer/data";
-    Path dataDir = fs.makeQualified(new Path(DATADIR));
-    fs.delete(dataDir, true);
-    Path outDir = fs.makeQualified(new Path("/user/testing/testMapperReducer/output"));
-    fs.delete(outDir, true);
-
-    assertTrue(fs.mkdirs(inDir));
-    Path INPATH = new Path(inDir, "input.txt");
-    OutputStream os = fs.create(INPATH);
-    Writer wr = new OutputStreamWriter(os, StandardCharsets.UTF_8);
-    wr.write(DATADIR + "/" + inputAvroFile);
-    wr.close();
-
-    assertTrue(fs.mkdirs(dataDir));
-    fs.copyFromLocalFile(new Path(DOCUMENTS_DIR, inputAvroFile), dataDir);
-    
-    JobConf jobConf = getJobConf();
-    jobConf.set("jobclient.output.filter", "ALL");
-    if (ENABLE_LOCAL_JOB_RUNNER) { // enable Hadoop LocalJobRunner; this enables to run in debugger and set breakpoints
-      jobConf.set("mapred.job.tracker", "local");
-    }
-    jobConf.setMaxMapAttempts(1);
-    jobConf.setMaxReduceAttempts(1);
-    jobConf.setJar(SEARCH_ARCHIVES_JAR);
-    
-    int shards = 2;
-    int maxReducers = Integer.MAX_VALUE;
-    if (ENABLE_LOCAL_JOB_RUNNER) {
-      // local job runner has a couple of limitations: only one reducer is supported and the DistributedCache doesn't work.
-      // see http://blog.cloudera.com/blog/2009/07/advice-on-qa-testing-your-mapreduce-jobs/
-      maxReducers = 1;
-      shards = 1;
-    }
-    
-    String[] args = new String[] {
-        "--morphline-file=" + tempDir + "/test-morphlines/solrCellDocumentTypes.conf",
-        "--morphline-id=morphline1",
-        "--solr-home-dir=" + MINIMR_CONF_DIR.getAbsolutePath(),
-        "--output-dir=" + outDir.toString(),
-        "--shards=" + shards,
-        "--verbose",
-        numRuns % 2 == 0 ? "--input-list=" + INPATH.toString() : dataDir.toString(),
-        numRuns % 3 == 0 ? "--reducers=" + shards : (numRuns % 3 == 1  ? "--reducers=-1" : "--reducers=" + Math.min(8, maxReducers))
-    };
-    if (numRuns % 3 == 2) {
-      args = concat(args, new String[] {"--fanout=2"});
-    }
-    if (numRuns == 0) {
-      // force (slow) MapReduce based randomization to get coverage for that as well
-      args = concat(new String[] {"-D", MapReduceIndexerTool.MAIN_MEMORY_RANDOMIZATION_THRESHOLD + "=-1"}, args); 
-    }
-    MapReduceIndexerTool tool = createTool();
-    int res = ToolRunner.run(jobConf, tool, args);
-    assertEquals(0, res);
-    Job job = tool.job;
-    assertTrue(job.isComplete());
-    assertTrue(job.isSuccessful());
-
-    if (numRuns % 3 != 2) {
-      // Only run this check if mtree merge is disabled.
-      // With mtree merge enabled the BatchWriter counters aren't available anymore because 
-      // variable "job" now refers to the merge job rather than the indexing job
-      assertEquals("Invalid counter " + SolrRecordWriter.class.getName() + "." + SolrCounters.DOCUMENTS_WRITTEN,
-          count, job.getCounters().findCounter(SolrCounters.class.getName(), SolrCounters.DOCUMENTS_WRITTEN.toString()).getValue());
-    }
-    
-    // Check the output is as expected
-    outDir = new Path(outDir, MapReduceIndexerTool.RESULTS_DIR);
-    Path[] outputFiles = FileUtil.stat2Paths(fs.listStatus(outDir));
-
-    System.out.println("outputfiles:" + Arrays.toString(outputFiles));
-
-    UtilsForTests.validateSolrServerDocumentCount(MINIMR_CONF_DIR, fs, outDir, count, shards);
-    
-    // run again with --dryrun mode:  
-    tool = createTool();
-    args = concat(args, new String[] {"--dry-run"});
-    res = ToolRunner.run(jobConf, tool, args);
-    assertEquals(0, res);
-
-    numRuns++;
-  }
-  
-  protected static <T> T[] concat(T[]... arrays) {
-    if (arrays.length <= 0) {
-      throw new IllegalArgumentException();
-    }
-    Class clazz = null;
-    int length = 0;
-    for (T[] array : arrays) {
-      clazz = array.getClass();
-      length += array.length;
-    }
-    T[] result = (T[]) Array.newInstance(clazz.getComponentType(), length);
-    int pos = 0;
-    for (T[] array : arrays) {
-      System.arraycopy(array, 0, result, pos, array.length);
-      pos += array.length;
-    }
-    return result;
-  }
-
-}


[66/73] [abbrv] lucene-solr:jira/solr-6203: remove dead code

Posted by cp...@apache.org.
remove dead code


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

Branch: refs/heads/jira/solr-6203
Commit: 1ace1740d96859009dacc41bce1941f1fb31e497
Parents: a6f27d3
Author: Mike McCandless <mi...@apache.org>
Authored: Wed Mar 29 08:48:26 2017 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Wed Mar 29 08:48:26 2017 -0400

----------------------------------------------------------------------
 lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1ace1740/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java b/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
index 5ab16c2..c5d9ddc 100644
--- a/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
+++ b/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
@@ -414,7 +414,6 @@ public class IndexSearcher {
       throw new IllegalArgumentException("after.doc exceeds the number of documents in the reader: after.doc="
           + after.doc + " limit=" + limit);
     }
-    numHits = Math.min(numHits, limit);
 
     final int cappedNumHits = Math.min(numHits, limit);
 


[68/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10352: Fixing available entropy warning limit to 300

Posted by cp...@apache.org.
SOLR-10352: Fixing available entropy warning limit to 300


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

Branch: refs/heads/jira/solr-6203
Commit: efdb04d06c9d37b543ab0469c65f3474c34d455a
Parents: 30f7914
Author: Ishan Chattopadhyaya <is...@apache.org>
Authored: Wed Mar 29 19:22:02 2017 +0530
Committer: Ishan Chattopadhyaya <is...@apache.org>
Committed: Wed Mar 29 19:22:02 2017 +0530

----------------------------------------------------------------------
 solr/bin/solr | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/efdb04d0/solr/bin/solr
----------------------------------------------------------------------
diff --git a/solr/bin/solr b/solr/bin/solr
index 27ec054..903309b 100755
--- a/solr/bin/solr
+++ b/solr/bin/solr
@@ -1771,7 +1771,7 @@ function launch_solr() {
 	1>"$SOLR_LOGS_DIR/solr-$SOLR_PORT-console.log" 2>&1 & echo $! > "$SOLR_PID_DIR/solr-$SOLR_PORT.pid"
 
     # check if /proc/sys/kernel/random/entropy_avail exists then check output of cat /proc/sys/kernel/random/entropy_avail to see if less than 300
-    if [[ -f /proc/sys/kernel/random/entropy_avail ]] && (( `cat /proc/sys/kernel/random/entropy_avail` < 30000)); then
+    if [[ -f /proc/sys/kernel/random/entropy_avail ]] && (( `cat /proc/sys/kernel/random/entropy_avail` < 300)); then
 	echo "Warning: Available entropy is low. As a result, use of the UUIDField, SSL, or any other features that require"
 	echo "RNG might not work properly. To check for the amount of available entropy, use 'cat /proc/sys/kernel/random/entropy_avail'."
 	echo ""


[71/73] [abbrv] lucene-solr:jira/solr-6203: Merge branch 'master' into jira/solr-6203

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/770265fb/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
index d3daee1,83c81e5..fee7fc4
--- a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
@@@ -155,19 -155,12 +158,19 @@@ public class TopGroupsResultTransforme
      return result;
    }
  
 -  protected ScoreDoc[] transformToNativeShardDoc(List<NamedList<Object>> documents, Sort groupSort, String shard,
 +  protected ScoreDoc[] transformToNativeShardDoc(List<NamedList<Object>> documents, SortSpec sortSpec, String shard,
                                                   IndexSchema schema) {
      ScoreDoc[] scoreDocs = new ScoreDoc[documents.size()];
 +
 +    final List<SchemaField> schemaFields = sortSpec.getSchemaFields();
 +    final SortField[] sortFields = sortSpec.getSort().getSort();
 +
 +    assert (schemaFields.size() == sortFields.length);
 +
 +
      int j = 0;
      for (NamedList<Object> document : documents) {
-       Object docId = document.get("id");
+       Object docId = document.get(ID);
        if (docId != null) {
          docId = docId.toString();
        } else {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/770265fb/solr/core/src/test/org/apache/solr/TestDistributedGrouping.java
----------------------------------------------------------------------


[28/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrCounters.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrCounters.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrCounters.java
deleted file mode 100644
index 88e9acb..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrCounters.java
+++ /dev/null
@@ -1,53 +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.hadoop;
-
-public enum SolrCounters {
-
-  DOCUMENTS_WRITTEN (getClassName(SolrReducer.class) 
-      + ": Number of documents processed"),
-
-  BATCHES_WRITTEN (getClassName(SolrReducer.class) 
-      + ": Number of document batches processed"),
-
-  BATCH_WRITE_TIME (getClassName(SolrReducer.class) 
-      + ": Time spent by reducers writing batches [ms]"),
-
-  PHYSICAL_REDUCER_MERGE_TIME (getClassName(SolrReducer.class)
-      + ": Time spent by reducers on physical merges [ms]"),
-  
-  LOGICAL_TREE_MERGE_TIME (getClassName(TreeMergeMapper.class)
-      + ": Time spent on logical tree merges [ms]"),
-
-  PHYSICAL_TREE_MERGE_TIME (getClassName(TreeMergeMapper.class)
-      + ": Time spent on physical tree merges [ms]");
-
-  private final String label;
-  
-  private SolrCounters(String label) {
-    this.label = label;
-  }
-  
-  public String toString() {
-    return label;
-  }
-  
-  private static String getClassName(Class clazz) {
-    return Utils.getShortClassName(clazz);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrInputDocumentWritable.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrInputDocumentWritable.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrInputDocumentWritable.java
deleted file mode 100644
index e043f7a..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrInputDocumentWritable.java
+++ /dev/null
@@ -1,66 +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.hadoop;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.hadoop.io.Writable;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.util.FastOutputStream;
-import org.apache.solr.common.util.JavaBinCodec;
-
-public class SolrInputDocumentWritable implements Writable {
-  private SolrInputDocument sid;
-
-  public SolrInputDocumentWritable() {
-  }
-
-  public SolrInputDocumentWritable(SolrInputDocument sid) {
-    this.sid = sid;
-  }
-
-  public SolrInputDocument getSolrInputDocument() {
-    return sid;
-  }
-
-  @Override
-  public String toString() {
-    return sid.toString();
-  }
-
-  @Override
-  public void write(DataOutput out) throws IOException {
-    JavaBinCodec codec = new JavaBinCodec();
-    FastOutputStream daos = FastOutputStream.wrap(DataOutputOutputStream.constructOutputStream(out));
-    codec.init(daos);
-    try {
-      codec.writeVal(sid);
-    } finally {
-      daos.flushBuffer();
-    }
-  }
-
-  @Override
-  public void readFields(DataInput in) throws IOException {
-    JavaBinCodec codec = new JavaBinCodec();
-    UnbufferedDataInputInputStream dis = new UnbufferedDataInputInputStream(in);
-    sid = (SolrInputDocument)codec.readVal(dis);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrMapper.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrMapper.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrMapper.java
deleted file mode 100644
index 6c73f1b..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrMapper.java
+++ /dev/null
@@ -1,39 +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.hadoop;
-
-import java.io.IOException;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Mapper;
-
-public class SolrMapper<KEYIN, VALUEIN> extends Mapper<KEYIN, VALUEIN, Text, SolrInputDocumentWritable> {
-  
-  private Path solrHomeDir;
-
-  @Override
-  protected void setup(Context context) throws IOException, InterruptedException {
-    Utils.getLogConfigFile(context.getConfiguration());
-    super.setup(context);
-    solrHomeDir = SolrRecordWriter.findSolrConfig(context.getConfiguration());
-  }
-  
-  protected Path getSolrHomeDir() {
-    return solrHomeDir;
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrOutputFormat.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrOutputFormat.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrOutputFormat.java
deleted file mode 100644
index b52939e..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrOutputFormat.java
+++ /dev/null
@@ -1,280 +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.hadoop;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.invoke.MethodHandles;
-import java.net.URI;
-import java.nio.file.Files;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-import java.util.UUID;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.filecache.DistributedCache;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.mapreduce.Job;
-import org.apache.hadoop.mapreduce.JobContext;
-import org.apache.hadoop.mapreduce.RecordWriter;
-import org.apache.hadoop.mapreduce.TaskAttemptContext;
-import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SolrOutputFormat<K, V> extends FileOutputFormat<K, V> {
-
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  /**
-   * The parameter used to pass the solr config zip file information. This will
-   * be the hdfs path to the configuration zip file
-   */
-  public static final String SETUP_OK = "solr.output.format.setup";
-
-  /** The key used to pass the zip file name through the configuration. */
-  public static final String ZIP_NAME = "solr.zip.name";
-
-  /**
-   * The base name of the zip file containing the configuration information.
-   * This file is passed via the distributed cache using a unique name, obtained
-   * via {@link #getZipName(Configuration jobConf)}.
-   */
-  public static final String ZIP_FILE_BASE_NAME = "solr.zip";
-
-  /**
-   * The key used to pass the boolean configuration parameter that instructs for
-   * regular or zip file output
-   */
-  public static final String OUTPUT_ZIP_FILE = "solr.output.zip.format";
-
-  static int defaultSolrWriterThreadCount = 0;
-
-  public static final String SOLR_WRITER_THREAD_COUNT = "solr.record.writer.num.threads";
-
-  static int defaultSolrWriterQueueSize = 1;
-
-  public static final String SOLR_WRITER_QUEUE_SIZE = "solr.record.writer.max.queues.size";
-
-  static int defaultSolrBatchSize = 20;
-
-  public static final String SOLR_RECORD_WRITER_BATCH_SIZE = "solr.record.writer.batch.size";
-
-  public static final String SOLR_RECORD_WRITER_MAX_SEGMENTS = "solr.record.writer.maxSegments";
-
-  public static String getSetupOk() {
-    return SETUP_OK;
-  }
-
-  /** Get the number of threads used for index writing */
-  public static void setSolrWriterThreadCount(int count, Configuration conf) {
-    conf.setInt(SOLR_WRITER_THREAD_COUNT, count);
-  }
-
-  /** Set the number of threads used for index writing */
-  public static int getSolrWriterThreadCount(Configuration conf) {
-    return conf.getInt(SOLR_WRITER_THREAD_COUNT, defaultSolrWriterThreadCount);
-  }
-
-  /**
-   * Set the maximum size of the the queue for documents to be written to the
-   * index.
-   */
-  public static void setSolrWriterQueueSize(int count, Configuration conf) {
-    conf.setInt(SOLR_WRITER_QUEUE_SIZE, count);
-  }
-
-  /** Return the maximum size for the number of documents pending index writing. */
-  public static int getSolrWriterQueueSize(Configuration conf) {
-    return conf.getInt(SOLR_WRITER_QUEUE_SIZE, defaultSolrWriterQueueSize);
-  }
-
-  /**
-   * Return the file name portion of the configuration zip file, from the
-   * configuration.
-   */
-  public static String getZipName(Configuration conf) {
-    return conf.get(ZIP_NAME, ZIP_FILE_BASE_NAME);
-  }
-
-  /**
-   * configure the job to output zip files of the output index, or full
-   * directory trees. Zip files are about 1/5th the size of the raw index, and
-   * much faster to write, but take more cpu to create.
-   * 
-   * @param output true if should output zip files
-   * @param conf to use
-   */
-  public static void setOutputZipFormat(boolean output, Configuration conf) {
-    conf.setBoolean(OUTPUT_ZIP_FILE, output);
-  }
-
-  /**
-   * return true if the output should be a zip file of the index, rather than
-   * the raw index
-   * 
-   * @param conf to use
-   * @return true if output zip files is on
-   */
-  public static boolean isOutputZipFormat(Configuration conf) {
-    return conf.getBoolean(OUTPUT_ZIP_FILE, false);
-  }
-  
-  public static String getOutputName(JobContext job) {
-    return FileOutputFormat.getOutputName(job);
-  }
-
-  @Override
-  public void checkOutputSpecs(JobContext job) throws IOException {
-    super.checkOutputSpecs(job);
-    if (job.getConfiguration().get(SETUP_OK) == null) {
-      throw new IOException("Solr home cache not set up!");
-    }
-  }
-
-
-  @Override
-  public RecordWriter<K, V> getRecordWriter(TaskAttemptContext context) throws IOException, InterruptedException {
-    Utils.getLogConfigFile(context.getConfiguration());
-    Path workDir = getDefaultWorkFile(context, "");
-    int batchSize = getBatchSize(context.getConfiguration());
-    return new SolrRecordWriter<>(context, workDir, batchSize);
-  }
-
-  public static void setupSolrHomeCache(File solrHomeDir, Job job) throws IOException{
-    File solrHomeZip = createSolrHomeZip(solrHomeDir);
-    addSolrConfToDistributedCache(job, solrHomeZip);
-  }
-
-  public static File createSolrHomeZip(File solrHomeDir) throws IOException {
-    return createSolrHomeZip(solrHomeDir, false);
-  }
-
-  private static File createSolrHomeZip(File solrHomeDir, boolean safeToModify) throws IOException {
-    if (solrHomeDir == null || !(solrHomeDir.exists() && solrHomeDir.isDirectory())) {
-      throw new IOException("Invalid solr home: " + solrHomeDir);
-    }
-    File solrHomeZip = File.createTempFile("solr", ".zip");
-    createZip(solrHomeDir, solrHomeZip);
-    return solrHomeZip;
-  }
-
-  public static void addSolrConfToDistributedCache(Job job, File solrHomeZip)
-      throws IOException {
-    // Make a reasonably unique name for the zip file in the distributed cache
-    // to avoid collisions if multiple jobs are running.
-    String hdfsZipName = UUID.randomUUID().toString() + '.'
-        + ZIP_FILE_BASE_NAME;
-    Configuration jobConf = job.getConfiguration();
-    jobConf.set(ZIP_NAME, hdfsZipName);
-
-    Path zipPath = new Path("/tmp", getZipName(jobConf));
-    FileSystem fs = FileSystem.get(jobConf);
-    fs.copyFromLocalFile(new Path(solrHomeZip.toString()), zipPath);
-    final URI baseZipUrl = fs.getUri().resolve(
-        zipPath.toString() + '#' + getZipName(jobConf));
-
-    DistributedCache.addCacheArchive(baseZipUrl, jobConf);
-    LOG.debug("Set Solr distributed cache: {}", Arrays.asList(job.getCacheArchives()));
-    LOG.debug("Set zipPath: {}", zipPath);
-    // Actually send the path for the configuration zip file
-    jobConf.set(SETUP_OK, zipPath.toString());
-  }
-
-  private static void createZip(File dir, File out) throws IOException {
-    HashSet<File> files = new HashSet<>();
-    // take only conf/ and lib/
-    for (String allowedDirectory : SolrRecordWriter
-        .getAllowedConfigDirectories()) {
-      File configDir = new File(dir, allowedDirectory);
-      boolean configDirExists;
-      /** If the directory does not exist, and is required, bail out */
-      if (!(configDirExists = configDir.exists())
-          && SolrRecordWriter.isRequiredConfigDirectory(allowedDirectory)) {
-        throw new IOException(String.format(Locale.ENGLISH,
-            "required configuration directory %s is not present in %s",
-            allowedDirectory, dir));
-      }
-      if (!configDirExists) {
-        continue;
-      }
-      listFiles(configDir, files); // Store the files in the existing, allowed
-                                   // directory configDir, in the list of files
-                                   // to store in the zip file
-    }
-
-    Files.deleteIfExists(out.toPath());
-    int subst = dir.toString().length();
-    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(out));
-    byte[] buf = new byte[1024];
-    for (File f : files) {
-      ZipEntry ze = new ZipEntry(f.toString().substring(subst));
-      zos.putNextEntry(ze);
-      InputStream is = new FileInputStream(f);
-      int cnt;
-      while ((cnt = is.read(buf)) >= 0) {
-        zos.write(buf, 0, cnt);
-      }
-      is.close();
-      zos.flush();
-      zos.closeEntry();
-    }
-    
-    ZipEntry ze = new ZipEntry("solr.xml");
-    zos.putNextEntry(ze);
-    zos.write("<solr></solr>".getBytes("UTF-8"));
-    zos.flush();
-    zos.closeEntry();
-    zos.close();
-  }
-
-  private static void listFiles(File dir, Set<File> files) throws IOException {
-    File[] list = dir.listFiles();
-    
-    if (list == null && dir.isFile())  {
-      files.add(dir);
-      return;
-    }
-    
-    for (File f : list) {
-      if (f.isFile()) {
-        files.add(f);
-      } else {
-        listFiles(f, files);
-      }
-    }
-  }
-
-  public static int getBatchSize(Configuration jobConf) {
-    // TODO Auto-generated method stub
-    return jobConf.getInt(SolrOutputFormat.SOLR_RECORD_WRITER_BATCH_SIZE,
-        defaultSolrBatchSize);
-  }
-
-  public static void setBatchSize(int count, Configuration jobConf) {
-    jobConf.setInt(SOLR_RECORD_WRITER_BATCH_SIZE, count);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrRecordWriter.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrRecordWriter.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrRecordWriter.java
deleted file mode 100644
index f528c54..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrRecordWriter.java
+++ /dev/null
@@ -1,479 +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.hadoop;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import com.google.common.collect.ImmutableMap;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.filecache.DistributedCache;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.mapreduce.RecordWriter;
-import org.apache.hadoop.mapreduce.Reducer;
-import org.apache.hadoop.mapreduce.TaskAttemptContext;
-import org.apache.hadoop.mapreduce.TaskID;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.core.CoreContainer;
-import org.apache.solr.core.CoreDescriptor;
-import org.apache.solr.core.DirectoryFactory;
-import org.apache.solr.core.HdfsDirectoryFactory;
-import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrResourceLoader;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-class SolrRecordWriter<K, V> extends RecordWriter<K, V> {
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  public final static List<String> allowedConfigDirectories = new ArrayList<>(
-      Arrays.asList(new String[] { "conf", "lib", "solr.xml", "core1" }));
-
-  public final static Set<String> requiredConfigDirectories = new HashSet<>();
-  
-  static {
-    requiredConfigDirectories.add("conf");
-  }
-
-  /**
-   * Return the list of directories names that may be included in the
-   * configuration data passed to the tasks.
-   * 
-   * @return an UnmodifiableList of directory names
-   */
-  public static List<String> getAllowedConfigDirectories() {
-    return Collections.unmodifiableList(allowedConfigDirectories);
-  }
-
-  /**
-   * check if the passed in directory is required to be present in the
-   * configuration data set.
-   * 
-   * @param directory The directory to check
-   * @return true if the directory is required.
-   */
-  public static boolean isRequiredConfigDirectory(final String directory) {
-    return requiredConfigDirectories.contains(directory);
-  }
-
-  /** The path that the final index will be written to */
-
-  /** The location in a local temporary directory that the index is built in. */
-
-//  /**
-//   * If true, create a zip file of the completed index in the final storage
-//   * location A .zip will be appended to the final output name if it is not
-//   * already present.
-//   */
-//  private boolean outputZipFile = false;
-
-  private final HeartBeater heartBeater;
-  private final BatchWriter batchWriter;
-  private final List<SolrInputDocument> batch;
-  private final int batchSize;
-  private long numDocsWritten = 0;
-  private long nextLogTime = System.nanoTime();
-
-  private static HashMap<TaskID, Reducer<?,?,?,?>.Context> contextMap = new HashMap<>();
-  
-  public SolrRecordWriter(TaskAttemptContext context, Path outputShardDir, int batchSize) {
-    this.batchSize = batchSize;
-    this.batch = new ArrayList<>(batchSize);
-    Configuration conf = context.getConfiguration();
-
-    // setLogLevel("org.apache.solr.core", "WARN");
-    // setLogLevel("org.apache.solr.update", "WARN");
-
-    heartBeater = new HeartBeater(context);
-    try {
-      heartBeater.needHeartBeat();
-
-      Path solrHomeDir = SolrRecordWriter.findSolrConfig(conf);
-      FileSystem fs = outputShardDir.getFileSystem(conf);
-      EmbeddedSolrServer solr = createEmbeddedSolrServer(solrHomeDir, fs, outputShardDir);
-      batchWriter = new BatchWriter(solr, batchSize,
-          context.getTaskAttemptID().getTaskID(),
-          SolrOutputFormat.getSolrWriterThreadCount(conf),
-          SolrOutputFormat.getSolrWriterQueueSize(conf));
-
-    } catch (Exception e) {
-      throw new IllegalStateException(String.format(Locale.ENGLISH,
-          "Failed to initialize record writer for %s, %s", context.getJobName(), conf
-              .get("mapred.task.id")), e);
-    } finally {
-      heartBeater.cancelHeartBeat();
-    }
-  }
-
-  public static EmbeddedSolrServer createEmbeddedSolrServer(Path solrHomeDir, FileSystem fs, Path outputShardDir)
-      throws IOException {
-
-    LOG.info("Creating embedded Solr server with solrHomeDir: " + solrHomeDir + ", fs: " + fs + ", outputShardDir: " + outputShardDir);
-
-    Path solrDataDir = new Path(outputShardDir, "data");
-
-    String dataDirStr = solrDataDir.toUri().toString();
-
-    SolrResourceLoader loader = new SolrResourceLoader(Paths.get(solrHomeDir.toString()), null, null);
-
-    LOG.info(String
-        .format(Locale.ENGLISH, 
-            "Constructed instance information solr.home %s (%s), instance dir %s, conf dir %s, writing index to solr.data.dir %s, with permdir %s",
-            solrHomeDir, solrHomeDir.toUri(), loader.getInstancePath(),
-            loader.getConfigDir(), dataDirStr, outputShardDir));
-
-    // TODO: This is fragile and should be well documented
-    System.setProperty("solr.directoryFactory", HdfsDirectoryFactory.class.getName()); 
-    System.setProperty("solr.lock.type", DirectoryFactory.LOCK_TYPE_HDFS);
-    System.setProperty("solr.hdfs.nrtcachingdirectory", "false");
-    System.setProperty("solr.hdfs.blockcache.enabled", "false");
-    System.setProperty("solr.autoCommit.maxTime", "600000");
-    System.setProperty("solr.autoSoftCommit.maxTime", "-1");
-    
-    CoreContainer container = new CoreContainer(loader);
-    container.load();
-    SolrCore core = container.create("", ImmutableMap.of(CoreDescriptor.CORE_DATADIR, dataDirStr));
-    
-    if (!(core.getDirectoryFactory() instanceof HdfsDirectoryFactory)) {
-      throw new UnsupportedOperationException(
-          "Invalid configuration. Currently, the only DirectoryFactory supported is "
-              + HdfsDirectoryFactory.class.getSimpleName());
-    }
-
-    EmbeddedSolrServer solr = new EmbeddedSolrServer(container, "");
-    return solr;
-  }
-
-  public static void incrementCounter(TaskID taskId, String groupName, String counterName, long incr) {
-    Reducer<?,?,?,?>.Context context = contextMap.get(taskId);
-    if (context != null) {
-      context.getCounter(groupName, counterName).increment(incr);
-    }
-  }
-
-  public static void incrementCounter(TaskID taskId, Enum<?> counterName, long incr) {
-    Reducer<?,?,?,?>.Context context = contextMap.get(taskId);
-    if (context != null) {
-      context.getCounter(counterName).increment(incr);
-    }
-  }
-
-  public static void addReducerContext(Reducer<?,?,?,?>.Context context) {
-    TaskID taskID = context.getTaskAttemptID().getTaskID();
-    contextMap.put(taskID, context);
-  }
-
-  public static Path findSolrConfig(Configuration conf) throws IOException {
-    // FIXME when mrunit supports the new cache apis
-    //URI[] localArchives = context.getCacheArchives();
-    Path[] localArchives = DistributedCache.getLocalCacheArchives(conf);
-    for (Path unpackedDir : localArchives) {
-      if (unpackedDir.getName().equals(SolrOutputFormat.getZipName(conf))) {
-        LOG.info("Using this unpacked directory as solr home: {}", unpackedDir);
-        return unpackedDir;
-      }
-    }
-    throw new IOException(String.format(Locale.ENGLISH,
-        "No local cache archives, where is %s:%s", SolrOutputFormat
-            .getSetupOk(), SolrOutputFormat.getZipName(conf)));
-  }
-
-  /**
-   * Write a record. This method accumulates records in to a batch, and when
-   * {@link #batchSize} items are present flushes it to the indexer. The writes
-   * can take a substantial amount of time, depending on {@link #batchSize}. If
-   * there is heavy disk contention the writes may take more than the 600 second
-   * default timeout.
-   */
-  @Override
-  public void write(K key, V value) throws IOException {
-    heartBeater.needHeartBeat();
-    try {
-      try {
-        SolrInputDocumentWritable sidw = (SolrInputDocumentWritable) value;
-        batch.add(sidw.getSolrInputDocument());
-        if (batch.size() >= batchSize) {
-          batchWriter.queueBatch(batch);
-          numDocsWritten += batch.size();
-          if (System.nanoTime() >= nextLogTime) {
-            LOG.info("docsWritten: {}", numDocsWritten);
-            nextLogTime += TimeUnit.NANOSECONDS.convert(10, TimeUnit.SECONDS);
-          }
-          batch.clear();
-        }
-      } catch (SolrServerException e) {
-        throw new IOException(e);
-      }
-    } finally {
-      heartBeater.cancelHeartBeat();
-    }
-
-  }
-
-  @Override
-  public void close(TaskAttemptContext context) throws IOException, InterruptedException {
-    if (context != null) {
-      heartBeater.setProgress(context);
-    }
-    try {
-      heartBeater.needHeartBeat();
-      if (batch.size() > 0) {
-        batchWriter.queueBatch(batch);
-        numDocsWritten += batch.size();
-        batch.clear();
-      }
-      LOG.info("docsWritten: {}", numDocsWritten);
-      batchWriter.close(context);
-//      if (outputZipFile) {
-//        context.setStatus("Writing Zip");
-//        packZipFile(); // Written to the perm location
-//      } else {
-//        context.setStatus("Copying Index");
-//        fs.completeLocalOutput(perm, temp); // copy to dfs
-//      }
-    } catch (Exception e) {
-      if (e instanceof IOException) {
-        throw (IOException) e;
-      }
-      throw new IOException(e);
-    } finally {
-      heartBeater.cancelHeartBeat();
-      heartBeater.close();
-//      File tempFile = new File(temp.toString());
-//      if (tempFile.exists()) {
-//        FileUtils.forceDelete(new File(temp.toString()));
-//      }
-    }
-
-    context.setStatus("Done");
-  }
-
-//  private void packZipFile() throws IOException {
-//    FSDataOutputStream out = null;
-//    ZipOutputStream zos = null;
-//    int zipCount = 0;
-//    LOG.info("Packing zip file for " + perm);
-//    try {
-//      out = fs.create(perm, false);
-//      zos = new ZipOutputStream(out);
-//
-//      String name = perm.getName().replaceAll(".zip$", "");
-//      LOG.info("adding index directory" + temp);
-//      zipCount = zipDirectory(conf, zos, name, temp.toString(), temp);
-//      /**
-//      for (String configDir : allowedConfigDirectories) {
-//        if (!isRequiredConfigDirectory(configDir)) {
-//          continue;
-//        }
-//        final Path confPath = new Path(solrHome, configDir);
-//        LOG.info("adding configdirectory" + confPath);
-//
-//        zipCount += zipDirectory(conf, zos, name, solrHome.toString(), confPath);
-//      }
-//      **/
-//    } catch (Throwable ohFoo) {
-//      LOG.error("packZipFile exception", ohFoo);
-//      if (ohFoo instanceof RuntimeException) {
-//        throw (RuntimeException) ohFoo;
-//      }
-//      if (ohFoo instanceof IOException) {
-//        throw (IOException) ohFoo;
-//      }
-//      throw new IOException(ohFoo);
-//
-//    } finally {
-//      if (zos != null) {
-//        if (zipCount == 0) { // If no entries were written, only close out, as
-//                             // the zip will throw an error
-//          LOG.error("No entries written to zip file " + perm);
-//          fs.delete(perm, false);
-//          // out.close();
-//        } else {
-//          LOG.info(String.format("Wrote %d items to %s for %s", zipCount, perm,
-//              temp));
-//          zos.close();
-//        }
-//      }
-//    }
-//  }
-//
-//  /**
-//   * Write a file to a zip output stream, removing leading path name components
-//   * from the actual file name when creating the zip file entry.
-//   * 
-//   * The entry placed in the zip file is <code>baseName</code>/
-//   * <code>relativePath</code>, where <code>relativePath</code> is constructed
-//   * by removing a leading <code>root</code> from the path for
-//   * <code>itemToZip</code>.
-//   * 
-//   * If <code>itemToZip</code> is an empty directory, it is ignored. If
-//   * <code>itemToZip</code> is a directory, the contents of the directory are
-//   * added recursively.
-//   * 
-//   * @param zos The zip output stream
-//   * @param baseName The base name to use for the file name entry in the zip
-//   *        file
-//   * @param root The path to remove from <code>itemToZip</code> to make a
-//   *        relative path name
-//   * @param itemToZip The path to the file to be added to the zip file
-//   * @return the number of entries added
-//   * @throws IOException
-//   */
-//  static public int zipDirectory(final Configuration conf,
-//      final ZipOutputStream zos, final String baseName, final String root,
-//      final Path itemToZip) throws IOException {
-//    LOG
-//        .info(String
-//            .format("zipDirectory: %s %s %s", baseName, root, itemToZip));
-//    LocalFileSystem localFs = FileSystem.getLocal(conf);
-//    int count = 0;
-//
-//    final FileStatus itemStatus = localFs.getFileStatus(itemToZip);
-//    if (itemStatus.isDirectory()) {
-//      final FileStatus[] statai = localFs.listStatus(itemToZip);
-//
-//      // Add a directory entry to the zip file
-//      final String zipDirName = relativePathForZipEntry(itemToZip.toUri()
-//          .getPath(), baseName, root);
-//      final ZipEntry dirZipEntry = new ZipEntry(zipDirName
-//          + Path.SEPARATOR_CHAR);
-//      LOG.info(String.format("Adding directory %s to zip", zipDirName));
-//      zos.putNextEntry(dirZipEntry);
-//      zos.closeEntry();
-//      count++;
-//
-//      if (statai == null || statai.length == 0) {
-//        LOG.info(String.format("Skipping empty directory %s", itemToZip));
-//        return count;
-//      }
-//      for (FileStatus status : statai) {
-//        count += zipDirectory(conf, zos, baseName, root, status.getPath());
-//      }
-//      LOG.info(String.format("Wrote %d entries for directory %s", count,
-//          itemToZip));
-//      return count;
-//    }
-//
-//    final String inZipPath = relativePathForZipEntry(itemToZip.toUri()
-//        .getPath(), baseName, root);
-//
-//    if (inZipPath.length() == 0) {
-//      LOG.warn(String.format("Skipping empty zip file path for %s (%s %s)",
-//          itemToZip, root, baseName));
-//      return 0;
-//    }
-//
-//    // Take empty files in case the place holder is needed
-//    FSDataInputStream in = null;
-//    try {
-//      in = localFs.open(itemToZip);
-//      final ZipEntry ze = new ZipEntry(inZipPath);
-//      ze.setTime(itemStatus.getModificationTime());
-//      // Comments confuse looking at the zip file
-//      // ze.setComment(itemToZip.toString());
-//      zos.putNextEntry(ze);
-//
-//      IOUtils.copyBytes(in, zos, conf, false);
-//      zos.closeEntry();
-//      LOG.info(String.format("Wrote %d entries for file %s", count, itemToZip));
-//      return 1;
-//    } finally {
-//      in.close();
-//    }
-//
-//  }
-//
-//  static String relativePathForZipEntry(final String rawPath,
-//      final String baseName, final String root) {
-//    String relativePath = rawPath.replaceFirst(Pattern.quote(root.toString()),
-//        "");
-//    LOG.info(String.format("RawPath %s, baseName %s, root %s, first %s",
-//        rawPath, baseName, root, relativePath));
-//
-//    if (relativePath.startsWith(Path.SEPARATOR)) {
-//      relativePath = relativePath.substring(1);
-//    }
-//    LOG.info(String.format(
-//        "RawPath %s, baseName %s, root %s, post leading slash %s", rawPath,
-//        baseName, root, relativePath));
-//    if (relativePath.isEmpty()) {
-//      LOG.warn(String.format(
-//          "No data after root (%s) removal from raw path %s", root, rawPath));
-//      return baseName;
-//    }
-//    // Construct the path that will be written to the zip file, including
-//    // removing any leading '/' characters
-//    String inZipPath = baseName + Path.SEPARATOR_CHAR + relativePath;
-//
-//    LOG.info(String.format("RawPath %s, baseName %s, root %s, inZip 1 %s",
-//        rawPath, baseName, root, inZipPath));
-//    if (inZipPath.startsWith(Path.SEPARATOR)) {
-//      inZipPath = inZipPath.substring(1);
-//    }
-//    LOG.info(String.format("RawPath %s, baseName %s, root %s, inZip 2 %s",
-//        rawPath, baseName, root, inZipPath));
-//
-//    return inZipPath;
-//
-//  }
-//  
-  /*
-  static boolean setLogLevel(String packageName, String level) {
-    Log logger = LogFactory.getLog(packageName);
-    if (logger == null) {
-      return false;
-    }
-    // look for: org.apache.commons.logging.impl.SLF4JLocationAwareLog
-    LOG.warn("logger class:"+logger.getClass().getName());
-    if (logger instanceof Log4JLogger) {
-      process(((Log4JLogger) logger).getLogger(), level);
-      return true;
-    }
-    if (logger instanceof Jdk14Logger) {
-      process(((Jdk14Logger) logger).getLogger(), level);
-      return true;
-    }
-    return false;
-  }
-
-  public static void process(org.apache.log4j.Logger log, String level) {
-    if (level != null) {
-      log.setLevel(org.apache.log4j.Level.toLevel(level));
-    }
-  }
-
-  public static void process(java.util.logging.Logger log, String level) {
-    if (level != null) {
-      log.setLevel(java.util.logging.Level.parse(level));
-    }
-  }
-  */
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrReducer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrReducer.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrReducer.java
deleted file mode 100644
index 5e10c97..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/SolrReducer.java
+++ /dev/null
@@ -1,188 +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.hadoop;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.Iterator;
-
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Reducer;
-import org.apache.hadoop.util.ReflectionUtils;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.hadoop.dedup.NoChangeUpdateConflictResolver;
-import org.apache.solr.hadoop.dedup.RetainMostRecentUpdateConflictResolver;
-import org.apache.solr.hadoop.dedup.UpdateConflictResolver;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.kitesdk.morphline.api.ExceptionHandler;
-import org.kitesdk.morphline.base.FaultTolerance;
-import com.google.common.base.Preconditions;
-
-/**
- * This class loads the mapper's SolrInputDocuments into one EmbeddedSolrServer
- * per reducer. Each such reducer and Solr server can be seen as a (micro)
- * shard. The Solr servers store their data in HDFS.
- * 
- * More specifically, this class consumes a list of &lt;docId, SolrInputDocument&gt;
- * pairs, sorted by docId, and sends them to an embedded Solr server to generate
- * a Solr index shard from the documents.
- */
-public class SolrReducer extends Reducer<Text, SolrInputDocumentWritable, Text, SolrInputDocumentWritable> {
-
-  private UpdateConflictResolver resolver;
-  private HeartBeater heartBeater;
-  private ExceptionHandler exceptionHandler;
-  
-  public static final String UPDATE_CONFLICT_RESOLVER = SolrReducer.class.getName() + ".updateConflictResolver";
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
-  @Override
-  protected void setup(Context context) throws IOException, InterruptedException {
-    verifyPartitionAssignment(context);    
-    SolrRecordWriter.addReducerContext(context);
-    Class<? extends UpdateConflictResolver> resolverClass = context.getConfiguration().getClass(
-        UPDATE_CONFLICT_RESOLVER, RetainMostRecentUpdateConflictResolver.class, UpdateConflictResolver.class);
-    
-    this.resolver = ReflectionUtils.newInstance(resolverClass, context.getConfiguration());
-    /*
-     * Note that ReflectionUtils.newInstance() above also implicitly calls
-     * resolver.configure(context.getConfiguration()) if the resolver
-     * implements org.apache.hadoop.conf.Configurable
-     */
-
-    this.exceptionHandler = new FaultTolerance(
-        context.getConfiguration().getBoolean(FaultTolerance.IS_PRODUCTION_MODE, false), 
-        context.getConfiguration().getBoolean(FaultTolerance.IS_IGNORING_RECOVERABLE_EXCEPTIONS, false),
-        context.getConfiguration().get(FaultTolerance.RECOVERABLE_EXCEPTION_CLASSES, SolrServerException.class.getName()));
-    
-    this.heartBeater = new HeartBeater(context);
-  }
-  
-  protected void reduce(Text key, Iterable<SolrInputDocumentWritable> values, Context context) throws IOException, InterruptedException {
-    heartBeater.needHeartBeat();
-    try {
-      values = resolve(key, values, context);
-      super.reduce(key, values, context);
-    } catch (Exception e) {
-      LOG.error("Unable to process key " + key, e);
-      context.getCounter(getClass().getName() + ".errors", e.getClass().getName()).increment(1);
-      exceptionHandler.handleException(e, null);
-    } finally {
-      heartBeater.cancelHeartBeat();
-    }
-  }
-
-  private Iterable<SolrInputDocumentWritable> resolve(
-      final Text key, final Iterable<SolrInputDocumentWritable> values, final Context context) {
-    
-    if (resolver instanceof NoChangeUpdateConflictResolver) {
-      return values; // fast path
-    }
-    return new Iterable<SolrInputDocumentWritable>() {
-      @Override
-      public Iterator<SolrInputDocumentWritable> iterator() {
-        return new WrapIterator(resolver.orderUpdates(key, new UnwrapIterator(values.iterator()), context));
-      }
-    };
-  }
-    
-  @Override
-  protected void cleanup(Context context) throws IOException, InterruptedException {
-    heartBeater.close();
-    super.cleanup(context);
-  }
-
-  /*
-   * Verify that if a mappers's partitioner sends an item to partition X it implies that said item
-   * is sent to the reducer with taskID == X. This invariant is currently required for Solr
-   * documents to end up in the right Solr shard.
-   */
-  private void verifyPartitionAssignment(Context context) {
-    if ("true".equals(System.getProperty("verifyPartitionAssignment", "true"))) {
-      String partitionStr = context.getConfiguration().get("mapred.task.partition");
-      if (partitionStr == null) {
-        partitionStr = context.getConfiguration().get("mapreduce.task.partition");
-      }
-      int partition = Integer.parseInt(partitionStr);
-      int taskId = context.getTaskAttemptID().getTaskID().getId();
-      Preconditions.checkArgument(partition == taskId, 
-          "mapred.task.partition: " + partition + " not equal to reducer taskId: " + taskId);      
-    }
-  }
-  
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private static final class WrapIterator implements Iterator<SolrInputDocumentWritable> {
-    
-    private Iterator<SolrInputDocument> parent;
-
-    private WrapIterator(Iterator<SolrInputDocument> parent) {
-      this.parent = parent;
-    }
-
-    @Override
-    public boolean hasNext() {
-      return parent.hasNext();
-    }
-
-    @Override
-    public SolrInputDocumentWritable next() {
-      return new SolrInputDocumentWritable(parent.next());
-    }
-
-    @Override
-    public void remove() {
-      throw new UnsupportedOperationException();
-    }
-
-  }
-
-
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private static final class UnwrapIterator implements Iterator<SolrInputDocument> {
-    
-    private Iterator<SolrInputDocumentWritable> parent;
-
-    private UnwrapIterator(Iterator<SolrInputDocumentWritable> parent) {
-      this.parent = parent;
-    }
-
-    @Override
-    public boolean hasNext() {
-      return parent.hasNext();
-    }
-
-    @Override
-    public SolrInputDocument next() {
-      return parent.next().getSolrInputDocument();
-    }
-
-    @Override
-    public void remove() {
-      throw new UnsupportedOperationException();
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/ToolRunnerHelpFormatter.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/ToolRunnerHelpFormatter.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/ToolRunnerHelpFormatter.java
deleted file mode 100644
index 7570493..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/ToolRunnerHelpFormatter.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.hadoop;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
-
-import net.sourceforge.argparse4j.ArgumentParsers;
-import net.sourceforge.argparse4j.helper.ASCIITextWidthCounter;
-import net.sourceforge.argparse4j.helper.TextHelper;
-
-import org.apache.hadoop.util.ToolRunner;
-
-/**
- * Nicely formats the output of
- * {@link ToolRunner#printGenericCommandUsage(PrintStream)} with the same look and feel that argparse4j uses for help text.
- */
-class ToolRunnerHelpFormatter {
-  
-  public static String getGenericCommandUsage() {
-    ByteArrayOutputStream bout = new ByteArrayOutputStream();
-    String msg;
-    try {
-      ToolRunner.printGenericCommandUsage(new PrintStream(bout, true, "UTF-8"));
-      msg = new String(bout.toByteArray(), StandardCharsets.UTF_8);
-    } catch (UnsupportedEncodingException e) {
-      throw new RuntimeException(e); // unreachable
-    }
-    
-    BufferedReader reader = new BufferedReader(new StringReader(msg));    
-    StringBuilder result = new StringBuilder();
-    while (true) {
-      String line;
-      try {
-        line = reader.readLine();
-      } catch (IOException e) {
-        throw new RuntimeException(e); // unreachable
-      }
-      
-      if (line == null) {
-        return result.toString(); // EOS
-      }
-      
-      if (!line.startsWith("-")) {
-        result.append(line + "\n");
-      } else {
-        line = line.trim();
-        int i = line.indexOf("  ");
-        if (i < 0) {
-          i = line.indexOf('\t');
-        }
-        if (i < 0) {
-          result.append(line + "\n");          
-        } else {
-          String title = line.substring(0, i).trim();
-          if (title.length() >= 3 && Character.isLetterOrDigit(title.charAt(1)) && Character.isLetterOrDigit(title.charAt(2))) {
-            title = "-" + title; // prefer "--libjars" long arg style over "-libjars" style but retain "-D foo" short arg style        
-          }
-          String help = line.substring(i, line.length()).trim();
-          StringWriter strWriter = new StringWriter(); 
-          PrintWriter writer = new PrintWriter(strWriter, true);
-          TextHelper.printHelp(writer, title, help, new ASCIITextWidthCounter(), ArgumentParsers.getFormatWidth());
-          result.append(strWriter.toString());          
-        }        
-      }
-    }
-  }
-}
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/TreeMergeMapper.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/TreeMergeMapper.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/TreeMergeMapper.java
deleted file mode 100644
index ee34a9c..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/TreeMergeMapper.java
+++ /dev/null
@@ -1,46 +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.hadoop;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Mapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * For the meat see {@link TreeMergeOutputFormat}.
- */
-public class TreeMergeMapper extends Mapper<LongWritable, Text, Text, NullWritable> {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  public static final String MAX_SEGMENTS_ON_TREE_MERGE = "maxSegmentsOnTreeMerge";
-
-  public static final String SOLR_SHARD_NUMBER = "_solrShardNumber";
-
-  @Override
-  protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
-    LOGGER.trace("map key: {}, value: {}", key, value);
-    context.write(value, NullWritable.get());
-  }
-  
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/TreeMergeOutputFormat.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/TreeMergeOutputFormat.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/TreeMergeOutputFormat.java
deleted file mode 100644
index cac57c3..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/TreeMergeOutputFormat.java
+++ /dev/null
@@ -1,201 +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.hadoop;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.lang.invoke.MethodHandles;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-import com.google.common.base.Preconditions;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.RecordWriter;
-import org.apache.hadoop.mapreduce.TaskAttemptContext;
-import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.index.IndexWriterConfig.OpenMode;
-import org.apache.lucene.index.LogMergePolicy;
-import org.apache.lucene.index.MergePolicy;
-import org.apache.lucene.index.TieredMergePolicy;
-import org.apache.lucene.misc.IndexMergeTool;
-import org.apache.lucene.store.Directory;
-import org.apache.solr.store.hdfs.HdfsDirectory;
-import org.apache.solr.update.SolrIndexWriter;
-import org.apache.solr.util.RTimer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * See {@link IndexMergeTool}.
- */
-public class TreeMergeOutputFormat extends FileOutputFormat<Text, NullWritable> {
-  private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  @Override
-  public RecordWriter getRecordWriter(TaskAttemptContext context) throws IOException {
-    Utils.getLogConfigFile(context.getConfiguration());
-    Path workDir = getDefaultWorkFile(context, "");
-    return new TreeMergeRecordWriter(context, workDir);
-  }
-  
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private static final class TreeMergeRecordWriter extends RecordWriter<Text,NullWritable> {
-    
-    private final Path workDir;
-    private final List<Path> shards = new ArrayList();
-    private final HeartBeater heartBeater;
-    private final TaskAttemptContext context;
-    
-    private static final Logger LOG = log;
-
-    public TreeMergeRecordWriter(TaskAttemptContext context, Path workDir) {
-      this.workDir = new Path(workDir, "data/index");
-      this.heartBeater = new HeartBeater(context);
-      this.context = context;
-    }
-    
-    @Override
-    public void write(Text key, NullWritable value) {
-      LOG.info("map key: {}", key);
-      heartBeater.needHeartBeat();
-      try {
-        Path path = new Path(key.toString());
-        shards.add(path);
-      } finally {
-        heartBeater.cancelHeartBeat();
-      }
-    }
-    
-    @Override
-    public void close(TaskAttemptContext context) throws IOException {
-      LOG.debug("Task " + context.getTaskAttemptID() + " merging into dstDir: " + workDir + ", srcDirs: " + shards);
-      writeShardNumberFile(context);      
-      heartBeater.needHeartBeat();
-      try {
-        Directory mergedIndex = new HdfsDirectory(workDir, context.getConfiguration());
-        
-        // TODO: shouldn't we pull the Version from the solrconfig.xml?
-        IndexWriterConfig writerConfig = new IndexWriterConfig(null)
-            .setOpenMode(OpenMode.CREATE).setUseCompoundFile(false)
-            //.setMergePolicy(mergePolicy) // TODO: grab tuned MergePolicy from solrconfig.xml?
-            //.setMergeScheduler(...) // TODO: grab tuned MergeScheduler from solrconfig.xml?
-            ;
-          
-        if (LOG.isDebugEnabled()) {
-          writerConfig.setInfoStream(System.out);
-        }
-//        writerConfig.setRAMBufferSizeMB(100); // improve performance
-//        writerConfig.setMaxThreadStates(1);
-        
-        // disable compound file to improve performance
-        // also see http://lucene.472066.n3.nabble.com/Questions-on-compound-file-format-td489105.html
-        // also see defaults in SolrIndexConfig
-        MergePolicy mergePolicy = writerConfig.getMergePolicy();
-        LOG.debug("mergePolicy was: {}", mergePolicy);
-        if (mergePolicy instanceof TieredMergePolicy) {
-          ((TieredMergePolicy) mergePolicy).setNoCFSRatio(0.0);
-//          ((TieredMergePolicy) mergePolicy).setMaxMergeAtOnceExplicit(10000);          
-//          ((TieredMergePolicy) mergePolicy).setMaxMergeAtOnce(10000);       
-//          ((TieredMergePolicy) mergePolicy).setSegmentsPerTier(10000);
-        } else if (mergePolicy instanceof LogMergePolicy) {
-          ((LogMergePolicy) mergePolicy).setNoCFSRatio(0.0);
-        }
-        LOG.info("Using mergePolicy: {}", mergePolicy);
-        
-        IndexWriter writer = new IndexWriter(mergedIndex, writerConfig);
-        
-        Directory[] indexes = new Directory[shards.size()];
-        for (int i = 0; i < shards.size(); i++) {
-          indexes[i] = new HdfsDirectory(shards.get(i), context.getConfiguration());
-        }
-
-        context.setStatus("Logically merging " + shards.size() + " shards into one shard");
-        LOG.info("Logically merging " + shards.size() + " shards into one shard: " + workDir);
-        RTimer timer = new RTimer();
-        
-        writer.addIndexes(indexes); 
-        // TODO: avoid intermediate copying of files into dst directory; rename the files into the dir instead (cp -> rename) 
-        // This can improve performance and turns this phase into a true "logical" merge, completing in constant time.
-        // See https://issues.apache.org/jira/browse/LUCENE-4746
-
-        timer.stop();
-        if (LOG.isDebugEnabled()) {
-          context.getCounter(SolrCounters.class.getName(), SolrCounters.LOGICAL_TREE_MERGE_TIME.toString()).increment((long) timer.getTime());
-        }
-        LOG.info("Logical merge took {}ms", timer.getTime());
-        int maxSegments = context.getConfiguration().getInt(TreeMergeMapper.MAX_SEGMENTS_ON_TREE_MERGE, Integer.MAX_VALUE);
-        context.setStatus("Optimizing Solr: forcing mtree merge down to " + maxSegments + " segments");
-        LOG.info("Optimizing Solr: forcing tree merge down to {} segments", maxSegments);
-        timer = new RTimer();
-        if (maxSegments < Integer.MAX_VALUE) {
-          writer.forceMerge(maxSegments);
-          // TODO: consider perf enhancement for no-deletes merges: bulk-copy the postings data 
-          // see http://lucene.472066.n3.nabble.com/Experience-with-large-merge-factors-tp1637832p1647046.html
-        }
-        timer.stop();
-        if (LOG.isDebugEnabled()) {
-          context.getCounter(SolrCounters.class.getName(), SolrCounters.PHYSICAL_TREE_MERGE_TIME.toString()).increment((long) timer.getTime());
-        }
-        LOG.info("Optimizing Solr: done forcing tree merge down to {} segments in {}ms", maxSegments, timer.getTime());
-
-        // Set Solr's commit data so the created index is usable by SolrCloud. E.g. Currently SolrCloud relies on
-        // commitTimeMSec in the commit data to do replication.
-        //TODO no commitUpdateCommand
-        SolrIndexWriter.setCommitData(writer, -1);
-
-        timer = new RTimer();
-        LOG.info("Optimizing Solr: Closing index writer");
-        writer.close();
-        LOG.info("Optimizing Solr: Done closing index writer in {}ms", timer.getTime());
-        context.setStatus("Done");
-      } finally {
-        heartBeater.cancelHeartBeat();
-        heartBeater.close();
-      }
-    }
-
-    /*
-     * For background see MapReduceIndexerTool.renameTreeMergeShardDirs()
-     * 
-     * Also see MapReduceIndexerTool.run() method where it uses
-     * NLineInputFormat.setNumLinesPerSplit(job, options.fanout)
-     */
-    private void writeShardNumberFile(TaskAttemptContext context) throws IOException {
-      Preconditions.checkArgument(shards.size() > 0);
-      String shard = shards.get(0).getParent().getParent().getName(); // move up from "data/index"
-      String taskId = shard.substring("part-m-".length(), shard.length()); // e.g. part-m-00001
-      int taskNum = Integer.parseInt(taskId);
-      int outputShardNum = taskNum / shards.size();
-      LOG.debug("Merging into outputShardNum: " + outputShardNum + " from taskId: " + taskId);
-      Path shardNumberFile = new Path(workDir.getParent().getParent(), TreeMergeMapper.SOLR_SHARD_NUMBER);
-      OutputStream out = shardNumberFile.getFileSystem(context.getConfiguration()).create(shardNumberFile);
-      Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8);
-      writer.write(String.valueOf(outputShardNum));
-      writer.flush();
-      writer.close();
-    }    
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/UnbufferedDataInputInputStream.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/UnbufferedDataInputInputStream.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/UnbufferedDataInputInputStream.java
deleted file mode 100644
index 83823ce..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/UnbufferedDataInputInputStream.java
+++ /dev/null
@@ -1,114 +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.hadoop;
-
-import java.io.BufferedReader;
-import java.io.DataInput;
-import java.io.DataInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-
-public class UnbufferedDataInputInputStream extends org.apache.solr.common.util.DataInputInputStream {
-  private final DataInputStream in;
-  
-  public UnbufferedDataInputInputStream(DataInput in) {
-    this.in = new DataInputStream(DataInputInputStream.constructInputStream(in));
-  }
-  
-  @Override
-  public void readFully(byte[] b) throws IOException {
-    in.readFully(b);
-  }
-
-  @Override
-  public void readFully(byte[] b, int off, int len) throws IOException {
-    in.readFully(b, off, len);
-  }
-
-  @Override
-  public int skipBytes(int n) throws IOException {
-    return in.skipBytes(n);
-  }
-
-  @Override
-  public boolean readBoolean() throws IOException {
-    return in.readBoolean();
-  }
-
-  @Override
-  public byte readByte() throws IOException {
-    return in.readByte();
-  }
-
-  @Override
-  public int readUnsignedByte() throws IOException {
-    return in.readUnsignedByte();
-  }
-
-  @Override
-  public short readShort() throws IOException {
-    return in.readShort();
-  }
-
-  @Override
-  public int readUnsignedShort() throws IOException {
-    return in.readUnsignedShort();
-  }
-
-  @Override
-  public char readChar() throws IOException {
-    return in.readChar();
-  }
-
-  @Override
-  public int readInt() throws IOException {
-    return in.readInt();
-  }
-
-  @Override
-  public long readLong() throws IOException {
-    return in.readLong();
-  }
-
-  @Override
-  public float readFloat() throws IOException {
-    return in.readFloat();
-  }
-
-  @Override
-  public double readDouble() throws IOException {
-    return in.readDouble();
-  }
-
-  @Override
-  public String readLine() throws IOException {
-    BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
-    return reader.readLine();
-  }
-
-  @Override
-  public String readUTF() throws IOException {
-    return in.readUTF();
-  }
-
-  @Override
-  public int read() throws IOException {
-    return in.read();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/Utils.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/Utils.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/Utils.java
deleted file mode 100644
index fa10154..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/Utils.java
+++ /dev/null
@@ -1,59 +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.hadoop;
-
-import java.io.File;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.log4j.PropertyConfigurator;
-
-import com.google.common.annotations.Beta;
-import org.apache.solr.common.util.SuppressForbidden;
-
-
-@Beta
-public final class Utils {
-  
-  private static final String LOG_CONFIG_FILE = "hadoop.log4j.configuration";
-  
-  public static void setLogConfigFile(File file, Configuration conf) {
-    conf.set(LOG_CONFIG_FILE, file.getName());
-  }
-
-  public static void getLogConfigFile(Configuration conf) {
-    String log4jPropertiesFile = conf.get(LOG_CONFIG_FILE);
-    configureLog4jProperties(log4jPropertiesFile);
-  }
-
-  @SuppressForbidden(reason = "method is specific to log4j")
-  public static void configureLog4jProperties(String log4jPropertiesFile) {
-    if (log4jPropertiesFile != null) {
-      PropertyConfigurator.configure(log4jPropertiesFile);
-    }
-  }
-
-  public static String getShortClassName(Class clazz) {
-    return getShortClassName(clazz.getName());
-  }
-  
-  public static String getShortClassName(String className) {
-    int i = className.lastIndexOf('.'); // regular class
-    int j = className.lastIndexOf('$'); // inner class
-    return className.substring(1 + Math.max(i, j));
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/ZooKeeperInspector.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/ZooKeeperInspector.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/ZooKeeperInspector.java
deleted file mode 100644
index 76928aa..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/ZooKeeperInspector.java
+++ /dev/null
@@ -1,213 +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.hadoop;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import com.google.common.io.Files;
-import org.apache.commons.io.FileUtils;
-import org.apache.solr.cloud.ZkController;
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.cloud.Aliases;
-import org.apache.solr.common.cloud.ClusterState;
-import org.apache.solr.common.cloud.DocCollection;
-import org.apache.solr.common.cloud.Replica;
-import org.apache.solr.common.cloud.Slice;
-import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.common.cloud.ZkConfigManager;
-import org.apache.solr.common.cloud.ZkCoreNodeProps;
-import org.apache.solr.common.cloud.ZkNodeProps;
-import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.common.util.StrUtils;
-import org.apache.zookeeper.KeeperException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Extracts SolrCloud information from ZooKeeper.
- */
-final class ZooKeeperInspector {
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
-  public List<List<String>> extractShardUrls(String zkHost, String collection) {
-
-    DocCollection docCollection = extractDocCollection(zkHost, collection);
-    List<Slice> slices = getSortedSlices(docCollection.getSlices());
-    List<List<String>> solrUrls = new ArrayList<>(slices.size());
-    for (Slice slice : slices) {
-      if (slice.getLeader() == null) {
-        throw new IllegalArgumentException("Cannot find SolrCloud slice leader. " +
-            "It looks like not all of your shards are registered in ZooKeeper yet");
-      }
-      Collection<Replica> replicas = slice.getReplicas();
-      List<String> urls = new ArrayList<>(replicas.size());
-      for (Replica replica : replicas) {
-        ZkCoreNodeProps props = new ZkCoreNodeProps(replica);
-        urls.add(props.getCoreUrl());
-      }
-      solrUrls.add(urls);
-    }
-    return solrUrls;
-  }
-  
-  public DocCollection extractDocCollection(String zkHost, String collection) {
-    if (collection == null) {
-      throw new IllegalArgumentException("collection must not be null");
-    }
-    SolrZkClient zkClient = getZkClient(zkHost);
-    
-    try (ZkStateReader zkStateReader = new ZkStateReader(zkClient)) {
-      try {
-        // first check for alias
-        collection = checkForAlias(zkClient, collection);
-        zkStateReader.createClusterStateWatchersAndUpdate();
-      } catch (Exception e) {
-        throw new IllegalArgumentException("Cannot find expected information for SolrCloud in ZooKeeper: " + zkHost, e);
-      }
-      
-      try {
-        return zkStateReader.getClusterState().getCollection(collection);
-      } catch (SolrException e) {
-        throw new IllegalArgumentException("Cannot find collection '" + collection + "' in ZooKeeper: " + zkHost, e);
-      }
-    } finally {
-      zkClient.close();
-    }    
-  }
-
-  public SolrZkClient getZkClient(String zkHost) {
-    if (zkHost == null) {
-      throw new IllegalArgumentException("zkHost must not be null");
-    }
-
-    SolrZkClient zkClient;
-    try {
-      zkClient = new SolrZkClient(zkHost, 30000);
-    } catch (Exception e) {
-      throw new IllegalArgumentException("Cannot connect to ZooKeeper: " + zkHost, e);
-    }
-    return zkClient;
-  }
-  
-  public List<Slice> getSortedSlices(Collection<Slice> slices) {
-    List<Slice> sorted = new ArrayList(slices);
-    Collections.sort(sorted, (slice1, slice2) -> {
-      Comparator c = new AlphaNumericComparator();
-      return c.compare(slice1.getName(), slice2.getName());
-    });
-    LOG.trace("Sorted slices: {}", sorted);
-    return sorted;
-  }
-
-  /**
-   * Returns config value given collection name
-   * Borrowed heavily from Solr's ZKController.
-   */
-  public String readConfigName(SolrZkClient zkClient, String collection)
-  throws KeeperException, InterruptedException {
-    if (collection == null) {
-      throw new IllegalArgumentException("collection must not be null");
-    }
-    String configName = null;
-
-    // first check for alias
-    collection = checkForAlias(zkClient, collection);
-    
-    String path = ZkStateReader.COLLECTIONS_ZKNODE + "/" + collection;
-    if (LOG.isInfoEnabled()) {
-      LOG.info("Load collection config from:" + path);
-    }
-    byte[] data = zkClient.getData(path, null, null, true);
-    
-    if(data != null) {
-      ZkNodeProps props = ZkNodeProps.load(data);
-      configName = props.getStr(ZkController.CONFIGNAME_PROP);
-    }
-    
-    if (configName != null && !zkClient.exists(ZkConfigManager.CONFIGS_ZKNODE + "/" + configName, true)) {
-      LOG.error("Specified config does not exist in ZooKeeper:" + configName);
-      throw new IllegalArgumentException("Specified config does not exist in ZooKeeper:"
-        + configName);
-    }
-
-    return configName;
-  }
-
-  private String checkForAlias(SolrZkClient zkClient, String collection)
-      throws KeeperException, InterruptedException {
-    byte[] aliasData = zkClient.getData(ZkStateReader.ALIASES, null, null, true);
-    Aliases aliases = ClusterState.load(aliasData);
-    String alias = aliases.getCollectionAlias(collection);
-    if (alias != null) {
-      List<String> aliasList = StrUtils.splitSmart(alias, ",", true);
-      if (aliasList.size() > 1) {
-        throw new IllegalArgumentException("collection cannot be an alias that maps to multiple collections");
-      }
-      collection = aliasList.get(0);
-    }
-    return collection;
-  }
-
-  /**
-   * Download and return the config directory from ZK
-   */
-  public File downloadConfigDir(SolrZkClient zkClient, String configName)
-  throws IOException, InterruptedException, KeeperException {
-    File dir = Files.createTempDir();
-    dir.deleteOnExit();
-    ZkConfigManager configManager = new ZkConfigManager(zkClient);
-    configManager.downloadConfigDir(configName, dir.toPath());
-    File confDir = new File(dir, "conf");
-    if (!confDir.isDirectory()) {
-      // create a temporary directory with "conf" subdir and mv the config in there.  This is
-      // necessary because of CDH-11188; solrctl does not generate nor accept directories with e.g.
-      // conf/solrconfig.xml which is necessary for proper solr operation.  This should work
-      // even if solrctl changes.
-      confDir = new File(Files.createTempDir().getAbsolutePath(), "conf");
-      confDir.getParentFile().deleteOnExit();
-      Files.move(dir, confDir);
-      dir = confDir.getParentFile();
-    }
-    FileUtils.writeStringToFile(new File(dir, "solr.xml"), "<solr><solrcloud></solrcloud></solr>", "UTF-8");
-    verifyConfigDir(confDir);
-    return dir;
-  }
-  
-  private void verifyConfigDir(File confDir) throws IOException {
-    File solrConfigFile = new File(confDir, "solrconfig.xml");
-    if (!solrConfigFile.exists()) {
-      throw new IOException("Detected invalid Solr config dir in ZooKeeper - Reason: File not found: "
-          + solrConfigFile.getName());
-    }
-    if (!solrConfigFile.isFile()) {
-      throw new IOException("Detected invalid Solr config dir in ZooKeeper - Reason: Not a file: "
-          + solrConfigFile.getName());
-    }
-    if (!solrConfigFile.canRead()) {
-      throw new IOException("Insufficient permissions to read file: " + solrConfigFile);
-    }    
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/NoChangeUpdateConflictResolver.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/NoChangeUpdateConflictResolver.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/NoChangeUpdateConflictResolver.java
deleted file mode 100644
index 0eae940..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/NoChangeUpdateConflictResolver.java
+++ /dev/null
@@ -1,36 +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.hadoop.dedup;
-
-import java.util.Iterator;
-
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Reducer.Context;
-import org.apache.solr.common.SolrInputDocument;
-
-/**
- * UpdateConflictResolver implementation that returns the solr documents in the
- * same order as they are received on input, i.e. without change in order.
- */
-public final class NoChangeUpdateConflictResolver implements UpdateConflictResolver {
-
-  @Override
-  public Iterator<SolrInputDocument> orderUpdates(Text key, Iterator<SolrInputDocument> updates, Context ctx) {    
-    return updates;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/RejectingUpdateConflictResolver.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/RejectingUpdateConflictResolver.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/RejectingUpdateConflictResolver.java
deleted file mode 100644
index 60efb4c..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/RejectingUpdateConflictResolver.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.hadoop.dedup;
-
-import java.util.Collections;
-import java.util.Iterator;
-
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Reducer.Context;
-import org.apache.solr.common.SolrInputDocument;
-
-/**
- * UpdateConflictResolver implementation that rejects multiple documents with
- * the same key with an exception.
- */
-public final class RejectingUpdateConflictResolver implements UpdateConflictResolver {
-
-  @Override
-  public Iterator<SolrInputDocument> orderUpdates(Text key, Iterator<SolrInputDocument> updates, Context ctx) {    
-    SolrInputDocument firstUpdate = null;
-    while (updates.hasNext()) {
-      if (firstUpdate == null) {
-        firstUpdate = updates.next();
-        assert firstUpdate != null;
-      } else {
-        throw new IllegalArgumentException("Update conflict! Documents with the same unique key are forbidden: "
-            + key);
-      }
-    }
-    assert firstUpdate != null;
-    return Collections.singletonList(firstUpdate).iterator();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/RetainMostRecentUpdateConflictResolver.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/RetainMostRecentUpdateConflictResolver.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/RetainMostRecentUpdateConflictResolver.java
deleted file mode 100644
index c2637ce..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/RetainMostRecentUpdateConflictResolver.java
+++ /dev/null
@@ -1,114 +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.hadoop.dedup;
-
-import java.lang.invoke.MethodHandles;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-
-import org.apache.hadoop.conf.Configurable;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Reducer.Context;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.hadoop.HdfsFileFieldNames;
-import org.apache.solr.hadoop.Utils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * UpdateConflictResolver implementation that ignores all but the most recent
- * document version, based on a configurable numeric Solr field, which defaults
- * to the file_last_modified timestamp.
- */
-public class RetainMostRecentUpdateConflictResolver implements UpdateConflictResolver, Configurable {
-
-  private Configuration conf;
-  private String orderByFieldName = ORDER_BY_FIELD_NAME_DEFAULT;
-  
-  public static final String ORDER_BY_FIELD_NAME_KEY = 
-      RetainMostRecentUpdateConflictResolver.class.getName() + ".orderByFieldName";
-  
-  public static final String ORDER_BY_FIELD_NAME_DEFAULT = HdfsFileFieldNames.FILE_LAST_MODIFIED;
-
-  public static final String COUNTER_GROUP = Utils.getShortClassName(RetainMostRecentUpdateConflictResolver.class);
-  public static final String DUPLICATES_COUNTER_NAME = "Number of documents ignored as duplicates";
-  public static final String OUTDATED_COUNTER_NAME =   "Number of documents ignored as outdated";
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
-  @Override
-  public void setConf(Configuration conf) {
-    this.conf = conf;
-    this.orderByFieldName = conf.get(ORDER_BY_FIELD_NAME_KEY, orderByFieldName);
-  }
-
-  @Override
-  public Configuration getConf() {
-    return conf;
-  }
-  
-  protected String getOrderByFieldName() {
-    return orderByFieldName;
-  }
-  
-  @Override
-  public Iterator<SolrInputDocument> orderUpdates(Text key, Iterator<SolrInputDocument> updates, Context ctx) {    
-    return getMaximum(updates, getOrderByFieldName(), new SolrInputDocumentComparator.TimeStampComparator(), ctx);
-  }
-
-  /** Returns the most recent document among the colliding updates */
-  protected Iterator<SolrInputDocument> getMaximum(Iterator<SolrInputDocument> updates, String fieldName,
-      Comparator child, Context context) {
-    
-    SolrInputDocumentComparator comp = new SolrInputDocumentComparator(fieldName, child);
-    SolrInputDocument max = null;
-    long numDupes = 0;
-    long numOutdated = 0;
-    while (updates.hasNext()) {
-      SolrInputDocument next = updates.next(); 
-      assert next != null;
-      if (max == null) {
-        max = next;
-      } else {
-        int c = comp.compare(next, max);
-        if (c == 0) {
-          LOG.debug("Ignoring document version because it is a duplicate: {}", next);
-          numDupes++;
-        } else if (c > 0) {
-          LOG.debug("Ignoring document version because it is outdated: {}", max);
-          max = next;
-          numOutdated++;
-        } else {
-          LOG.debug("Ignoring document version because it is outdated: {}", next);        
-          numOutdated++;
-        }
-      }
-    }
-    
-    assert max != null;
-    if (numDupes > 0) {
-      context.getCounter(COUNTER_GROUP, DUPLICATES_COUNTER_NAME).increment(numDupes);
-    }
-    if (numOutdated > 0) {
-      context.getCounter(COUNTER_GROUP, OUTDATED_COUNTER_NAME).increment(numOutdated);
-    }
-    return Collections.singletonList(max).iterator();
-  }
-    
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/SolrInputDocumentComparator.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/SolrInputDocumentComparator.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/SolrInputDocumentComparator.java
deleted file mode 100644
index e8cfdbb..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/dedup/SolrInputDocumentComparator.java
+++ /dev/null
@@ -1,84 +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.hadoop.dedup;
-
-import java.util.Comparator;
-
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.SolrInputField;
-
-/**
- * Default mechanism of determining which of two Solr documents with the same
- * key is the more recent version.
- */
-public final class SolrInputDocumentComparator implements Comparator<SolrInputDocument> {
-  
-  private Comparator child;
-  private String fieldName;
-
-  SolrInputDocumentComparator(String fieldName, Comparator child) {
-    this.child = child;
-    this.fieldName = fieldName;
-  }
-
-  @Override
-  public int compare(SolrInputDocument doc1, SolrInputDocument doc2) {
-    SolrInputField f1 = doc1.getField(fieldName);
-    SolrInputField f2 = doc2.getField(fieldName);
-    if (f1 == f2) {
-      return 0;
-    } else if (f1 == null) {
-      return -1;
-    } else if (f2 == null) {
-      return 1;
-    }
-    
-    Object v1 = f1.getFirstValue();
-    Object v2 = f2.getFirstValue();          
-    return child.compare(v1, v2);
-  }
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  public static final class TimeStampComparator implements Comparator {
-
-    @Override
-    public int compare(Object v1, Object v2) {
-      if (v1 == v2) {
-        return 0;
-      } else if (v1 == null) {
-        return -1;
-      } else if (v2 == null) {
-        return 1;
-      }
-      long t1 = getLong(v1);
-      long t2 = getLong(v2);          
-      return (t1 < t2 ? -1 : (t1==t2 ? 0 : 1));
-    }
-    
-    private long getLong(Object v) {
-      if (v instanceof Long) {
-        return ((Long) v).longValue();
-      } else {
-        return Long.parseLong(v.toString());
-      }
-    }      
-    
-  }
-
-}


[36/73] [abbrv] lucene-solr:jira/solr-6203: fix typo in comment

Posted by cp...@apache.org.
fix typo in comment


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

Branch: refs/heads/jira/solr-6203
Commit: 40f43248fb9c1af34bd430f18306eebed0dee9ba
Parents: f1aef3d
Author: Mike McCandless <mi...@apache.org>
Authored: Sat Mar 25 06:21:29 2017 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Sat Mar 25 06:21:29 2017 -0400

----------------------------------------------------------------------
 lucene/core/src/java/org/apache/lucene/index/IndexWriter.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/40f43248/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
index aa28d99..899643a 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
@@ -4219,7 +4219,7 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
       }
     }
     
-    // If any error occured, throw it.
+    // If any error occurred, throw it.
     if (!suppressExceptions) {
       IOUtils.reThrow(th);
     }


[24/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/FileUtils.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/FileUtils.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/FileUtils.java
deleted file mode 100644
index e979d37..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/FileUtils.java
+++ /dev/null
@@ -1,140 +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.morphlines.solr;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.nio.file.Files;
-
-
-class FileUtils {
-
-  //-----------------------------------------------------------------------
-  /**
-   * Deletes a directory recursively. 
-   *
-   * @param directory  directory to delete
-   * @throws IOException in case deletion is unsuccessful
-   */
-  public static void deleteDirectory(File directory) throws IOException {
-      if (!directory.exists()) {
-          return;
-      }
-
-      if (!isSymlink(directory)) {
-          cleanDirectory(directory);
-      }
-
-      Files.delete(directory.toPath());
-  }
-
-  /**
-   * Determines whether the specified file is a Symbolic Link rather than an actual file.
-   * <p>
-   * Will not return true if there is a Symbolic Link anywhere in the path,
-   * only if the specific file is.
-   *
-   * @param file the file to check
-   * @return true if the file is a Symbolic Link
-   * @throws IOException if an IO error occurs while checking the file
-   * @since Commons IO 2.0
-   */
-  public static boolean isSymlink(File file) throws IOException {
-      if (file == null) {
-          throw new NullPointerException("File must not be null");
-      }
-//      if (FilenameUtils.isSystemWindows()) {
-      if (File.separatorChar == '\\') {
-          return false;
-      }
-      File fileInCanonicalDir = null;
-      if (file.getParent() == null) {
-          fileInCanonicalDir = file;
-      } else {
-          File canonicalDir = file.getParentFile().getCanonicalFile();
-          fileInCanonicalDir = new File(canonicalDir, file.getName());
-      }
-      
-      if (fileInCanonicalDir.getCanonicalFile().equals(fileInCanonicalDir.getAbsoluteFile())) {
-          return false;
-      } else {
-          return true;
-      }
-  }
-
-  /**
-   * Cleans a directory without deleting it.
-   *
-   * @param directory directory to clean
-   * @throws IOException in case cleaning is unsuccessful
-   */
-  public static void cleanDirectory(File directory) throws IOException {
-      if (!directory.exists()) {
-          String message = directory + " does not exist";
-          throw new IllegalArgumentException(message);
-      }
-
-      if (!directory.isDirectory()) {
-          String message = directory + " is not a directory";
-          throw new IllegalArgumentException(message);
-      }
-
-      File[] files = directory.listFiles();
-      if (files == null) {  // null if security restricted
-          throw new IOException("Failed to list contents of " + directory);
-      }
-
-      IOException exception = null;
-      for (File file : files) {
-          try {
-              forceDelete(file);
-          } catch (IOException ioe) {
-              exception = ioe;
-          }
-      }
-
-      if (null != exception) {
-          throw exception;
-      }
-  }
-  
-  //-----------------------------------------------------------------------
-  /**
-   * Deletes a file. If file is a directory, delete it and all sub-directories.
-   * <p>
-   * The difference between File.delete() and this method are:
-   * <ul>
-   * <li>A directory to be deleted does not have to be empty.</li>
-   * <li>You get exceptions when a file or directory cannot be deleted.
-   *      (java.io.File methods returns a boolean)</li>
-   * </ul>
-   *
-   * @param file  file or directory to delete, must not be <code>null</code>
-   * @throws NullPointerException if the directory is <code>null</code>
-   * @throws FileNotFoundException if the file was not found
-   * @throws IOException in case deletion is unsuccessful
-   */
-  public static void forceDelete(File file) throws IOException {
-      if (file.isDirectory()) {
-          deleteDirectory(file);
-      } else {
-          Files.delete(file.toPath());
-      }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/GenerateSolrSequenceKeyBuilder.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/GenerateSolrSequenceKeyBuilder.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/GenerateSolrSequenceKeyBuilder.java
deleted file mode 100644
index be002ef..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/GenerateSolrSequenceKeyBuilder.java
+++ /dev/null
@@ -1,143 +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.morphlines.solr;
-
-import java.security.SecureRandom;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Random;
-
-import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.schema.SchemaField;
-import org.kitesdk.morphline.api.Command;
-import org.kitesdk.morphline.api.CommandBuilder;
-import org.kitesdk.morphline.api.MorphlineContext;
-import org.kitesdk.morphline.api.MorphlineRuntimeException;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.AbstractCommand;
-import org.kitesdk.morphline.base.Fields;
-import org.kitesdk.morphline.base.Notifications;
-
-import com.typesafe.config.Config;
-
-/**
- * A command that assigns a record unique key that is the concatenation of the given
- * <code>baseIdField</code> record field, followed by a running count of the record number within
- * the current session. The count is reset to zero whenever a "startSession" notification is
- * received.
- * <p>
- * For example, assume a CSV file containing multiple records but no unique ids, and the
- * <code>baseIdField</code> field is the filesystem path of the file. Now this command can be used
- * to assign the following record values to Solr's unique key field:
- * <code>$path#0, $path#1, ... $path#N</code>.
- * <p>
- * The name of the unique key field is fetched from Solr's schema.xml file, as directed by the
- * <code>solrLocator</code> configuration parameter.
- */
-public final class GenerateSolrSequenceKeyBuilder implements CommandBuilder {
-
-  @Override
-  public Collection<String> getNames() {
-    return Arrays.asList(
-        "generateSolrSequenceKey", 
-        "sanitizeUniqueSolrKey" // old name (retained for backwards compatibility)
-    );
-  }
-
-  @Override
-  public Command build(Config config, Command parent, Command child, MorphlineContext context) {
-    return new GenerateSolrSequenceKey(this, config, parent, child, context);
-  }
-  
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private static final class GenerateSolrSequenceKey extends AbstractCommand {
-    
-    private final boolean preserveExisting;
-    private final String baseIdFieldName;
-    private final String uniqueKeyName;
-    private long recordCounter = 0;
-  
-    private final String idPrefix; // for load testing only; enables adding same document many times with a different unique key
-    private final Random randomIdPrefix; // for load testing only; enables adding same document many times with a different unique key
-
-    public GenerateSolrSequenceKey(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) {
-      super(builder, config, parent, child, context);
-      this.baseIdFieldName = getConfigs().getString(config, "baseIdField", Fields.BASE_ID);
-      this.preserveExisting = getConfigs().getBoolean(config, "preserveExisting", true);      
-      
-      Config solrLocatorConfig = getConfigs().getConfig(config, "solrLocator");
-      SolrLocator locator = new SolrLocator(solrLocatorConfig, context);
-      LOG.debug("solrLocator: {}", locator);
-      IndexSchema schema = locator.getIndexSchema();
-      SchemaField uniqueKey = schema.getUniqueKeyField();
-      uniqueKeyName = uniqueKey == null ? null : uniqueKey.getName();
-      
-      String tmpIdPrefix = getConfigs().getString(config, "idPrefix", null);  // for load testing only
-      Random tmpRandomIdPrefx = null;
-      if ("random".equals(tmpIdPrefix)) { // for load testing only
-        tmpRandomIdPrefx = new Random(new SecureRandom().nextLong());    
-        tmpIdPrefix = null;
-      }
-      idPrefix = tmpIdPrefix;
-      randomIdPrefix = tmpRandomIdPrefx;
-      validateArguments();
-    }
-
-    @Override
-    protected boolean doProcess(Record doc) {      
-      long num = recordCounter++;
-      // LOG.debug("record #{} id before sanitizing doc: {}", num, doc);
-      if (uniqueKeyName == null || (preserveExisting && doc.getFields().containsKey(uniqueKeyName))) {
-        ; // we must preserve the existing id
-      } else {
-        Object baseId = doc.getFirstValue(baseIdFieldName);
-        if (baseId == null) {
-          throw new MorphlineRuntimeException("Record field " + baseIdFieldName
-              + " must not be null as it is needed as a basis for a unique key for solr doc: " + doc);
-        }
-        doc.replaceValues(uniqueKeyName, baseId.toString() + "#" + num);          
-      }
-      
-      // for load testing only; enables adding same document many times with a different unique key
-      if (idPrefix != null) { 
-        String id = doc.getFirstValue(uniqueKeyName).toString();
-        id = idPrefix + id;
-        doc.replaceValues(uniqueKeyName, id);
-      } else if (randomIdPrefix != null) {
-        String id = doc.getFirstValue(uniqueKeyName).toString();
-        id = String.valueOf(Math.abs(randomIdPrefix.nextInt())) + "#" + id;
-        doc.replaceValues(uniqueKeyName, id);
-      }
-
-      LOG.debug("record #{} unique key sanitized to this: {}", num, doc);
-      
-      return super.doProcess(doc);
-    }
-    
-    @Override
-    protected void doNotify(Record notification) {
-      if (Notifications.containsLifecycleEvent(notification, Notifications.LifecycleEvent.START_SESSION)) {
-        recordCounter = 0; // reset
-      }
-      super.doNotify(notification);
-    }
-
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/LoadSolrBuilder.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/LoadSolrBuilder.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/LoadSolrBuilder.java
deleted file mode 100644
index a3af6e1..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/LoadSolrBuilder.java
+++ /dev/null
@@ -1,153 +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.morphlines.solr;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.common.SolrInputDocument;
-
-import org.kitesdk.morphline.api.Command;
-import org.kitesdk.morphline.api.CommandBuilder;
-import org.kitesdk.morphline.api.MorphlineContext;
-import org.kitesdk.morphline.api.MorphlineRuntimeException;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.AbstractCommand;
-import org.kitesdk.morphline.base.Configs;
-import org.kitesdk.morphline.base.Metrics;
-import org.kitesdk.morphline.base.Notifications;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.codahale.metrics.Timer;
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
-
-/**
- * A command that loads a record into a SolrServer or MapReduce SolrOutputFormat.
- */
-public final class LoadSolrBuilder implements CommandBuilder {
-
-  private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  private static final AtomicBoolean WARNED_ABOUT_INDEX_TIME_BOOSTS = new AtomicBoolean();
-
-  @Override
-  public Collection<String> getNames() {
-    return Collections.singletonList("loadSolr");
-  }
-
-  @Override
-  public Command build(Config config, Command parent, Command child, MorphlineContext context) {
-    return new LoadSolr(this, config, parent, child, context);
-  }
-  
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private static final class LoadSolr extends AbstractCommand {
-    
-    private final DocumentLoader loader;
-    private final Timer elapsedTime;    
-    
-    public LoadSolr(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) {
-      super(builder, config, parent, child, context);
-      Config solrLocatorConfig = getConfigs().getConfig(config, "solrLocator");
-      SolrLocator locator = new SolrLocator(solrLocatorConfig, context);
-      LOG.debug("solrLocator: {}", locator);
-      this.loader = locator.getLoader();
-      Config boostsConfig = getConfigs().getConfig(config, "boosts", ConfigFactory.empty());
-      if (new Configs().getEntrySet(boostsConfig).isEmpty() == false) {
-        String message = "Ignoring field boosts: as index-time boosts are not supported anymore";
-        if (WARNED_ABOUT_INDEX_TIME_BOOSTS.compareAndSet(false, true)) {
-          log.warn(message);
-        } else {
-          log.debug(message);
-        }
-      }
-      validateArguments();
-      this.elapsedTime = getTimer(Metrics.ELAPSED_TIME);
-    }
-
-    @Override
-    protected void doNotify(Record notification) {
-      for (Object event : Notifications.getLifecycleEvents(notification)) {
-        if (event == Notifications.LifecycleEvent.BEGIN_TRANSACTION) {
-          try {
-            loader.beginTransaction();
-          } catch (SolrServerException | IOException e) {
-            throw new MorphlineRuntimeException(e);
-          }
-        } else if (event == Notifications.LifecycleEvent.COMMIT_TRANSACTION) {
-          try {
-            loader.commitTransaction();
-          } catch (SolrServerException | IOException e) {
-            throw new MorphlineRuntimeException(e);
-          }
-        }
-        else if (event == Notifications.LifecycleEvent.ROLLBACK_TRANSACTION) {
-          try {
-            loader.rollbackTransaction();
-          } catch (SolrServerException | IOException e) {
-            throw new MorphlineRuntimeException(e);
-          }
-        }
-        else if (event == Notifications.LifecycleEvent.SHUTDOWN) {
-          try {
-            loader.shutdown();
-          } catch (SolrServerException | IOException e) {
-            throw new MorphlineRuntimeException(e);
-          }
-        }
-      }
-      super.doNotify(notification);
-    }
-    
-    @Override
-    protected boolean doProcess(Record record) {
-      Timer.Context timerContext = elapsedTime.time();
-      SolrInputDocument doc = convert(record);
-      try {
-        loader.load(doc);
-      } catch (IOException | SolrServerException e) {
-        throw new MorphlineRuntimeException(e);
-      } finally {
-        timerContext.stop();
-      }
-      
-      // pass record to next command in chain:      
-      return super.doProcess(record);
-    }
-    
-    private SolrInputDocument convert(Record record) {
-      Map<String, Collection<Object>> map = record.getFields().asMap();
-      SolrInputDocument doc = new SolrInputDocument(new HashMap(2 * map.size()));
-      for (Map.Entry<String, Collection<Object>> entry : map.entrySet()) {
-        String key = entry.getKey();
-        doc.setField(key, entry.getValue());
-      }
-      return doc;
-    }
-    
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SafeConcurrentUpdateSolrClient.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SafeConcurrentUpdateSolrClient.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SafeConcurrentUpdateSolrClient.java
deleted file mode 100644
index a5fb929..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SafeConcurrentUpdateSolrClient.java
+++ /dev/null
@@ -1,70 +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.morphlines.solr;
-
-import java.lang.invoke.MethodHandles;
-
-import org.apache.http.client.HttpClient;
-import org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * ConcurrentUpdateSolrServer that propagates exceptions up to the submitter of
- * requests on blockUntilFinished()
- */
-final class SafeConcurrentUpdateSolrClient extends ConcurrentUpdateSolrClient {
-
-  private Throwable currentException = null;
-  private final Object myLock = new Object();
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  public SafeConcurrentUpdateSolrClient(String solrServerUrl, int queueSize, int threadCount) {
-    this(solrServerUrl, null, queueSize, threadCount);
-  }
-
-  public SafeConcurrentUpdateSolrClient(String solrServerUrl, HttpClient client, int queueSize, int threadCount) {
-    super(solrServerUrl, client, queueSize, threadCount, null, false);
-  }
-
-  @Override
-  public void handleError(Throwable ex) {
-    assert ex != null;
-    synchronized (myLock) {
-      currentException = ex;
-    }
-    LOGGER.error("handleError", ex);
-  }
-
-  @Override
-  public void blockUntilFinished() {
-    super.blockUntilFinished();
-    synchronized (myLock) {
-      if (currentException != null) {
-        throw new RuntimeException(currentException);
-      }
-    }
-  }
-
-  public void clearException() {
-    synchronized (myLock) {
-      currentException = null;
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SanitizeUnknownSolrFieldsBuilder.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SanitizeUnknownSolrFieldsBuilder.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SanitizeUnknownSolrFieldsBuilder.java
deleted file mode 100644
index 9ede714..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SanitizeUnknownSolrFieldsBuilder.java
+++ /dev/null
@@ -1,101 +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.morphlines.solr;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import org.apache.solr.schema.IndexSchema;
-
-import org.kitesdk.morphline.api.Command;
-import org.kitesdk.morphline.api.CommandBuilder;
-import org.kitesdk.morphline.api.MorphlineContext;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.AbstractCommand;
-import com.typesafe.config.Config;
-
-/**
- * Command that sanitizes record fields that are unknown to Solr schema.xml by either deleting them
- * (renameToPrefix is absent or a zero length string), or by moving them to a field prefixed with
- * the given renameToPrefix (e.g. renameToPrefix = "ignored_" to use typical dynamic Solr fields).
- * <p>
- * Recall that Solr throws an exception on any attempt to load a document that contains a field that
- * isn't specified in schema.xml.
- */
-public final class SanitizeUnknownSolrFieldsBuilder implements CommandBuilder {
-
-  @Override
-  public Collection<String> getNames() {
-    return Collections.singletonList("sanitizeUnknownSolrFields");
-  }
-
-  @Override
-  public Command build(Config config, Command parent, Command child, MorphlineContext context) {
-    return new SanitizeUnknownSolrFields(this, config, parent, child, context);
-  }
-  
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private static final class SanitizeUnknownSolrFields extends AbstractCommand {
-    
-    private final IndexSchema schema;
-    private final String renameToPrefix;
-        
-    public SanitizeUnknownSolrFields(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) {
-      super(builder, config, parent, child, context);      
-      
-      Config solrLocatorConfig = getConfigs().getConfig(config, "solrLocator");
-      SolrLocator locator = new SolrLocator(solrLocatorConfig, context);
-      LOG.debug("solrLocator: {}", locator);
-      this.schema = Objects.requireNonNull(locator.getIndexSchema());
-      if (LOG.isTraceEnabled()) {
-        LOG.trace("Solr schema: \n" +
-            schema.getFields().entrySet().stream().sorted(Map.Entry.comparingByKey())
-                .map(Map.Entry::getValue).map(Object::toString).collect(Collectors.joining("\n"))
-        );
-      }
-
-      String str = getConfigs().getString(config, "renameToPrefix", "").trim();
-      this.renameToPrefix = str.length() > 0 ? str : null;  
-      validateArguments();
-    }
-    
-    @Override
-    protected boolean doProcess(Record record) {
-      Collection<Map.Entry> entries = new ArrayList<Map.Entry>(record.getFields().asMap().entrySet());
-      for (Map.Entry<String, Collection<Object>> entry : entries) {
-        String key = entry.getKey();
-        if (schema.getFieldOrNull(key) == null) {
-          LOG.debug("Sanitizing unknown Solr field: {}", key);
-          Collection values = entry.getValue();
-          if (renameToPrefix != null) {
-            record.getFields().putAll(renameToPrefix + key, values);
-          }
-          values.clear(); // implicitly removes key from record
-        }
-      }
-      return super.doProcess(record);
-    }
-    
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrClientDocumentLoader.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrClientDocumentLoader.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrClientDocumentLoader.java
deleted file mode 100644
index ef9ea84..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrClientDocumentLoader.java
+++ /dev/null
@@ -1,124 +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.morphlines.solr;
-
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClient;
-import org.apache.solr.client.solrj.response.SolrPingResponse;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.common.SolrInputDocument;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A vehicle to load a list of Solr documents into a local or remote {@link org.apache.solr.client.solrj.SolrClient}.
- */
-public class SolrClientDocumentLoader implements DocumentLoader {
-
-  private final SolrClient client; // proxy to local or remote solr server
-  private long numLoadedDocs = 0; // number of documents loaded in the current transaction
-  private final int batchSize;
-  private final List<SolrInputDocument> batch = new ArrayList();
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  public SolrClientDocumentLoader(SolrClient client, int batchSize) {
-    if (client == null) {
-      throw new IllegalArgumentException("solr server must not be null");
-    }
-    this.client = client;
-    if (batchSize <= 0) {
-      throw new IllegalArgumentException("batchSize must be a positive number: " + batchSize);      
-    }
-    this.batchSize = batchSize;
-  }
-  
-  @Override
-  public void beginTransaction() {
-    LOGGER.trace("beginTransaction");
-    batch.clear();
-    numLoadedDocs = 0;
-    if (client instanceof SafeConcurrentUpdateSolrClient) {
-      ((SafeConcurrentUpdateSolrClient) client).clearException();
-    }
-  }
-
-  @Override
-  public void load(SolrInputDocument doc) throws IOException, SolrServerException {
-    LOGGER.trace("load doc: {}", doc);
-    batch.add(doc);
-    if (batch.size() >= batchSize) {
-      loadBatch();
-    }
-  }
-
-  @Override
-  public void commitTransaction() throws SolrServerException, IOException {
-    LOGGER.trace("commitTransaction");
-    if (batch.size() > 0) {
-      loadBatch();
-    }
-    if (numLoadedDocs > 0) {
-      if (client instanceof ConcurrentUpdateSolrClient) {
-        ((ConcurrentUpdateSolrClient) client).blockUntilFinished();
-      }
-    }
-  }
-
-  private void loadBatch() throws SolrServerException, IOException {
-    numLoadedDocs += batch.size();
-    try {
-      UpdateResponse rsp = client.add(batch);
-    } finally {
-      batch.clear();
-    }
-  }
-
-  @Override
-  public UpdateResponse rollbackTransaction() throws SolrServerException, IOException {
-    LOGGER.trace("rollback");
-    if (!(client instanceof CloudSolrClient)) {
-      return client.rollback();
-    } else {
-      return new UpdateResponse();
-    }
-  }
-
-  @Override
-  public void shutdown() throws IOException {
-    LOGGER.trace("shutdown");
-    client.close();
-  }
-
-  @Override
-  public SolrPingResponse ping() throws SolrServerException, IOException {
-    LOGGER.trace("ping");
-    return client.ping();
-  }
-
-  public SolrClient getSolrClient() {
-    return client;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrLocator.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrLocator.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrLocator.java
deleted file mode 100644
index 1d177a6..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrLocator.java
+++ /dev/null
@@ -1,254 +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.morphlines.solr;
-
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.File;
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.nio.file.Paths;
-import java.util.Objects;
-
-import com.google.common.io.Files;
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
-import com.typesafe.config.ConfigRenderOptions;
-import com.typesafe.config.ConfigUtil;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.CloudSolrClient.Builder;
-import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.core.SolrConfig;
-import org.apache.solr.core.SolrResourceLoader;
-import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.util.SystemIdResolver;
-import org.apache.zookeeper.KeeperException;
-import org.kitesdk.morphline.api.MorphlineCompilationException;
-import org.kitesdk.morphline.api.MorphlineContext;
-import org.kitesdk.morphline.api.MorphlineRuntimeException;
-import org.kitesdk.morphline.base.Configs;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-/**
- * Set of configuration parameters that identify the location and schema of a Solr server or
- * SolrCloud; Based on this information this class can return the schema and a corresponding
- * {@link DocumentLoader}.
- */
-public class SolrLocator {
-  
-  private Config config;
-  private MorphlineContext context;
-  private String collectionName;
-  private String zkHost;
-  private String solrUrl;
-  private String solrHomeDir;
-  private int batchSize = 1000;
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  protected SolrLocator(MorphlineContext context) {
-    this.context = Objects.requireNonNull(context);
-  }
-
-  public SolrLocator(Config config, MorphlineContext context) {
-    this(context);
-    this.config = config;
-    Configs configs = new Configs();
-    collectionName = configs.getString(config, "collection", null);
-    zkHost = configs.getString(config, "zkHost", null);
-    solrHomeDir = configs.getString(config, "solrHomeDir", null);
-    solrUrl = configs.getString(config, "solrUrl", null);    
-    batchSize = configs.getInt(config, "batchSize", batchSize);
-    LOG.trace("Constructed solrLocator: {}", this);
-    configs.validateArguments(config);
-  }
-  
-  public DocumentLoader getLoader() {
-    if (context instanceof SolrMorphlineContext) {
-      DocumentLoader loader = ((SolrMorphlineContext)context).getDocumentLoader();
-      if (loader != null) {
-        return loader;
-      }
-    }
-    
-    if (zkHost != null && zkHost.length() > 0) {
-      if (collectionName == null || collectionName.length() == 0) {
-        throw new MorphlineCompilationException("Parameter 'zkHost' requires that you also pass parameter 'collection'", config);
-      }
-      CloudSolrClient cloudSolrClient = new Builder()
-          .withZkHost(zkHost)
-          .build();
-      cloudSolrClient.setDefaultCollection(collectionName);
-      cloudSolrClient.connect();
-      return new SolrClientDocumentLoader(cloudSolrClient, batchSize);
-    } else {
-      if (solrUrl == null || solrUrl.length() == 0) {
-        throw new MorphlineCompilationException("Missing parameter 'solrUrl'", config);
-      }
-      int solrServerNumThreads = 2;
-      int solrServerQueueLength = solrServerNumThreads;
-      SolrClient server = new SafeConcurrentUpdateSolrClient(solrUrl, solrServerQueueLength, solrServerNumThreads);
-      // SolrServer server = new HttpSolrServer(solrServerUrl);
-      // SolrServer server = new ConcurrentUpdateSolrServer(solrServerUrl, solrServerQueueLength, solrServerNumThreads);
-      // server.setParser(new XMLResponseParser()); // binary parser is used by default
-      return new SolrClientDocumentLoader(server, batchSize);
-    }
-  }
-
-  public IndexSchema getIndexSchema() {
-    if (context instanceof SolrMorphlineContext) {    
-      IndexSchema schema = ((SolrMorphlineContext)context).getIndexSchema();
-      if (schema != null) {
-        validateSchema(schema);
-        return schema;
-      }
-    }
-
-    File downloadedSolrHomeDir = null;
-    try {
-      // If solrHomeDir isn't defined and zkHost and collectionName are defined 
-      // then download schema.xml and solrconfig.xml, etc from zk and use that as solrHomeDir
-      String mySolrHomeDir = solrHomeDir;
-      if (solrHomeDir == null || solrHomeDir.length() == 0) {
-        if (zkHost == null || zkHost.length() == 0) {
-          // TODO: implement download from solrUrl if specified
-          throw new MorphlineCompilationException(
-              "Downloading a Solr schema requires either parameter 'solrHomeDir' or parameters 'zkHost' and 'collection'",
-              config);
-        }
-        if (collectionName == null || collectionName.length() == 0) {
-          throw new MorphlineCompilationException(
-              "Parameter 'zkHost' requires that you also pass parameter 'collection'", config);
-        }
-        ZooKeeperDownloader zki = new ZooKeeperDownloader();
-        SolrZkClient zkClient = zki.getZkClient(zkHost);
-        try {
-          String configName = zki.readConfigName(zkClient, collectionName);
-          downloadedSolrHomeDir = Files.createTempDir();
-          downloadedSolrHomeDir = zki.downloadConfigDir(zkClient, configName, downloadedSolrHomeDir);
-          mySolrHomeDir = downloadedSolrHomeDir.getAbsolutePath();
-        } catch (KeeperException | InterruptedException | IOException e) {
-          throw new MorphlineCompilationException("Cannot download schema.xml from ZooKeeper", config, e);
-        } finally {
-          zkClient.close();
-        }
-      }
-      
-      LOG.debug("SolrLocator loading IndexSchema from dir {}", mySolrHomeDir);
-      try {
-        SolrResourceLoader loader = new SolrResourceLoader(Paths.get(mySolrHomeDir));
-        SolrConfig solrConfig = new SolrConfig(loader, "solrconfig.xml", null);
-        InputSource is = new InputSource(loader.openSchema("schema.xml"));
-        is.setSystemId(SystemIdResolver.createSystemIdFromResourceName("schema.xml"));
-        
-        IndexSchema schema = new IndexSchema(solrConfig, "schema.xml", is);
-        validateSchema(schema);
-        return schema;
-      } catch (ParserConfigurationException | IOException | SAXException e) {
-        throw new MorphlineRuntimeException(e);
-      }
-    } finally {
-      if (downloadedSolrHomeDir != null) {
-        try {
-          FileUtils.deleteDirectory(downloadedSolrHomeDir);
-        } catch (IOException e) {
-          LOG.warn("Cannot delete tmp directory", e);
-        }
-      }
-    }
-  }
-  
-  private void validateSchema(IndexSchema schema) {
-    if (schema.getUniqueKeyField() == null) {
-      throw new MorphlineCompilationException("Solr schema.xml is missing unique key field", config);
-    }
-    if (!schema.getUniqueKeyField().isRequired()) {
-      throw new MorphlineCompilationException("Solr schema.xml must contain a required unique key field", config);
-    }
-  }
-  
-  @Override
-  public String toString() {
-    return toConfig(null).root().render(ConfigRenderOptions.concise());
-  }
-  
-  public Config toConfig(String key) {
-    String json = "";
-    if (key != null) {
-      json = toJson(key) + " : ";
-    }
-    json +=  
-        "{" +
-        " collection : " + toJson(collectionName) + ", " +
-        " zkHost : " + toJson(zkHost) + ", " +
-        " solrUrl : " + toJson(solrUrl) + ", " +
-        " solrHomeDir : " + toJson(solrHomeDir) + ", " +
-        " batchSize : " + toJson(batchSize) + " " +
-        "}";
-    return ConfigFactory.parseString(json);
-  }
-  
-  private String toJson(Object key) {
-    String str = key == null ? "" : key.toString();
-    str = ConfigUtil.quoteString(str);
-    return str;
-  }
-
-  public String getCollectionName() {
-    return this.collectionName;
-  }
-
-  public void setCollectionName(String collectionName) {
-    this.collectionName = collectionName;
-  }
-
-  public String getZkHost() {
-    return this.zkHost;
-  }
-
-  public void setZkHost(String zkHost) {
-    this.zkHost = zkHost;
-  }
-
-  public String getSolrHomeDir() {
-    return this.solrHomeDir;
-  }
-
-  public void setSolrHomeDir(String solrHomeDir) {
-    this.solrHomeDir = solrHomeDir;
-  }
-
-  public String getServerUrl() {
-    return this.solrUrl;
-  }
-
-  public void setServerUrl(String solrUrl) {
-    this.solrUrl = solrUrl;
-  }
-
-  public int getBatchSize() {
-    return this.batchSize;
-  }
-
-  public void setBatchSize(int batchSize) {
-    this.batchSize = batchSize;
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrMorphlineContext.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrMorphlineContext.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrMorphlineContext.java
deleted file mode 100644
index b3cd301..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/SolrMorphlineContext.java
+++ /dev/null
@@ -1,80 +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.morphlines.solr;
-
-import org.apache.solr.schema.IndexSchema;
-
-import org.kitesdk.morphline.api.MorphlineContext;
-
-/**
- * A context that is specific to Solr.
- */
-public class SolrMorphlineContext extends MorphlineContext {
-
-  private DocumentLoader loader;
-  private IndexSchema schema;
-  
-  /** For public access use {@link Builder#build()} instead */  
-  protected SolrMorphlineContext() {}
-  
-  public DocumentLoader getDocumentLoader() {    
-    return loader;
-  }
-
-  public IndexSchema getIndexSchema() {    
-    return schema;
-  }
-
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  /**
-   * Helper to construct a {@link SolrMorphlineContext} instance.
-   */
-  public static class Builder extends MorphlineContext.Builder {
-        
-    private DocumentLoader loader;
-    private IndexSchema schema;
-    
-    public Builder() {}
-
-    public Builder setDocumentLoader(DocumentLoader loader) {
-      this.loader = loader;
-      return this;
-    }    
-
-    public Builder setIndexSchema(IndexSchema schema) {
-      this.schema = schema;
-      return this;
-    }    
-
-    @Override
-    public SolrMorphlineContext build() {
-      ((SolrMorphlineContext)context).loader = loader;
-      ((SolrMorphlineContext)context).schema = schema;
-      return (SolrMorphlineContext) super.build();
-    }
-
-    @Override
-    protected SolrMorphlineContext create() {
-      return new SolrMorphlineContext();
-    }
-    
-  }
- 
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/TokenizeTextBuilder.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/TokenizeTextBuilder.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/TokenizeTextBuilder.java
deleted file mode 100644
index 7c96f3f..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/TokenizeTextBuilder.java
+++ /dev/null
@@ -1,154 +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.morphlines.solr;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
-import org.apache.solr.schema.FieldType;
-import org.apache.solr.schema.IndexSchema;
-
-import org.kitesdk.morphline.api.Command;
-import org.kitesdk.morphline.api.CommandBuilder;
-import org.kitesdk.morphline.api.MorphlineCompilationException;
-import org.kitesdk.morphline.api.MorphlineContext;
-import org.kitesdk.morphline.api.MorphlineRuntimeException;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.AbstractCommand;
-import com.typesafe.config.Config;
-
-/**
- * A command that uses the embedded Solr/Lucene Analyzer library to generate tokens from a text
- * string, without sending data to a Solr server.
- */
-public final class TokenizeTextBuilder implements CommandBuilder {
-
-  @Override
-  public Collection<String> getNames() {
-    return Collections.singletonList("tokenizeText");
-  }
-
-  @Override
-  public Command build(Config config, Command parent, Command child, MorphlineContext context) {
-    return new TokenizeText(this, config, parent, child, context);
-  }
-  
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private static final class TokenizeText extends AbstractCommand {
-    
-    private final String inputFieldName;
-    private final String outputFieldName;
-    private final Analyzer analyzer;
-    private final CharTermAttribute token; // cached
-    private final ReusableStringReader reader = new ReusableStringReader(); // cached
-    
-    public TokenizeText(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) {
-      super(builder, config, parent, child, context);
-      this.inputFieldName = getConfigs().getString(config, "inputField");
-      this.outputFieldName = getConfigs().getString(config, "outputField");      
-      String solrFieldType = getConfigs().getString(config, "solrFieldType");      
-      Config solrLocatorConfig = getConfigs().getConfig(config, "solrLocator");
-      SolrLocator locator = new SolrLocator(solrLocatorConfig, context);
-      LOG.debug("solrLocator: {}", locator);
-      IndexSchema schema = locator.getIndexSchema();
-      FieldType fieldType = schema.getFieldTypeByName(solrFieldType);
-      if (fieldType == null) {
-        throw new MorphlineCompilationException("Missing Solr field type in schema.xml for name: " + solrFieldType, config);
-      }
-      this.analyzer = Objects.requireNonNull(fieldType.getIndexAnalyzer());
-      // register CharTermAttribute for later (implicit) reuse
-      this.token = Objects.requireNonNull(analyzer.tokenStream("content", reader).addAttribute(CharTermAttribute.class));
-      validateArguments();
-    }
-
-    @Override
-    protected boolean doProcess(Record record) {
-      try {
-        List outputValues = record.get(outputFieldName);
-        for (Object value : record.get(inputFieldName)) {
-          reader.setValue(value.toString());
-          TokenStream tokenStream = analyzer.tokenStream("content", reader);
-          tokenStream.reset();
-          while (tokenStream.incrementToken()) {
-            if (token.length() > 0) { // incrementToken() updates the token!
-              String tokenStr = new String(token.buffer(), 0, token.length());
-              outputValues.add(tokenStr);
-            }
-          }
-          tokenStream.end();
-          tokenStream.close();
-        }
-      } catch (IOException e) {
-        throw new MorphlineRuntimeException(e);
-      }
-      
-      // pass record to next command in chain:
-      return super.doProcess(record);
-    }
-
-  }
-  
-  private static final class ReusableStringReader extends Reader {
-    private int pos = 0, size = 0;
-    private String s = null;
-    
-    void setValue(String s) {
-      this.s = s;
-      this.size = s.length();
-      this.pos = 0;
-    }
-    
-    @Override
-    public int read() {
-      if (pos < size) {
-        return s.charAt(pos++);
-      } else {
-        s = null;
-        return -1;
-      }
-    }
-    
-    @Override
-    public int read(char[] c, int off, int len) {
-      if (pos < size) {
-        len = Math.min(len, size-pos);
-        s.getChars(pos, pos+len, c, off);
-        pos += len;
-        return len;
-      } else {
-        s = null;
-        return -1;
-      }
-    }
-    
-    @Override
-    public void close() {
-      pos = size; // this prevents NPE when reading after close!
-      s = null;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/ZooKeeperDownloader.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/ZooKeeperDownloader.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/ZooKeeperDownloader.java
deleted file mode 100644
index 7185531..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/ZooKeeperDownloader.java
+++ /dev/null
@@ -1,142 +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.morphlines.solr;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.List;
-
-import org.apache.solr.cloud.ZkController;
-import org.apache.solr.common.cloud.Aliases;
-import org.apache.solr.common.cloud.ClusterState;
-import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.common.cloud.ZkConfigManager;
-import org.apache.solr.common.cloud.ZkNodeProps;
-import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.common.util.StrUtils;
-import org.apache.zookeeper.KeeperException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Preconditions;
-import com.google.common.io.Files;
-
-/**
- * Downloads SolrCloud information from ZooKeeper.
- */
-final class ZooKeeperDownloader {
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
-  public SolrZkClient getZkClient(String zkHost) {
-    if (zkHost == null) {
-      throw new IllegalArgumentException("zkHost must not be null");
-    }
-
-    SolrZkClient zkClient;
-    try {
-      zkClient = new SolrZkClient(zkHost, 30000);
-    } catch (Exception e) {
-      throw new IllegalArgumentException("Cannot connect to ZooKeeper: " + zkHost, e);
-    }
-    return zkClient;
-  }
-  
-  /**
-   * Returns config value given collection name
-   * Borrowed heavily from Solr's ZKController.
-   */
-  public String readConfigName(SolrZkClient zkClient, String collection)
-  throws KeeperException, InterruptedException {
-    if (collection == null) {
-      throw new IllegalArgumentException("collection must not be null");
-    }
-    String configName = null;
-
-    // first check for alias
-    byte[] aliasData = zkClient.getData(ZkStateReader.ALIASES, null, null, true);
-    Aliases aliases = ClusterState.load(aliasData);
-    String alias = aliases.getCollectionAlias(collection);
-    if (alias != null) {
-      List<String> aliasList = StrUtils.splitSmart(alias, ",", true);
-      if (aliasList.size() > 1) {
-        throw new IllegalArgumentException("collection cannot be an alias that maps to multiple collections");
-      }
-      collection = aliasList.get(0);
-    }
-    
-    String path = ZkStateReader.COLLECTIONS_ZKNODE + "/" + collection;
-    if (LOG.isInfoEnabled()) {
-      LOG.info("Load collection config from:" + path);
-    }
-    byte[] data = zkClient.getData(path, null, null, true);
-    
-    if(data != null) {
-      ZkNodeProps props = ZkNodeProps.load(data);
-      configName = props.getStr(ZkController.CONFIGNAME_PROP);
-    }
-    
-    if (configName != null && !zkClient.exists(ZkConfigManager.CONFIGS_ZKNODE + "/" + configName, true)) {
-      LOG.error("Specified config does not exist in ZooKeeper:" + configName);
-      throw new IllegalArgumentException("Specified config does not exist in ZooKeeper:"
-        + configName);
-    }
-
-    return configName;
-  }
-
-  /**
-   * Download and return the config directory from ZK
-   */
-  public File downloadConfigDir(SolrZkClient zkClient, String configName, File dir)
-  throws IOException, InterruptedException, KeeperException {
-    Preconditions.checkArgument(dir.exists());
-    Preconditions.checkArgument(dir.isDirectory());
-    ZkConfigManager manager = new ZkConfigManager(zkClient);
-    manager.downloadConfigDir(configName, dir.toPath());
-    File confDir = new File(dir, "conf");
-    if (!confDir.isDirectory()) {
-      // create a temporary directory with "conf" subdir and mv the config in there.  This is
-      // necessary because of CDH-11188; solrctl does not generate nor accept directories with e.g.
-      // conf/solrconfig.xml which is necessary for proper solr operation.  This should work
-      // even if solrctl changes.
-      confDir = new File(Files.createTempDir().getAbsolutePath(), "conf");
-      confDir.getParentFile().deleteOnExit();
-      Files.move(dir, confDir);
-      dir = confDir.getParentFile();
-    }
-    verifyConfigDir(confDir);
-    return dir;
-  }
-  
-  private void verifyConfigDir(File confDir) throws IOException {
-    File solrConfigFile = new File(confDir, "solrconfig.xml");
-    if (!solrConfigFile.exists()) {
-      throw new IOException("Detected invalid Solr config dir in ZooKeeper - Reason: File not found: "
-          + solrConfigFile.getName());
-    }
-    if (!solrConfigFile.isFile()) {
-      throw new IOException("Detected invalid Solr config dir in ZooKeeper - Reason: Not a file: "
-          + solrConfigFile.getName());
-    }
-    if (!solrConfigFile.canRead()) {
-      throw new IOException("Insufficient permissions to read file: " + solrConfigFile);
-    }    
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/package-info.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/package-info.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/package-info.java
deleted file mode 100644
index f4b91ec..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/package-info.java
+++ /dev/null
@@ -1,25 +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.
- */
- 
-/** 
- * Morphlines Solr related code.
- */
-package org.apache.solr.morphlines.solr;
-
-
-
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/overview.html
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/overview.html b/solr/contrib/morphlines-core/src/java/overview.html
deleted file mode 100644
index 7f8ad13..0000000
--- a/solr/contrib/morphlines-core/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: Solr Core Morphline Commands
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/custom-mimetypes.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/custom-mimetypes.xml b/solr/contrib/morphlines-core/src/test-files/custom-mimetypes.xml
deleted file mode 100644
index 6891e42..0000000
--- a/solr/contrib/morphlines-core/src/test-files/custom-mimetypes.xml
+++ /dev/null
@@ -1,38 +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. -->
-
-<mime-info>
-
-  <mime-type type="text/space-separated-values">
-    <glob pattern="*.ssv"/>
-  </mime-type>
-
-  <mime-type type="avro/binary">
-    <magic priority="50">
-      <match value="0x4f626a01" type="string" offset="0"/>       
-    </magic>
-    <glob pattern="*.avro"/>
-  </mime-type>
-
-  <mime-type type="mytwittertest/json+delimited+length">
-    <magic priority="50">
-      <match value="[0-9]+(\r)?\n\\{&quot;" type="regex" offset="0:16"/>       
-    </magic>
-  </mime-type>
-  
-  <mime-type type="application/hadoop-sequence-file">
-    <magic priority="50">
-      <match value="SEQ[\0-\6]" type="regex" offset="0"/>
-    </magic>
-  </mime-type>
-  
-</mime-info>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/log4j.properties
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/log4j.properties b/solr/contrib/morphlines-core/src/test-files/log4j.properties
deleted file mode 100644
index 40fc92b..0000000
--- a/solr/contrib/morphlines-core/src/test-files/log4j.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-#  Logging level
-log4j.rootLogger=INFO, CONSOLE
-
-log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
-log4j.appender.CONSOLE.Target=System.err
-log4j.appender.CONSOLE.layout=org.apache.log4j.EnhancedPatternLayout
-log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p (%t) [%X{node_name} %X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%n

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/morphlines-core.marker
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/morphlines-core.marker b/solr/contrib/morphlines-core/src/test-files/morphlines-core.marker
deleted file mode 100644
index f4ed7be..0000000
--- a/solr/contrib/morphlines-core/src/test-files/morphlines-core.marker
+++ /dev/null
@@ -1 +0,0 @@
-# Marker file, so we can lookup this file from classpath to get the resources folder for morphlines-core.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/currency.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/currency.xml b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/currency.xml
deleted file mode 100644
index 3a9c58a..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/elevate.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/elevate.xml b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/elevate.xml
deleted file mode 100644
index 2c09ebe..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_ca.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_ca.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_ca.txt
deleted file mode 100644
index 307a85f..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_fr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_fr.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_fr.txt
deleted file mode 100644
index 722db58..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_fr.txt
+++ /dev/null
@@ -1,9 +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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_ga.txt
deleted file mode 100644
index 9ebe7fa..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_it.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_it.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/contractions_it.txt
deleted file mode 100644
index cac0409..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/hyphenations_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/hyphenations_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/hyphenations_ga.txt
deleted file mode 100644
index 4d2642c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stemdict_nl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stemdict_nl.txt b/solr/contrib/morphlines-core/src/test-files/solr/collection1/conf/lang/stemdict_nl.txt
deleted file mode 100644
index 4410729..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/collection1/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


[48/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10344: Update Solr default/example and test configs to use WordDelimiterGraphFilterFactory

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-single-dynamic-copy-field.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-single-dynamic-copy-field.xml b/solr/core/src/test-files/solr/collection1/conf/schema-single-dynamic-copy-field.xml
index f7cbf6d..72dc723 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-single-dynamic-copy-field.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-single-dynamic-copy-field.xml
@@ -45,26 +45,41 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <fieldType name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -90,11 +105,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -103,7 +119,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -153,11 +169,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -166,7 +183,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -300,15 +317,16 @@
   <fieldType name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -320,16 +338,17 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
@@ -341,9 +360,10 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -356,13 +376,14 @@
   <fieldType name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -372,13 +393,14 @@
   <fieldType name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -401,16 +423,17 @@
               <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
               -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-sql.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-sql.xml b/solr/core/src/test-files/solr/collection1/conf/schema-sql.xml
index 818a6c8..dbaac57 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-sql.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-sql.xml
@@ -72,26 +72,41 @@
   <fieldtype name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldtype>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldtype name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldtype>
 
   <fieldtype name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -191,9 +206,16 @@
     </analyzer>
   </fieldtype>
   <fieldtype name="lowerpunctfilt" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+              catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -265,15 +287,16 @@
   <fieldtype name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -285,15 +308,16 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
@@ -304,8 +328,9 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -318,13 +343,14 @@
   <fieldtype name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -334,13 +360,14 @@
   <fieldtype name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-trie.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-trie.xml b/solr/core/src/test-files/solr/collection1/conf/schema-trie.xml
index 1df0a0f..375036f 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-trie.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-trie.xml
@@ -151,7 +151,7 @@
     </analyzer>
   </fieldType>
 
-  <!-- A text field that uses WordDelimiterFilter to enable splitting and matching of
+  <!-- A text field that uses WordDelimiterGraphFilter to enable splitting and matching of
       words on case-change, alpha numeric boundaries, and non-alphanumeric chars,
       so that a query of "wifi" or "wi fi" could match a document containing "Wi-Fi".
       Synonyms and stopwords are customized by external files, and stemming is enabled.
@@ -165,18 +165,19 @@
       <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -189,11 +190,23 @@
   <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
        but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
   <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+              catenateNumbers="1" catenateAll="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+      <filter class="solr.EnglishMinimalStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema.xml b/solr/core/src/test-files/solr/collection1/conf/schema.xml
index 6f5eddc..23ac326 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema.xml
@@ -55,26 +55,41 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <fieldType name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -196,7 +211,15 @@
     </analyzer>
   </fieldType>
   <fieldType name="lowerpunctfilt" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+              catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
@@ -274,15 +297,16 @@
   <fieldType name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -294,16 +318,17 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
@@ -315,9 +340,10 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -330,13 +356,14 @@
   <fieldType name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -346,13 +373,14 @@
   <fieldType name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema11.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema11.xml b/solr/core/src/test-files/solr/collection1/conf/schema11.xml
index 7591c96..db0770b 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema11.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema11.xml
@@ -147,7 +147,7 @@
       </analyzer>
     </fieldType>
 
-    <!-- A text field that uses WordDelimiterFilter to enable splitting and matching of
+    <!-- A text field that uses WordDelimiterGraphFilter to enable splitting and matching of
         words on case-change, alpha numeric boundaries, and non-alphanumeric chars,
         so that a query of "wifi" or "wi fi" could match a document containing "Wi-Fi".
         Synonyms and stopwords are customized by external files, and stemming is enabled.
@@ -161,17 +161,18 @@
         <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
@@ -183,11 +184,22 @@
     <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
     <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100" >
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.MockTokenizerFactory"/>
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.EnglishMinimalStemFilterFactory"/>
@@ -417,17 +429,18 @@ valued. -->
             <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
        <filter class="solr.PorterStemFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+       <filter class="solr.FlattenGraphFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.MockTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
        <filter class="solr.PorterStemFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema12.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema12.xml b/solr/core/src/test-files/solr/collection1/conf/schema12.xml
index 8577440..db91377 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema12.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema12.xml
@@ -54,26 +54,41 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <fieldType name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -99,11 +114,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -112,7 +128,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -129,11 +145,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -142,7 +159,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -270,15 +287,16 @@
   <fieldType name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -290,16 +308,17 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
@@ -311,9 +330,10 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -326,13 +346,14 @@
   <fieldType name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -342,13 +363,14 @@
   <fieldType name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -371,16 +393,17 @@
       <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema15.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema15.xml b/solr/core/src/test-files/solr/collection1/conf/schema15.xml
index e2c14f0..8fb8d44 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema15.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema15.xml
@@ -46,26 +46,41 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <fieldType name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -91,11 +106,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -104,7 +120,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -121,11 +137,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -134,7 +151,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -268,15 +285,16 @@
   <fieldType name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -288,16 +306,17 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
@@ -309,9 +328,10 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -324,13 +344,14 @@
   <fieldType name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -340,13 +361,14 @@
   <fieldType name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -369,16 +391,17 @@
       <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema_latest.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema_latest.xml b/solr/core/src/test-files/solr/collection1/conf/schema_latest.xml
index dfeac32..1163ab5 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema_latest.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema_latest.xml
@@ -541,7 +541,7 @@
   <!-- A text field with defaults appropriate for English, plus
  aggressive word-splitting and autophrase features enabled.
  This field is just like text_en, except it adds
- WordDelimiterFilter to enable splitting and matching of
+ WordDelimiterGraphFilter to enable splitting and matching of
  words on case-change, alpha numeric boundaries, and
  non-alphanumeric chars.  This means certain compound word
  cases will work, for example query "wi fi" will match
@@ -560,11 +560,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -573,7 +574,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -585,17 +586,31 @@
        but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
   <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100"
              autoGeneratePhraseQueries="true">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+              catenateNumbers="1" catenateAll="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+      <filter class="solr.EnglishMinimalStemFilterFactory"/>
+      <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+           possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.EnglishMinimalStemFilterFactory"/>
       <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-           possible with WordDelimiterFilter in conjuncton with stemming. -->
+           possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
     </analyzer>
   </fieldType>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schemasurround.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schemasurround.xml b/solr/core/src/test-files/solr/collection1/conf/schemasurround.xml
index e22eb2b..3071968 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schemasurround.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schemasurround.xml
@@ -47,26 +47,41 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <fieldType name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -92,11 +107,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -105,7 +121,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -122,11 +138,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -135,7 +152,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -263,15 +280,16 @@
   <fieldType name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -283,16 +301,17 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
@@ -304,9 +323,10 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -319,13 +339,14 @@
   <fieldType name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -335,13 +356,14 @@
   <fieldType name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -364,16 +386,17 @@
       <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
@@ -384,15 +407,16 @@
   <fieldType name="textgen" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.EnglishMinimalStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.EnglishMinimalStemFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/synonyms.txt b/solr/core/src/test-files/solr/collection1/conf/synonyms.txt
index 340abd7..f64cb72 100644
--- a/solr/core/src/test-files/solr/collection1/conf/synonyms.txt
+++ b/solr/core/src/test-files/solr/collection1/conf/synonyms.txt
@@ -23,7 +23,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/wdftypes.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/wdftypes.txt b/solr/core/src/test-files/solr/collection1/conf/wdftypes.txt
index 7378b08..9a453c8 100644
--- a/solr/core/src/test-files/solr/collection1/conf/wdftypes.txt
+++ b/solr/core/src/test-files/solr/collection1/conf/wdftypes.txt
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-# A customized type mapping for WordDelimiterFilterFactory
+# A customized type mapping for WordDelimiterGraphFilterFactory
 # the allowable types are: LOWER, UPPER, ALPHA, DIGIT, ALPHANUM, SUBWORD_DELIM
 # 
 # the default for any character without a mapping is always computed from 


[73/73] [abbrv] lucene-solr:jira/solr-6203: resolve SearchGroupsResultTransformer merge conflict

Posted by cp...@apache.org.
resolve SearchGroupsResultTransformer merge conflict


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

Branch: refs/heads/jira/solr-6203
Commit: caed03da40ae9ba2795846add2c14588a97ea78d
Parents: 770265f
Author: Christine Poerschke <cp...@apache.org>
Authored: Thu Mar 30 17:26:28 2017 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Thu Mar 30 17:26:28 2017 +0100

----------------------------------------------------------------------
 .../SearchGroupsResultTransformer.java          | 25 +-------------------
 1 file changed, 1 insertion(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/caed03da/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
index bb2d821..3310141 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
@@ -59,13 +59,7 @@ public class SearchGroupsResultTransformer implements ShardResultTransformer<Lis
         final SearchGroupsFieldCommandResult fieldCommandResult = fieldCommand.result();
         final Collection<SearchGroup<BytesRef>> searchGroups = fieldCommandResult.getSearchGroups();
         if (searchGroups != null) {
-<<<<<<< HEAD
-          commandResult.add(TOP_GROUPS, serializeSearchGroup(searchGroups, fieldCommand.getGroupSortSpec()));
-||||||| merged common ancestors
-          commandResult.add(TOP_GROUPS, serializeSearchGroup(searchGroups, fieldCommand.getGroupSort()));
-=======
           commandResult.add(TOP_GROUPS, serializeSearchGroup(searchGroups, fieldCommand));
->>>>>>> master
         }
         final Integer groupedCount = fieldCommandResult.getGroupCount();
         if (groupedCount != null) {
@@ -125,15 +119,9 @@ public class SearchGroupsResultTransformer implements ShardResultTransformer<Lis
     return result;
   }
 
-<<<<<<< HEAD
-
-  private NamedList serializeSearchGroup(Collection<SearchGroup<BytesRef>> data, SortSpec groupSortSpec) {
-||||||| merged common ancestors
-  private NamedList serializeSearchGroup(Collection<SearchGroup<BytesRef>> data, Sort groupSort) {
-=======
   private NamedList serializeSearchGroup(Collection<SearchGroup<BytesRef>> data, SearchGroupsFieldCommand command) {
->>>>>>> master
     final NamedList<Object[]> result = new NamedList<>(data.size());
+    final SortSpec groupSortSpec = command.getGroupSortSpec();
     final List<SchemaField> groupSchemaFields = groupSortSpec.getSchemaFields();
     final SortField[] groupSortFields = groupSortSpec.getSort().getSort();
 
@@ -142,18 +130,7 @@ public class SearchGroupsResultTransformer implements ShardResultTransformer<Lis
     for (SearchGroup<BytesRef> searchGroup : data) {
       Object[] convertedSortValues = new Object[searchGroup.sortValues.length];
       for (int i = 0; i < searchGroup.sortValues.length; i++) {
-<<<<<<< HEAD
         convertedSortValues[i] = ShardResultTransformerUtils.marshalSortValue(searchGroup.sortValues[i], groupSchemaFields.get(i));
-||||||| merged common ancestors
-        Object sortValue = searchGroup.sortValues[i];
-        SchemaField field = groupSort.getSort()[i].getField() != null ? searcher.getSchema().getFieldOrNull(groupSort.getSort()[i].getField()) : null;
-        convertedSortValues[i] = ShardResultTransformerUtils.marshalSortValue(sortValue, field);
-=======
-        Object sortValue = searchGroup.sortValues[i];
-        SchemaField field = command.getGroupSort().getSort()[i].getField() != null ?
-            searcher.getSchema().getFieldOrNull(command.getGroupSort().getSort()[i].getField()) : null;
-        convertedSortValues[i] = ShardResultTransformerUtils.marshalSortValue(sortValue, field);
->>>>>>> master
       }
       SchemaField field = searcher.getSchema().getFieldOrNull(command.getKey());
       String groupValue = searchGroup.groupValue != null ? field.getType().indexedToReadable(searchGroup.groupValue, new CharsRefBuilder()).toString() : null;


[47/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10344: Update Solr default/example and test configs to use WordDelimiterGraphFilterFactory

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/configsets/cloud-dynamic/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/cloud-dynamic/conf/schema.xml b/solr/core/src/test-files/solr/configsets/cloud-dynamic/conf/schema.xml
index af201c0..d15c199 100644
--- a/solr/core/src/test-files/solr/configsets/cloud-dynamic/conf/schema.xml
+++ b/solr/core/src/test-files/solr/configsets/cloud-dynamic/conf/schema.xml
@@ -45,26 +45,41 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <fieldType name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -86,14 +101,15 @@
   <fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
@@ -111,14 +127,15 @@
   <fieldType name="text_np" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/configsets/doc-expiry/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/doc-expiry/conf/schema.xml b/solr/core/src/test-files/solr/configsets/doc-expiry/conf/schema.xml
index 8400fe8..c622eba 100644
--- a/solr/core/src/test-files/solr/configsets/doc-expiry/conf/schema.xml
+++ b/solr/core/src/test-files/solr/configsets/doc-expiry/conf/schema.xml
@@ -45,26 +45,41 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <fieldType name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -86,14 +101,15 @@
   <fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
@@ -111,14 +127,15 @@
   <fieldType name="text_np" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java b/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
index 767b811..bf7925a 100644
--- a/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
+++ b/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
@@ -872,7 +872,7 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
             );
 
 
-    // intra-word delimiter testing (WordDelimiterFilter)
+    // intra-word delimiter testing (WordDelimiterGraphFilter)
 
     assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">foo bar</field></doc></add>");
     assertU("<commit/>");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
index d2ef555..fc0f6be 100644
--- a/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/FieldAnalysisRequestHandlerTest.java
@@ -382,7 +382,7 @@ public class FieldAnalysisRequestHandlerTest extends AnalysisRequestHandlerTestB
   }
 
   @Test
-  public void testPositionHistoryWithWDF() throws Exception {
+  public void testPositionHistoryWithWDGF() throws Exception {
 
     FieldAnalysisRequest request = new FieldAnalysisRequest();
     request.addFieldType("skutype1");
@@ -407,12 +407,12 @@ public class FieldAnalysisRequestHandlerTest extends AnalysisRequestHandlerTestB
     assertToken(tokenList.get(1), new TokenInfo("3456-12", null, "word", 4, 11, 2, new int[]{2}, null, false));
     assertToken(tokenList.get(2), new TokenInfo("a", null, "word", 12, 13, 3, new int[]{3}, null, false));
     assertToken(tokenList.get(3), new TokenInfo("Test", null, "word", 14, 18, 4, new int[]{4}, null, false));
-    tokenList = indexPart.get("org.apache.lucene.analysis.miscellaneous.WordDelimiterFilter");
-    assertNotNull("Expcting WordDelimiterFilter analysis breakdown", tokenList);
+    tokenList = indexPart.get("org.apache.lucene.analysis.miscellaneous.WordDelimiterGraphFilter");
+    assertNotNull("Expcting WordDelimiterGraphFilter analysis breakdown", tokenList);
     assertEquals(6, tokenList.size());
     assertToken(tokenList.get(0), new TokenInfo("hi", null, "word", 0, 2, 1, new int[]{1,1}, null, false));
-    assertToken(tokenList.get(1), new TokenInfo("3456", null, "word", 4, 8, 2, new int[]{2,2}, null, false));
-    assertToken(tokenList.get(2), new TokenInfo("345612", null, "word", 4, 11, 2, new int[]{2,2}, null, false));
+    assertToken(tokenList.get(1), new TokenInfo("345612", null, "word", 4, 11, 2, new int[]{2,2}, null, false));
+    assertToken(tokenList.get(2), new TokenInfo("3456", null, "word", 4, 8, 2, new int[]{2,2}, null, false));
     assertToken(tokenList.get(3), new TokenInfo("12", null, "word", 9, 11, 3, new int[]{2,3}, null, false));
     assertToken(tokenList.get(4), new TokenInfo("a", null, "word", 12, 13, 4, new int[]{3,4}, null, false));
     assertToken(tokenList.get(5), new TokenInfo("Test", null, "word", 14, 18, 5, new int[]{4,5}, null, false));
@@ -420,8 +420,8 @@ public class FieldAnalysisRequestHandlerTest extends AnalysisRequestHandlerTestB
     assertNotNull("Expcting LowerCaseFilter analysis breakdown", tokenList);
     assertEquals(6, tokenList.size());
     assertToken(tokenList.get(0), new TokenInfo("hi", null, "word", 0, 2, 1, new int[]{1,1,1}, null, false));
-    assertToken(tokenList.get(1), new TokenInfo("3456", null, "word", 4, 8, 2, new int[]{2,2,2}, null, false));
-    assertToken(tokenList.get(2), new TokenInfo("345612", null, "word", 4, 11, 2, new int[]{2,2,2}, null, false));
+    assertToken(tokenList.get(1), new TokenInfo("345612", null, "word", 4, 11, 2, new int[]{2,2,2}, null, false));
+    assertToken(tokenList.get(2), new TokenInfo("3456", null, "word", 4, 8, 2, new int[]{2,2,2}, null, false));
     assertToken(tokenList.get(3), new TokenInfo("12", null, "word", 9, 11, 3, new int[]{2,3,3}, null, false));
     assertToken(tokenList.get(4), new TokenInfo("a", null, "word", 12, 13, 4, new int[]{3,4,4}, null, false));
     assertToken(tokenList.get(5), new TokenInfo("test", null, "word", 14, 18, 5, new int[]{4,5,5}, null, false));

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test/org/apache/solr/rest/schema/TestBulkSchemaAPI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/rest/schema/TestBulkSchemaAPI.java b/solr/core/src/test/org/apache/solr/rest/schema/TestBulkSchemaAPI.java
index 166d1fc..9f37967 100644
--- a/solr/core/src/test/org/apache/solr/rest/schema/TestBulkSchemaAPI.java
+++ b/solr/core/src/test/org/apache/solr/rest/schema/TestBulkSchemaAPI.java
@@ -396,7 +396,7 @@ public class TestBulkSchemaAPI extends RestTestBase {
         "                       'name' : 'myNewTxtField',\n" +
         "                       'class':'solr.TextField',\n" +
         "                       'positionIncrementGap':'100',\n" +
-        "                       'analyzer' : {\n" +
+        "                       'indexAnalyzer' : {\n" +
         "                               'charFilters':[\n" +
         "                                          {\n" +
         "                                           'class':'solr.PatternReplaceCharFilterFactory',\n" +
@@ -407,7 +407,32 @@ public class TestBulkSchemaAPI extends RestTestBase {
         "                               'tokenizer':{'class':'solr.WhitespaceTokenizerFactory'},\n" +
         "                               'filters':[\n" +
         "                                          {\n" +
-        "                                           'class':'solr.WordDelimiterFilterFactory',\n" +
+        "                                           'class':'solr.WordDelimiterGraphFilterFactory',\n" +
+        "                                           'preserveOriginal':'0'\n" +
+        "                                          },\n" +
+        "                                          {\n" +
+        "                                           'class':'solr.StopFilterFactory',\n" +
+        "                                           'words':'stopwords.txt',\n" +
+        "                                           'ignoreCase':'true'\n" +
+        "                                          },\n" +
+        "                                          {'class':'solr.LowerCaseFilterFactory'},\n" +
+        "                                          {'class':'solr.ASCIIFoldingFilterFactory'},\n" +
+        "                                          {'class':'solr.KStemFilterFactory'},\n" +
+        "                                          {'class':'solr.FlattenGraphFilterFactory'}\n" +
+        "                                         ]\n" +
+        "                               },\n" +
+        "                       'queryAnalyzer' : {\n" +
+        "                               'charFilters':[\n" +
+        "                                          {\n" +
+        "                                           'class':'solr.PatternReplaceCharFilterFactory',\n" +
+        "                                           'replacement':'$1$1',\n" +
+        "                                           'pattern':'([a-zA-Z])\\\\\\\\1+'\n" +
+        "                                          }\n" +
+        "                                         ],\n" +
+        "                               'tokenizer':{'class':'solr.WhitespaceTokenizerFactory'},\n" +
+        "                               'filters':[\n" +
+        "                                          {\n" +
+        "                                           'class':'solr.WordDelimiterGraphFilterFactory',\n" +
         "                                           'preserveOriginal':'0'\n" +
         "                                          },\n" +
         "                                          {\n" +

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/example-DIH/solr/db/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/db/conf/managed-schema b/solr/example/example-DIH/solr/db/conf/managed-schema
index eead56f..1a1012f 100644
--- a/solr/example/example-DIH/solr/db/conf/managed-schema
+++ b/solr/example/example-DIH/solr/db/conf/managed-schema
@@ -500,7 +500,7 @@
     <!-- A text field with defaults appropriate for English, plus
    aggressive word-splitting and autophrase features enabled.
    This field is just like text_en, except it adds
-   WordDelimiterFilter to enable splitting and matching of
+   WordDelimiterGraphFilter to enable splitting and matching of
    words on case-change, alpha numeric boundaries, and
    non-alphanumeric chars.  This means certain compound word
    cases will work, for example query "wi fi" will match
@@ -518,10 +518,11 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
                 />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -530,7 +531,7 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
                 />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
@@ -540,16 +541,29 @@
     <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.EnglishMinimalStemFilterFactory"/>
         <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-             possible with WordDelimiterFilter in conjuncton with stemming. -->
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
     </fieldType>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/example-DIH/solr/db/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/db/conf/synonyms.txt b/solr/example/example-DIH/solr/db/conf/synonyms.txt
index 7f72128..eab4ee8 100644
--- a/solr/example/example-DIH/solr/db/conf/synonyms.txt
+++ b/solr/example/example-DIH/solr/db/conf/synonyms.txt
@@ -21,7 +21,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/example-DIH/solr/mail/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/mail/conf/managed-schema b/solr/example/example-DIH/solr/mail/conf/managed-schema
index 076f83f..016f105 100644
--- a/solr/example/example-DIH/solr/mail/conf/managed-schema
+++ b/solr/example/example-DIH/solr/mail/conf/managed-schema
@@ -419,7 +419,7 @@
     <!-- A text field with defaults appropriate for English, plus
    aggressive word-splitting and autophrase features enabled.
    This field is just like text_en, except it adds
-   WordDelimiterFilter to enable splitting and matching of
+   WordDelimiterGraphFilter to enable splitting and matching of
    words on case-change, alpha numeric boundaries, and
    non-alphanumeric chars.  This means certain compound word
    cases will work, for example query "wi fi" will match
@@ -437,10 +437,11 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
                 />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -449,7 +450,7 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
                 />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
@@ -459,16 +460,29 @@
     <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.EnglishMinimalStemFilterFactory"/>
         <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-             possible with WordDelimiterFilter in conjuncton with stemming. -->
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
     </fieldType>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/example-DIH/solr/mail/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/mail/conf/synonyms.txt b/solr/example/example-DIH/solr/mail/conf/synonyms.txt
index 7f72128..eab4ee8 100644
--- a/solr/example/example-DIH/solr/mail/conf/synonyms.txt
+++ b/solr/example/example-DIH/solr/mail/conf/synonyms.txt
@@ -21,7 +21,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/example-DIH/solr/rss/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/rss/conf/managed-schema b/solr/example/example-DIH/solr/rss/conf/managed-schema
index e35f49d..2064c58 100644
--- a/solr/example/example-DIH/solr/rss/conf/managed-schema
+++ b/solr/example/example-DIH/solr/rss/conf/managed-schema
@@ -242,18 +242,19 @@
         <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <charFilter class="solr.HTMLStripCharFilterFactory"/>
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
@@ -450,7 +451,7 @@
     <!-- A text field with defaults appropriate for English, plus
    aggressive word-splitting and autophrase features enabled.
    This field is just like text_en, except it adds
-   WordDelimiterFilter to enable splitting and matching of
+   WordDelimiterGraphFilter to enable splitting and matching of
    words on case-change, alpha numeric boundaries, and
    non-alphanumeric chars.  This means certain compound word
    cases will work, for example query "wi fi" will match
@@ -468,10 +469,11 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
                 />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -480,7 +482,7 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
                 />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
@@ -490,16 +492,29 @@
     <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.EnglishMinimalStemFilterFactory"/>
         <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-             possible with WordDelimiterFilter in conjuncton with stemming. -->
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
     </fieldType>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/example-DIH/solr/rss/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/rss/conf/synonyms.txt b/solr/example/example-DIH/solr/rss/conf/synonyms.txt
index 7f72128..eab4ee8 100644
--- a/solr/example/example-DIH/solr/rss/conf/synonyms.txt
+++ b/solr/example/example-DIH/solr/rss/conf/synonyms.txt
@@ -21,7 +21,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/example-DIH/solr/solr/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/solr/conf/managed-schema b/solr/example/example-DIH/solr/solr/conf/managed-schema
index 6be0ad9..04c85c0 100644
--- a/solr/example/example-DIH/solr/solr/conf/managed-schema
+++ b/solr/example/example-DIH/solr/solr/conf/managed-schema
@@ -500,7 +500,7 @@
     <!-- A text field with defaults appropriate for English, plus
    aggressive word-splitting and autophrase features enabled.
    This field is just like text_en, except it adds
-   WordDelimiterFilter to enable splitting and matching of
+   WordDelimiterGraphFilter to enable splitting and matching of
    words on case-change, alpha numeric boundaries, and
    non-alphanumeric chars.  This means certain compound word
    cases will work, for example query "wi fi" will match
@@ -518,10 +518,11 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
                 />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -530,7 +531,7 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
                 />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
@@ -540,16 +541,29 @@
     <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.EnglishMinimalStemFilterFactory"/>
         <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-             possible with WordDelimiterFilter in conjuncton with stemming. -->
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
     </fieldType>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/example-DIH/solr/solr/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/solr/conf/synonyms.txt b/solr/example/example-DIH/solr/solr/conf/synonyms.txt
index 7f72128..eab4ee8 100644
--- a/solr/example/example-DIH/solr/solr/conf/synonyms.txt
+++ b/solr/example/example-DIH/solr/solr/conf/synonyms.txt
@@ -21,7 +21,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/example-DIH/solr/tika/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/tika/conf/managed-schema b/solr/example/example-DIH/solr/tika/conf/managed-schema
index c4dccb2..58b2a80 100644
--- a/solr/example/example-DIH/solr/tika/conf/managed-schema
+++ b/solr/example/example-DIH/solr/tika/conf/managed-schema
@@ -353,7 +353,7 @@
     <!-- A text field with defaults appropriate for English, plus
    aggressive word-splitting and autophrase features enabled.
    This field is just like text_en, except it adds
-   WordDelimiterFilter to enable splitting and matching of
+   WordDelimiterGraphFilter to enable splitting and matching of
    words on case-change, alpha numeric boundaries, and
    non-alphanumeric chars.  This means certain compound word
    cases will work, for example query "wi fi" will match
@@ -362,13 +362,14 @@
     <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.PorterStemFilterFactory"/>
       </analyzer>
@@ -377,13 +378,23 @@
     <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.EnglishMinimalStemFilterFactory"/>
         <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-             possible with WordDelimiterFilter in conjuncton with stemming. -->
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
     </fieldType>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/files/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/files/conf/managed-schema b/solr/example/files/conf/managed-schema
index e936bcd..ff209be 100644
--- a/solr/example/files/conf/managed-schema
+++ b/solr/example/files/conf/managed-schema
@@ -145,27 +145,39 @@
     <analyzer type="index">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
-      <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="1" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="1"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="1" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory" />
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
       <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
-      <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="0" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="0"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="0" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
     </analyzer>
   </fieldType>
   <fieldType name="text_en_splitting_tight" class="solr.TextField" autoGeneratePhraseQueries="true" positionIncrementGap="100">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+      <filter class="solr.SynonymFilterFactory" expand="false" ignoreCase="true" synonyms="synonyms.txt"/>
+      <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="1" generateNumberParts="0" generateWordParts="0" catenateAll="0" catenateWords="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+      <filter class="solr.EnglishMinimalStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory" />
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" expand="false" ignoreCase="true" synonyms="synonyms.txt"/>
       <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
-      <filter class="solr.WordDelimiterFilterFactory" catenateNumbers="1" generateNumberParts="0" generateWordParts="0" catenateAll="0" catenateWords="1"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="1" generateNumberParts="0" generateWordParts="0" catenateAll="0" catenateWords="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.EnglishMinimalStemFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/example/files/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/example/files/conf/synonyms.txt b/solr/example/files/conf/synonyms.txt
index 7f72128..eab4ee8 100644
--- a/solr/example/files/conf/synonyms.txt
+++ b/solr/example/files/conf/synonyms.txt
@@ -21,7 +21,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/server/solr/configsets/basic_configs/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/basic_configs/conf/managed-schema b/solr/server/solr/configsets/basic_configs/conf/managed-schema
index d7aacc4..09aaae3 100644
--- a/solr/server/solr/configsets/basic_configs/conf/managed-schema
+++ b/solr/server/solr/configsets/basic_configs/conf/managed-schema
@@ -436,7 +436,7 @@
     <!-- A text field with defaults appropriate for English, plus
          aggressive word-splitting and autophrase features enabled.
          This field is just like text_en, except it adds
-         WordDelimiterFilter to enable splitting and matching of
+         WordDelimiterGraphFilter to enable splitting and matching of
          words on case-change, alpha numeric boundaries, and
          non-alphanumeric chars.  This means certain compound word
          cases will work, for example query "wi fi" will match
@@ -455,10 +455,11 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
         />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -467,7 +468,7 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
         />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
@@ -478,16 +479,29 @@
          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
     <dynamicField name="*_txt_en_split_tight" type="text_en_splitting_tight"  indexed="true"  stored="true"/>
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.EnglishMinimalStemFilterFactory"/>
         <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-             possible with WordDelimiterFilter in conjuncton with stemming. -->
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
     </fieldType>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/server/solr/configsets/basic_configs/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/basic_configs/conf/synonyms.txt b/solr/server/solr/configsets/basic_configs/conf/synonyms.txt
index 7f72128..eab4ee8 100644
--- a/solr/server/solr/configsets/basic_configs/conf/synonyms.txt
+++ b/solr/server/solr/configsets/basic_configs/conf/synonyms.txt
@@ -21,7 +21,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema b/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema
index b716f9c..0319eb0 100644
--- a/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema
+++ b/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema
@@ -435,7 +435,7 @@
     <!-- A text field with defaults appropriate for English, plus
          aggressive word-splitting and autophrase features enabled.
          This field is just like text_en, except it adds
-         WordDelimiterFilter to enable splitting and matching of
+         WordDelimiterGraphFilter to enable splitting and matching of
          words on case-change, alpha numeric boundaries, and
          non-alphanumeric chars.  This means certain compound word
          cases will work, for example query "wi fi" will match
@@ -454,10 +454,11 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
         />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -466,7 +467,7 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
         />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
@@ -477,16 +478,29 @@
          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
     <dynamicField name="*_txt_en_split_tight" type="text_en_splitting_tight"  indexed="true"  stored="true"/>
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.EnglishMinimalStemFilterFactory"/>
         <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-             possible with WordDelimiterFilter in conjuncton with stemming. -->
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
     </fieldType>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/server/solr/configsets/data_driven_schema_configs/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/data_driven_schema_configs/conf/synonyms.txt b/solr/server/solr/configsets/data_driven_schema_configs/conf/synonyms.txt
index 7f72128..eab4ee8 100644
--- a/solr/server/solr/configsets/data_driven_schema_configs/conf/synonyms.txt
+++ b/solr/server/solr/configsets/data_driven_schema_configs/conf/synonyms.txt
@@ -21,7 +21,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema b/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema
index 9caf3d6..17dadd4 100644
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema
+++ b/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema
@@ -544,7 +544,7 @@
     <!-- A text field with defaults appropriate for English, plus
    aggressive word-splitting and autophrase features enabled.
    This field is just like text_en, except it adds
-   WordDelimiterFilter to enable splitting and matching of
+   WordDelimiterGraphFilter to enable splitting and matching of
    words on case-change, alpha numeric boundaries, and
    non-alphanumeric chars.  This means certain compound word
    cases will work, for example query "wi fi" will match
@@ -562,10 +562,11 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
                 />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
@@ -574,7 +575,7 @@
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
                 />
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.PorterStemFilterFactory"/>
@@ -584,16 +585,29 @@
     <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
-      <analyzer>
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
+        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+        <filter class="solr.EnglishMinimalStemFilterFactory"/>
+        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
+        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
         <filter class="solr.EnglishMinimalStemFilterFactory"/>
         <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-             possible with WordDelimiterFilter in conjuncton with stemming. -->
+             possible with WordDelimiterGraphFilter in conjuncton with stemming. -->
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
     </fieldType>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/server/solr/configsets/sample_techproducts_configs/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/synonyms.txt b/solr/server/solr/configsets/sample_techproducts_configs/conf/synonyms.txt
index 7f72128..eab4ee8 100644
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/synonyms.txt
+++ b/solr/server/solr/configsets/sample_techproducts_configs/conf/synonyms.txt
@@ -21,7 +21,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/solrj/src/test-files/solrj/solr/collection1/conf/schema-sql.xml
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test-files/solrj/solr/collection1/conf/schema-sql.xml b/solr/solrj/src/test-files/solrj/solr/collection1/conf/schema-sql.xml
index 56bf625..96bbcd8 100644
--- a/solr/solrj/src/test-files/solrj/solr/collection1/conf/schema-sql.xml
+++ b/solr/solrj/src/test-files/solrj/solr/collection1/conf/schema-sql.xml
@@ -72,26 +72,41 @@
   <fieldtype name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldtype>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldtype name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldtype>
 
   <fieldtype name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -191,9 +206,16 @@
     </analyzer>
   </fieldtype>
   <fieldtype name="lowerpunctfilt" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+              catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -265,15 +287,16 @@
   <fieldtype name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -285,15 +308,16 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
@@ -304,8 +328,9 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -318,13 +343,14 @@
   <fieldtype name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -334,13 +360,14 @@
   <fieldtype name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>


[25/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniYARNCluster.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniYARNCluster.java b/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniYARNCluster.java
deleted file mode 100644
index 6931f87..0000000
--- a/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/hack/MiniYARNCluster.java
+++ /dev/null
@@ -1,409 +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.hadoop.hack;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Locale;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileContext;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
-import org.apache.hadoop.service.AbstractService;
-import org.apache.hadoop.service.CompositeService;
-import org.apache.hadoop.util.Shell;
-import org.apache.hadoop.util.Shell.ShellCommandExecutor;
-import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.hadoop.yarn.event.Dispatcher;
-import org.apache.hadoop.yarn.exceptions.YarnException;
-import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
-import org.apache.hadoop.yarn.factories.RecordFactory;
-import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
-import org.apache.hadoop.yarn.server.api.ResourceTracker;
-import org.apache.hadoop.yarn.server.api.protocolrecords.NodeHeartbeatRequest;
-import org.apache.hadoop.yarn.server.api.protocolrecords.NodeHeartbeatResponse;
-import org.apache.hadoop.yarn.server.api.protocolrecords.RegisterNodeManagerRequest;
-import org.apache.hadoop.yarn.server.api.protocolrecords.RegisterNodeManagerResponse;
-import org.apache.hadoop.yarn.server.nodemanager.Context;
-import org.apache.hadoop.yarn.server.nodemanager.NodeHealthCheckerService;
-import org.apache.hadoop.yarn.server.nodemanager.NodeManager;
-import org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdater;
-import org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdaterImpl;
-import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager;
-import org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService;
-
-public class MiniYARNCluster extends CompositeService {
-
-  private static final Log LOG = LogFactory.getLog(MiniYARNCluster.class);
-
-  // temp fix until metrics system can auto-detect itself running in unit test:
-  static {
-    DefaultMetricsSystem.setMiniClusterMode(true);
-  }
-
-  private NodeManager[] nodeManagers;
-  private ResourceManager resourceManager;
-
-  private ResourceManagerWrapper resourceManagerWrapper;
-  
-  private File testWorkDir;
-
-  // Number of nm-local-dirs per nodemanager
-  private int numLocalDirs;
-  // Number of nm-log-dirs per nodemanager
-  private int numLogDirs;
-
-  /**
-   * @param testName name of the test
-   * @param noOfNodeManagers the number of node managers in the cluster
-   * @param numLocalDirs the number of nm-local-dirs per nodemanager
-   * @param numLogDirs the number of nm-log-dirs per nodemanager
-   */
-  public MiniYARNCluster(String testName, int noOfNodeManagers,
-                         int numLocalDirs, int numLogDirs, File testWorkDir) {
-    super(testName.replace("$", ""));
-    this.numLocalDirs = numLocalDirs;
-    this.numLogDirs = numLogDirs;
-    String testSubDir = testName.replace("$", "");
-    File targetWorkDir = new File(testWorkDir, testSubDir);
-    try {
-      FileContext.getLocalFSFileContext().delete(
-          new Path(targetWorkDir.getAbsolutePath()), true);
-    } catch (Exception e) {
-      LOG.warn("COULD NOT CLEANUP", e);
-      throw new YarnRuntimeException("could not cleanup test dir: "+ e, e);
-    } 
-
-    if (Shell.WINDOWS) {
-      // The test working directory can exceed the maximum path length supported
-      // by some Windows APIs and cmd.exe (260 characters).  To work around this,
-      // create a symlink in temporary storage with a much shorter path,
-      // targeting the full path to the test working directory.  Then, use the
-      // symlink as the test working directory.
-      String targetPath = targetWorkDir.getAbsolutePath();
-      File link = new File(System.getProperty("java.io.tmpdir"),
-        String.valueOf(System.nanoTime()));
-      String linkPath = link.getAbsolutePath();
-
-      try {
-        FileContext.getLocalFSFileContext().delete(new Path(linkPath), true);
-      } catch (IOException e) {
-        throw new YarnRuntimeException("could not cleanup symlink: " + linkPath, e);
-      }
-
-      // Guarantee target exists before creating symlink.
-      targetWorkDir.mkdirs();
-
-      ShellCommandExecutor shexec = new ShellCommandExecutor(
-        Shell.getSymlinkCommand(targetPath, linkPath));
-      try {
-        shexec.execute();
-      } catch (IOException e) {
-        throw new YarnRuntimeException(String.format(Locale.ENGLISH,
-          "failed to create symlink from %s to %s, shell output: %s", linkPath,
-          targetPath, shexec.getOutput()), e);
-      }
-
-      this.testWorkDir = link;
-    } else {
-      this.testWorkDir = targetWorkDir;
-    }
-
-    resourceManagerWrapper = new ResourceManagerWrapper();
-    addService(resourceManagerWrapper);
-    nodeManagers = new CustomNodeManager[noOfNodeManagers];
-    for(int index = 0; index < noOfNodeManagers; index++) {
-      addService(new NodeManagerWrapper(index));
-      nodeManagers[index] = new CustomNodeManager();
-    }
-  }
-  
-  @Override
-  public void serviceInit(Configuration conf) throws Exception {
-    super.serviceInit(conf instanceof YarnConfiguration ? conf
-                                                        : new YarnConfiguration(
-                                                          conf));
-  }
-
-  public File getTestWorkDir() {
-    return testWorkDir;
-  }
-
-  public ResourceManager getResourceManager() {
-    return this.resourceManager;
-  }
-
-  public NodeManager getNodeManager(int i) {
-    return this.nodeManagers[i];
-  }
-
-  public static String getHostname() {
-    try {
-      return InetAddress.getLocalHost().getHostName();
-    }
-    catch (UnknownHostException ex) {
-      throw new RuntimeException(ex);
-    }
-  }
-
-  private class ResourceManagerWrapper extends AbstractService {
-    public ResourceManagerWrapper() {
-      super(ResourceManagerWrapper.class.getName());
-    }
-
-    @Override
-    public synchronized void serviceStart() throws Exception {
-      try {
-        getConfig().setBoolean(YarnConfiguration.IS_MINI_YARN_CLUSTER, true);
-        if (!getConfig().getBoolean(
-            YarnConfiguration.YARN_MINICLUSTER_FIXED_PORTS,
-            YarnConfiguration.DEFAULT_YARN_MINICLUSTER_FIXED_PORTS)) {
-          // pick free random ports.
-          String hostname = MiniYARNCluster.getHostname();
-          getConfig().set(YarnConfiguration.RM_ADDRESS,
-              hostname + ":0");
-          getConfig().set(YarnConfiguration.RM_ADMIN_ADDRESS,
-              hostname + ":0");
-          getConfig().set(YarnConfiguration.RM_SCHEDULER_ADDRESS,
-              hostname + ":0");
-          getConfig().set(YarnConfiguration.RM_RESOURCE_TRACKER_ADDRESS,
-              hostname + ":0");
-          getConfig().set(YarnConfiguration.RM_WEBAPP_ADDRESS,
-              hostname + ":0");
-        }
-        resourceManager = new ResourceManager() {
-          @Override
-          protected void doSecureLogin() throws IOException {
-            // Don't try to login using keytab in the testcase.
-          };
-        };
-        resourceManager.init(getConfig());
-        new Thread() {
-          public void run() {
-            resourceManager.start();
-          };
-        }.start();
-        int waitCount = 0;
-        while (resourceManager.getServiceState() == STATE.INITED
-            && waitCount++ < 60) {
-          LOG.info("Waiting for RM to start...");
-          Thread.sleep(1500);
-        }
-        if (resourceManager.getServiceState() != STATE.STARTED) {
-          // RM could have failed.
-          throw new IOException(
-              "ResourceManager failed to start. Final state is "
-                  + resourceManager.getServiceState());
-        }
-        super.serviceStart();
-      } catch (Throwable t) {
-        throw new YarnRuntimeException(t);
-      }
-      LOG.info("MiniYARN ResourceManager address: " +
-               getConfig().get(YarnConfiguration.RM_ADDRESS));
-      LOG.info("MiniYARN ResourceManager web address: " +
-               getConfig().get(YarnConfiguration.RM_WEBAPP_ADDRESS));
-    }
-
-    @Override
-    public synchronized void serviceStop() throws Exception {
-      if (resourceManager != null) {
-        resourceManager.stop();
-      }
-      super.serviceStop();
-
-      if (Shell.WINDOWS) {
-        // On Windows, clean up the short temporary symlink that was created to
-        // work around path length limitation.
-        String testWorkDirPath = testWorkDir.getAbsolutePath();
-        try {
-          FileContext.getLocalFSFileContext().delete(new Path(testWorkDirPath),
-            true);
-        } catch (IOException e) {
-          LOG.warn("could not cleanup symlink: " +
-            testWorkDir.getAbsolutePath());
-        }
-      }
-    }
-  }
-
-  private class NodeManagerWrapper extends AbstractService {
-    int index = 0;
-
-    public NodeManagerWrapper(int i) {
-      super(NodeManagerWrapper.class.getName() + "_" + i);
-      index = i;
-    }
-
-    public synchronized void serviceInit(Configuration conf) throws Exception {
-      Configuration config = new YarnConfiguration(conf);
-      super.serviceInit(config);
-    }
-
-    /**
-     * Create local/log directories
-     * @param dirType type of directories i.e. local dirs or log dirs 
-     * @param numDirs number of directories
-     * @return the created directories as a comma delimited String
-     */
-    private String prepareDirs(String dirType, int numDirs) {
-      File []dirs = new File[numDirs];
-      String dirsString = "";
-      for (int i = 0; i < numDirs; i++) {
-        dirs[i]= new File(testWorkDir, MiniYARNCluster.this.getName()
-            + "-" + dirType + "Dir-nm-" + index + "_" + i);
-        dirs[i].mkdirs();
-        LOG.info("Created " + dirType + "Dir in " + dirs[i].getAbsolutePath());
-        String delimiter = (i > 0) ? "," : "";
-        dirsString = dirsString.concat(delimiter + dirs[i].getAbsolutePath());
-      }
-      return dirsString;
-    }
-
-    public synchronized void serviceStart() throws Exception {
-      try {
-        // create nm-local-dirs and configure them for the nodemanager
-        String localDirsString = prepareDirs("local", numLocalDirs);
-        getConfig().set(YarnConfiguration.NM_LOCAL_DIRS, localDirsString);
-        // create nm-log-dirs and configure them for the nodemanager
-        String logDirsString = prepareDirs("log", numLogDirs);
-        getConfig().set(YarnConfiguration.NM_LOG_DIRS, logDirsString);
-
-        File remoteLogDir =
-            new File(testWorkDir, MiniYARNCluster.this.getName()
-                + "-remoteLogDir-nm-" + index);
-        remoteLogDir.mkdir();
-        getConfig().set(YarnConfiguration.NM_REMOTE_APP_LOG_DIR,
-              remoteLogDir.getAbsolutePath());
-        // By default AM + 2 containers
-        getConfig().setInt(YarnConfiguration.NM_PMEM_MB, 4*1024);
-        getConfig().set(YarnConfiguration.NM_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-        getConfig().set(YarnConfiguration.NM_LOCALIZER_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-        getConfig().set(YarnConfiguration.NM_WEBAPP_ADDRESS,
-                        MiniYARNCluster.getHostname() + ":0");
-
-        // Disable resource checks by default
-        if (!getConfig().getBoolean(
-            YarnConfiguration.YARN_MINICLUSTER_CONTROL_RESOURCE_MONITORING,
-            YarnConfiguration.
-                DEFAULT_YARN_MINICLUSTER_CONTROL_RESOURCE_MONITORING)) {
-          getConfig().setBoolean(YarnConfiguration.NM_PMEM_CHECK_ENABLED, false);
-          getConfig().setBoolean(YarnConfiguration.NM_VMEM_CHECK_ENABLED, false);
-        }
-
-        LOG.info("Starting NM: " + index);
-        nodeManagers[index].init(getConfig());
-        new Thread() {
-          public void run() {
-            nodeManagers[index].start();
-          };
-        }.start();
-        int waitCount = 0;
-        while (nodeManagers[index].getServiceState() == STATE.INITED
-            && waitCount++ < 60) {
-          LOG.info("Waiting for NM " + index + " to start...");
-          Thread.sleep(1000);
-        }
-        if (nodeManagers[index].getServiceState() != STATE.STARTED) {
-          // RM could have failed.
-          throw new IOException("NodeManager " + index + " failed to start");
-        }
-        super.serviceStart();
-      } catch (Throwable t) {
-        throw new YarnRuntimeException(t);
-      }
-    }
-
-    @Override
-    public synchronized void serviceStop() throws Exception {
-      if (nodeManagers[index] != null) {
-        nodeManagers[index].stop();
-      }
-      super.serviceStop();
-    }
-  }
-  
-  private class CustomNodeManager extends NodeManager {
-    @Override
-    protected void doSecureLogin() throws IOException {
-      // Don't try to login using keytab in the testcase.
-    };
-
-    @Override
-    protected NodeStatusUpdater createNodeStatusUpdater(Context context,
-        Dispatcher dispatcher, NodeHealthCheckerService healthChecker) {
-      return new NodeStatusUpdaterImpl(context, dispatcher,
-          healthChecker, metrics) {
-        @Override
-        protected ResourceTracker getRMClient() {
-          final ResourceTrackerService rt = resourceManager
-              .getResourceTrackerService();
-          final RecordFactory recordFactory =
-            RecordFactoryProvider.getRecordFactory(null);
-
-          // For in-process communication without RPC
-          return new ResourceTracker() {
-
-            @Override
-            public NodeHeartbeatResponse nodeHeartbeat(
-                NodeHeartbeatRequest request) throws YarnException,
-                IOException {
-              NodeHeartbeatResponse response = recordFactory.newRecordInstance(
-                  NodeHeartbeatResponse.class);
-              try {
-                response = rt.nodeHeartbeat(request);
-              } catch (YarnException e) {
-                LOG.info("Exception in heartbeat from node " + 
-                    request.getNodeStatus().getNodeId(), e);
-                throw e;
-              }
-              return response;
-            }
-
-            @Override
-            public RegisterNodeManagerResponse registerNodeManager(
-                RegisterNodeManagerRequest request)
-                throws YarnException, IOException {
-              RegisterNodeManagerResponse response = recordFactory.
-                  newRecordInstance(RegisterNodeManagerResponse.class);
-              try {
-                response = rt.registerNodeManager(request);
-              } catch (YarnException e) {
-                LOG.info("Exception in node registration from "
-                    + request.getNodeId().toString(), e);
-                throw e;
-              }
-              return response;
-            }
-          };
-        };
-
-        @Override
-        protected void stopRMProxy() {
-          return;
-        }
-      };
-    };
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-cell/README.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-cell/README.txt b/solr/contrib/morphlines-cell/README.txt
deleted file mode 100644
index a3a1ba9..0000000
--- a/solr/contrib/morphlines-cell/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Apache Solr Morphlines-Cell
-
-*Experimental* - This contrib is currently subject to change in ways that may 
-break back compatibility.
-
-This contrib provides a variety of Kite Morphlines features for Solr Cell type functionality.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-cell/build.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-cell/build.xml b/solr/contrib/morphlines-cell/build.xml
deleted file mode 100644
index 397472d..0000000
--- a/solr/contrib/morphlines-cell/build.xml
+++ /dev/null
@@ -1,144 +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.
- -->
-
-<project name="solr-morphlines-cell" default="default">
-
-  <description>
-    Solr Cell Morphline commands.
-  </description>
-
-  <import file="../contrib-build.xml"/>
-  
-  <solr-contrib-uptodate name="extraction" 
-                         property="solr-extraction.uptodate" 
-                         classpath.property="solr-cell.jar"/>
-  
-  <target name="compile-solr-extraction" unless="solr-extraction.uptodate">
-   <ant dir="${common-solr.dir}/contrib/extraction" target="compile-core" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <solr-contrib-uptodate name="morphlines-core" 
-                         property="solr-morphlines-core.uptodate"/>
-  
-  <target name="compile-morphlines-core" unless="solr-morphlines-core.uptodate">
-   <ant dir="${common-solr.dir}/contrib/morphlines-core" target="compile-core" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-    <ant dir="${common-solr.dir}/contrib/morphlines-core" target="compile-test" inheritAll="false">
-       <propertyset refid="uptodate.and.compiled.properties"/>
-     </ant>
-  </target>
-  
-  <solr-contrib-uptodate name="map-reduce" 
-                         property="solr-map-reduce.uptodate" 
-                         classpath.property="MapReduceIndexerTool.jar"/>
-  <target name="compile-map-reduce" unless="solr-map-reduce.uptodate">
-    
-   <ant dir="${common-solr.dir}/contrib/map-reduce" target="compile-core" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="resolve-extraction-libs">
-    <ant dir="${common-solr.dir}/contrib/extraction" target="resolve" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="resolve-morphlines-core-libs">
-    <ant dir="${common-solr.dir}/contrib/morphlines-core" target="resolve" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="resolve-map-reduce-libs">
-    <ant dir="${common-solr.dir}/contrib/map-reduce" target="resolve" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <path id="classpath.additions">
-    <pathelement location="${common-solr.dir}/build/contrib/solr-cell/classes/java"/>
-    <fileset dir="${common-solr.dir}/contrib/extraction/lib" excludes="${common.classpath.excludes}"/>
-    <pathelement location="${common-solr.dir}/build/contrib/solr-morphlines-core/classes/java"/>
-    <fileset dir="${common-solr.dir}/contrib/morphlines-core/lib" excludes="${common.classpath.excludes}"/>
-    <!-- <pathelement location="${common-solr.dir}/build/contrib/solr-map-reduce/classes/java"/> -->
-    <!-- <fileset dir="${common-solr.dir}/contrib/map-reduce/lib" excludes="${common.classpath.excludes}"/> -->
-  </path>
-
-  <path id="classpath">
-    <path refid="solr.base.classpath"/>
-    <path refid="classpath.additions"/>
-  </path>
-  
-  <path id="test.classpath">
-    <path refid="solr.test.base.classpath"/>
-    <path refid="classpath.additions"/>
-    <pathelement location="${common-solr.dir}/build/contrib/solr-morphlines-core/classes/test"/>
-    <pathelement location="${common-solr.dir}/contrib/morphlines-core/src/test-files"/>
-    <fileset dir="${common-solr.dir}/contrib/morphlines-core/test-lib" excludes="${common.classpath.excludes}"/>
-  </path>
-
-  <path id="javadoc.classpath">
-    <path refid="junit-path"/>
-    <path refid="classpath"/>
-    <pathelement location="${ant.home}/lib/ant.jar"/>
-    <fileset dir=".">
-      <exclude name="build/**/*.jar"/>
-      <include name="**/lib/*.jar"/>
-    </fileset>
-  </path>
-  
-  <!-- TODO: make this nicer like lucene? -->
-  <target name="javadocs" depends="compile-core,define-lucene-javadoc-url,lucene-javadocs,javadocs-solr-core,javadocs-extraction,javadocs-morphlines-core,check-javadocs-uptodate" unless="javadocs-uptodate-${name}">
-        <sequential>
-      <mkdir dir="${javadoc.dir}/${name}"/>
-      <solr-invoke-javadoc>
-        <solrsources>
-          <packageset dir="${src.dir}"/>
-        </solrsources>
-        <links>
-          <link href="../solr-solrj"/>
-          <link href="../solr-core"/>
-          <link href="../solr-cell"/>
-          <link href="../solr-morphlines-core"/>
-        </links>
-      </solr-invoke-javadoc>
-      <solr-jarify basedir="${javadoc.dir}/${name}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
-     </sequential>
-  </target>
-  
-  <target name="javadocs-extraction">
-    <ant dir="${common-solr.dir}/contrib/extraction" target="javadocs" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="javadocs-morphlines-core">
-    <ant dir="${common-solr.dir}/contrib/morphlines-core" target="javadocs" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="compile-core" depends="resolve-extraction-libs, resolve-morphlines-core-libs, resolve-map-reduce-libs, compile-solr-extraction, compile-morphlines-core, solr-contrib-build.compile-core"/>
-  <target name="dist" depends="common-solr.dist"/>
-
-</project>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-cell/ivy.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-cell/ivy.xml b/solr/contrib/morphlines-cell/ivy.xml
deleted file mode 100644
index c090f21..0000000
--- a/solr/contrib/morphlines-cell/ivy.xml
+++ /dev/null
@@ -1,35 +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.    
--->
-<ivy-module version="2.0">
-  <info organisation="org.apache.solr" module="morphlines-cell" />
-  <configurations defaultconfmapping="compile->master;test->master">
-    <conf name="compile" transitive="false" />
-    <conf name="test" transitive="false" />
-  </configurations>
-
-  <dependencies>
-    <dependency org="org.kitesdk" name="kite-morphlines-tika-core" rev="${/org.kitesdk/kite-morphlines-tika-core}" conf="compile" />
-    <dependency org="org.kitesdk" name="kite-morphlines-tika-decompress" rev="${/org.kitesdk/kite-morphlines-tika-decompress}" conf="compile" />
-    <dependency org="org.kitesdk" name="kite-morphlines-json" rev="${/org.kitesdk/kite-morphlines-json}" conf="compile" />
-    <dependency org="org.kitesdk" name="kite-morphlines-twitter" rev="${/org.kitesdk/kite-morphlines-twitter}" conf="compile" />
-
-    <exclude org="*" ext="*" matcher="regexp" type="${ivy.exclude.types}" />
-
-  </dependencies>
-</ivy-module>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/SolrCellBuilder.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/SolrCellBuilder.java b/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/SolrCellBuilder.java
deleted file mode 100644
index d4483a5..0000000
--- a/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/SolrCellBuilder.java
+++ /dev/null
@@ -1,348 +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.morphlines.cell;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.IllformedLocaleException;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ListMultimap;
-import com.google.common.io.Closeables;
-import com.typesafe.config.Config;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.SolrInputField;
-import org.apache.solr.common.params.MultiMapSolrParams;
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.SuppressForbidden;
-import org.apache.solr.handler.extraction.ExtractingParams;
-import org.apache.solr.handler.extraction.ExtractionDateUtil;
-import org.apache.solr.handler.extraction.SolrContentHandler;
-import org.apache.solr.handler.extraction.SolrContentHandlerFactory;
-import org.apache.solr.morphlines.solr.SolrLocator;
-import org.apache.solr.schema.IndexSchema;
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.io.TikaInputStream;
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.mime.MediaType;
-import org.apache.tika.parser.ParseContext;
-import org.apache.tika.parser.Parser;
-import org.apache.tika.sax.XHTMLContentHandler;
-import org.apache.tika.sax.xpath.Matcher;
-import org.apache.tika.sax.xpath.MatchingContentHandler;
-import org.apache.tika.sax.xpath.XPathParser;
-import org.kitesdk.morphline.api.Command;
-import org.kitesdk.morphline.api.CommandBuilder;
-import org.kitesdk.morphline.api.MorphlineCompilationException;
-import org.kitesdk.morphline.api.MorphlineContext;
-import org.kitesdk.morphline.api.MorphlineRuntimeException;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.Configs;
-import org.kitesdk.morphline.base.Fields;
-import org.kitesdk.morphline.stdio.AbstractParser;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-
-/**
- * Command that pipes the first attachment of a record into one of the given Tika parsers, then maps
- * the Tika output back to a record using SolrCell.
- * <p>
- * The Tika parser is chosen from the configurable list of parsers, depending on the MIME type
- * specified in the input record. Typically, this requires an upstream DetectMimeTypeBuilder
- * in a prior command.
- */
-public final class SolrCellBuilder implements CommandBuilder {
-
-  @Override
-  public Collection<String> getNames() {
-    return Collections.singletonList("solrCell");
-  }
-
-  @Override
-  public Command build(Config config, Command parent, Command child, MorphlineContext context) {
-    return new SolrCell(this, config, parent, child, context);
-  }
-  
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private static final class SolrCell extends AbstractParser {
-    
-    private final IndexSchema schema;
-    private final List<String> dateFormats;
-    private final String xpathExpr;
-    private final List<Parser> parsers = new ArrayList<>();
-    private final SolrContentHandlerFactory solrContentHandlerFactory;
-    private final Locale locale;
-    
-    private final SolrParams solrParams;
-    private final Map<MediaType, Parser> mediaTypeToParserMap;
-    
-    private static final XPathParser PARSER = new XPathParser("xhtml", XHTMLContentHandler.XHTML);
-        
-    public static final String ADDITIONAL_SUPPORTED_MIME_TYPES = "additionalSupportedMimeTypes";
-    
-    public SolrCell(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) {
-      super(builder, config, parent, child, context);
-      
-      Config solrLocatorConfig = getConfigs().getConfig(config, "solrLocator");
-      SolrLocator locator = new SolrLocator(solrLocatorConfig, context);
-      LOG.debug("solrLocator: {}", locator);
-      this.schema = Objects.requireNonNull(locator.getIndexSchema());
-      if (LOG.isTraceEnabled()) {
-        LOG.trace("Solr schema: \n" + schema.getFields().entrySet().stream()
-                .sorted(Map.Entry.comparingByKey()).map(Map.Entry::getValue).map(Object::toString)
-                .collect(Collectors.joining("\n")));
-      }
-
-      ListMultimap<String, String> cellParams = ArrayListMultimap.create();
-      String uprefix = getConfigs().getString(config, ExtractingParams.UNKNOWN_FIELD_PREFIX, null);
-      if (uprefix != null) {
-        cellParams.put(ExtractingParams.UNKNOWN_FIELD_PREFIX, uprefix);
-      }
-      for (String capture : getConfigs().getStringList(config, ExtractingParams.CAPTURE_ELEMENTS, Collections.<String>emptyList())) {
-        cellParams.put(ExtractingParams.CAPTURE_ELEMENTS, capture);
-      }
-      Config fmapConfig = getConfigs().getConfig(config, "fmap", null);
-      if (fmapConfig != null) {
-        for (Map.Entry<String, Object> entry : new Configs().getEntrySet(fmapConfig)) {
-          cellParams.put(ExtractingParams.MAP_PREFIX + entry.getKey(), entry.getValue().toString());
-        }
-      }
-      String captureAttributes = getConfigs().getString(config, ExtractingParams.CAPTURE_ATTRIBUTES, null);
-      if (captureAttributes != null) {
-        cellParams.put(ExtractingParams.CAPTURE_ATTRIBUTES, captureAttributes);
-      }
-      String lowerNames = getConfigs().getString(config, ExtractingParams.LOWERNAMES, null);
-      if (lowerNames != null) {
-        cellParams.put(ExtractingParams.LOWERNAMES, lowerNames);
-      }
-      String defaultField = getConfigs().getString(config, ExtractingParams.DEFAULT_FIELD, null);
-      if (defaultField != null) {
-        cellParams.put(ExtractingParams.DEFAULT_FIELD, defaultField);
-      }
-      xpathExpr = getConfigs().getString(config, ExtractingParams.XPATH_EXPRESSION, null);
-      if (xpathExpr != null) {
-        cellParams.put(ExtractingParams.XPATH_EXPRESSION, xpathExpr);
-      }
-      
-      this.dateFormats = getConfigs().getStringList(config, "dateFormats", new ArrayList<>(ExtractionDateUtil.DEFAULT_DATE_FORMATS));
-      
-      String handlerStr = getConfigs().getString(config, "solrContentHandlerFactory", TrimSolrContentHandlerFactory.class.getName());
-      Class<? extends SolrContentHandlerFactory> factoryClass;
-      try {
-        factoryClass = Class.forName(handlerStr).asSubclass(SolrContentHandlerFactory.class);
-      } catch (ClassNotFoundException cnfe) {
-        throw new MorphlineCompilationException("Could not find class "
-          + handlerStr + " to use for " + "solrContentHandlerFactory", config, cnfe);
-      }
-      this.solrContentHandlerFactory = getSolrContentHandlerFactory(factoryClass, dateFormats, config);
-
-      this.locale = getLocale(getConfigs().getString(config, "locale", null));
-      
-      this.mediaTypeToParserMap = new HashMap<>();
-      //MimeTypes mimeTypes = MimeTypes.getDefaultMimeTypes(); // FIXME getMediaTypeRegistry.normalize() 
-
-      List<? extends Config> parserConfigs = getConfigs().getConfigList(config, "parsers");
-      for (Config parserConfig : parserConfigs) {
-        String parserClassName = getConfigs().getString(parserConfig, "parser");
-        
-        Object obj;
-        try {
-          obj = Class.forName(parserClassName).newInstance();
-        } catch (Throwable e) {
-          throw new MorphlineCompilationException("Cannot instantiate Tika parser: " + parserClassName, config, e);
-        }
-        if (!(obj instanceof Parser)) {
-          throw new MorphlineCompilationException("Tika parser " + obj.getClass().getName()
-              + " must be an instance of class " + Parser.class.getName(), config);
-        }
-        Parser parser = (Parser) obj;
-        this.parsers.add(parser);
-
-        List<String> mediaTypes = getConfigs().getStringList(parserConfig, SUPPORTED_MIME_TYPES, Collections.<String>emptyList());
-        for (String mediaTypeStr : mediaTypes) {
-          MediaType mediaType = parseMediaType(mediaTypeStr);
-          addSupportedMimeType(mediaTypeStr);
-          this.mediaTypeToParserMap.put(mediaType, parser);
-        }
-        
-        if (!parserConfig.hasPath(SUPPORTED_MIME_TYPES)) {
-          for (MediaType mediaType : parser.getSupportedTypes(new ParseContext())) {
-            mediaType = mediaType.getBaseType();
-            addSupportedMimeType(mediaType.toString());
-            this.mediaTypeToParserMap.put(mediaType, parser);
-          }        
-          List<String> extras = getConfigs().getStringList(parserConfig, ADDITIONAL_SUPPORTED_MIME_TYPES, Collections.<String>emptyList());
-          for (String mediaTypeStr : extras) {
-            MediaType mediaType = parseMediaType(mediaTypeStr);
-            addSupportedMimeType(mediaTypeStr);
-            this.mediaTypeToParserMap.put(mediaType, parser);            
-          }
-        }
-      }
-      //LOG.info("mediaTypeToParserMap="+mediaTypeToParserMap);
-
-      Map<String, String[]> tmp = new HashMap<>();
-      for (Map.Entry<String,Collection<String>> entry : cellParams.asMap().entrySet()) {
-        tmp.put(entry.getKey(), entry.getValue().toArray(new String[entry.getValue().size()]));
-      }
-      this.solrParams = new MultiMapSolrParams(tmp);
-      validateArguments();
-    }
-    
-    @Override
-    protected boolean doProcess(Record record, InputStream inputStream) {
-      Parser parser = detectParser(record);
-      if (parser == null) {
-        return false;
-      }
-      
-      ParseContext parseContext = new ParseContext();
-      parseContext.set(Locale.class, locale);
-      
-      Metadata metadata = new Metadata();
-      for (Entry<String, Object> entry : record.getFields().entries()) {
-        metadata.add(entry.getKey(), entry.getValue().toString());
-      }
-
-      SolrContentHandler handler = solrContentHandlerFactory.createSolrContentHandler(metadata, solrParams, schema);
-      try {
-        inputStream = TikaInputStream.get(inputStream);
-
-        ContentHandler parsingHandler = handler;
-
-        // String xpathExpr = "/xhtml:html/xhtml:body/xhtml:div/descendant:node()";
-        if (xpathExpr != null) {
-          Matcher matcher = PARSER.parse(xpathExpr);
-          parsingHandler = new MatchingContentHandler(parsingHandler, matcher);
-        }
-
-        try {
-          parser.parse(inputStream, parsingHandler, metadata, parseContext);
-        } catch (IOException | TikaException | SAXException e) {
-          throw new MorphlineRuntimeException("Cannot parse", e);
-        }
-      } finally {
-        if (inputStream != null) {
-          Closeables.closeQuietly(inputStream);
-        }
-      }
-      
-      SolrInputDocument doc = handler.newDocument();
-      LOG.debug("solr doc: {}", doc);      
-      Record outputRecord = toRecord(doc);
-      return getChild().process(outputRecord);
-    }
-
-    private Parser detectParser(Record record) {
-      if (!hasAtLeastOneMimeType(record)) {
-        return null;
-      }
-      String mediaTypeStr = (String) record.getFirstValue(Fields.ATTACHMENT_MIME_TYPE); //ExtractingParams.STREAM_TYPE);
-      assert mediaTypeStr != null;
-      
-      MediaType mediaType = parseMediaType(mediaTypeStr).getBaseType();
-      Parser parser = mediaTypeToParserMap.get(mediaType); // fast path
-      if (parser != null) {
-        return parser;
-      }
-      // wildcard matching
-      for (Map.Entry<MediaType, Parser> entry : mediaTypeToParserMap.entrySet()) {
-        if (isMediaTypeMatch(mediaType, entry.getKey())) {
-          return entry.getValue();
-        }
-      }
-      if (LOG.isDebugEnabled()) {
-        LOG.debug("No supported MIME type parser found for " + Fields.ATTACHMENT_MIME_TYPE + "=" + mediaTypeStr);
-      }
-      return null;
-    }
-    
-    private boolean hasAtLeastOneMimeType(Record record) {
-      if (!record.getFields().containsKey(Fields.ATTACHMENT_MIME_TYPE)) {
-        LOG.debug("Command failed because of missing MIME type for record: {}", record);
-        return false;
-      }  
-      return true;
-    }
-
-    private MediaType parseMediaType(String mediaTypeStr) {
-      MediaType mediaType = MediaType.parse(mediaTypeStr.trim().toLowerCase(Locale.ROOT));
-      return mediaType.getBaseType();
-    };
-        
-    /** Returns true if mediaType falls withing the given range (pattern), false otherwise */
-    private boolean isMediaTypeMatch(MediaType mediaType, MediaType rangePattern) {
-      String WILDCARD = "*";
-      String rangePatternType = rangePattern.getType();
-      String rangePatternSubtype = rangePattern.getSubtype();
-      return (rangePatternType.equals(WILDCARD) || rangePatternType.equals(mediaType.getType()))
-          && (rangePatternSubtype.equals(WILDCARD) || rangePatternSubtype.equals(mediaType.getSubtype()));
-    }
-    
-    private static SolrContentHandlerFactory getSolrContentHandlerFactory(
-        Class<? extends SolrContentHandlerFactory> factoryClass, Collection<String> dateFormats, Config config) {
-      try {
-        return factoryClass.getConstructor(Collection.class).newInstance(dateFormats);
-      } catch (NoSuchMethodException nsme) {
-        throw new MorphlineCompilationException("Unable to find valid constructor of type "
-          + factoryClass.getName() + " for creating SolrContentHandler", config, nsme);
-      } catch (Exception e) {
-        throw new MorphlineCompilationException("Unexpected exception when trying to create SolrContentHandlerFactory of type "
-          + factoryClass.getName(), config, e);
-      }
-    }
-
-    private Record toRecord(SolrInputDocument doc) {
-      Record record = new Record();
-      for (Entry<String, SolrInputField> entry : doc.entrySet()) {
-        record.getFields().putAll(entry.getKey(), entry.getValue().getValues());        
-      }
-      return record;
-    }
-    
-    @SuppressForbidden(reason = "Usage of outdated locale parsing with Locale#toString() because of backwards compatibility")
-    private Locale getLocale(String name) {
-      if (name == null) {
-        return Locale.ROOT;
-      }
-      for (Locale locale : Locale.getAvailableLocales()) {
-        if (locale.toString().equals(name)) {
-          return locale;
-        }
-      }
-      try {
-        return new Locale.Builder().setLanguageTag(name).build();
-      } catch (IllformedLocaleException ex) {
-        throw new MorphlineCompilationException("Malformed / non-existent locale: " + name, getConfig(), ex);
-      }
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/StripNonCharSolrContentHandlerFactory.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/StripNonCharSolrContentHandlerFactory.java b/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/StripNonCharSolrContentHandlerFactory.java
deleted file mode 100644
index 81f49af..0000000
--- a/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/StripNonCharSolrContentHandlerFactory.java
+++ /dev/null
@@ -1,81 +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.morphlines.cell;
-
-import java.util.Collection;
-
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.handler.extraction.SolrContentHandler;
-import org.apache.solr.handler.extraction.SolrContentHandlerFactory;
-import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.schema.SchemaField;
-import org.apache.tika.metadata.Metadata;
-
-/**
- * {@link SolrContentHandler} and associated factory that strips non-characters and trims on output.
- * This prevents exceptions on parsing integer fields inside Solr server.
- */
-public class StripNonCharSolrContentHandlerFactory extends SolrContentHandlerFactory {
-
-  public StripNonCharSolrContentHandlerFactory(Collection<String> dateFormats) {
-    super(dateFormats);
-  }
-
-  @Override
-  public SolrContentHandler createSolrContentHandler(Metadata metadata, SolrParams params, IndexSchema schema) {
-    return new StripNonCharSolrContentHandler(metadata, params, schema, dateFormats);
-  }
-
-
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private static final class StripNonCharSolrContentHandler extends SolrContentHandler {
-
-    public StripNonCharSolrContentHandler(Metadata metadata, SolrParams params, IndexSchema schema, Collection<String> dateFormats) {
-      super(metadata, params, schema, dateFormats);
-    }
-
-    /**
-     * Strip all non-characters, which can cause SolrReducer problems if present.
-     * This is borrowed from Apache Nutch.
-     */
-    private static String stripNonCharCodepoints(String input) {
-      StringBuilder stripped = new StringBuilder(input.length());
-      char ch;
-      for (int i = 0; i < input.length(); i++) {
-        ch = input.charAt(i);
-        // Strip all non-characters http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Noncharacter_Code_Point=True:]
-        // and non-printable control characters except tabulator, new line and carriage return
-        if (ch % 0x10000 != 0xffff && // 0xffff - 0x10ffff range step 0x10000
-          ch % 0x10000 != 0xfffe && // 0xfffe - 0x10fffe range
-          (ch <= 0xfdd0 || ch >= 0xfdef) && // 0xfdd0 - 0xfdef
-          (ch > 0x1F || ch == 0x9 || ch == 0xa || ch == 0xd)) {
-          stripped.append(ch);
-        }
-      }
-      return stripped.toString();
-    }
-
-    @Override
-    protected String transformValue(String val, SchemaField schemaField) {
-      String ret = super.transformValue(val, schemaField).trim();
-      ret = stripNonCharCodepoints(ret);
-      return ret;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/TrimSolrContentHandlerFactory.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/TrimSolrContentHandlerFactory.java b/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/TrimSolrContentHandlerFactory.java
deleted file mode 100644
index 6e7df59..0000000
--- a/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/TrimSolrContentHandlerFactory.java
+++ /dev/null
@@ -1,58 +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.morphlines.cell;
-
-import java.util.Collection;
-
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.handler.extraction.SolrContentHandler;
-import org.apache.solr.handler.extraction.SolrContentHandlerFactory;
-import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.schema.SchemaField;
-import org.apache.tika.metadata.Metadata;
-
-/**
- * {@link SolrContentHandler} and associated factory that trims field values on output.
- * This prevents exceptions on parsing integer fields inside Solr server.
- */
-public class TrimSolrContentHandlerFactory extends SolrContentHandlerFactory {
-
-  public TrimSolrContentHandlerFactory(Collection<String> dateFormats) {
-    super(dateFormats);
-  }
-
-  @Override
-  public SolrContentHandler createSolrContentHandler(Metadata metadata, SolrParams params, IndexSchema schema) {
-    return new TrimSolrContentHandler(metadata, params, schema, dateFormats);
-  }
-
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  // Nested classes:
-  ///////////////////////////////////////////////////////////////////////////////
-  private static final class TrimSolrContentHandler extends SolrContentHandler {
-    
-    public TrimSolrContentHandler(Metadata metadata, SolrParams params, IndexSchema schema, Collection<String> dateFormats) {
-      super(metadata, params, schema, dateFormats);
-    }
-
-    @Override
-    protected String transformValue(String val, SchemaField schemaField) {
-      return super.transformValue(val, schemaField).trim();
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/package-info.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/package-info.java b/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/package-info.java
deleted file mode 100644
index 0f44a70..0000000
--- a/solr/contrib/morphlines-cell/src/java/org/apache/solr/morphlines/cell/package-info.java
+++ /dev/null
@@ -1,25 +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.
- */
- 
-/** 
- * Morphlines Solr Cell related code.
- */
-package org.apache.solr.morphlines.cell;
-
-
-
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-cell/src/java/overview.html
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-cell/src/java/overview.html b/solr/contrib/morphlines-cell/src/java/overview.html
deleted file mode 100644
index 3e25367..0000000
--- a/solr/contrib/morphlines-cell/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: Solr Cell Morphline Commands
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-cell/src/test-files/README.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-cell/src/test-files/README.txt b/solr/contrib/morphlines-cell/src/test-files/README.txt
deleted file mode 100644
index 8905df2..0000000
--- a/solr/contrib/morphlines-cell/src/test-files/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-The test-files by this module are located in the morphlines-core module.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-cell/src/test/org/apache/solr/morphlines/cell/SolrCellMorphlineTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-cell/src/test/org/apache/solr/morphlines/cell/SolrCellMorphlineTest.java b/solr/contrib/morphlines-cell/src/test/org/apache/solr/morphlines/cell/SolrCellMorphlineTest.java
deleted file mode 100644
index e0872b6..0000000
--- a/solr/contrib/morphlines-cell/src/test/org/apache/solr/morphlines/cell/SolrCellMorphlineTest.java
+++ /dev/null
@@ -1,292 +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.morphlines.cell;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.lucene.util.Constants;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.params.MapSolrParams;
-import org.apache.solr.handler.extraction.ExtractionDateUtil;
-import org.apache.solr.handler.extraction.SolrContentHandler;
-import org.apache.solr.morphlines.solr.AbstractSolrMorphlineTestBase;
-import org.apache.solr.schema.IndexSchema;
-import org.apache.tika.metadata.Metadata;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-public class SolrCellMorphlineTest extends AbstractSolrMorphlineTestBase {
-
-  private Map<String,Integer> expectedRecords = new HashMap<>();
-  private Map<String, Map<String, Object>> expectedRecordContents = new HashMap<>();
-  
-  @BeforeClass
-  public static void beforeClass2() {
-    assumeFalse("FIXME: Morphlines currently has issues with Windows paths", Constants.WINDOWS);
-  }
-
-  @Before
-  public void setUp() throws Exception {
-    super.setUp();
-    
-    String path = RESOURCES_DIR + File.separator + "test-documents" + File.separator;
-    expectedRecords.put(path + "sample-statuses-20120906-141433.avro", 2);
-    expectedRecords.put(path + "sample-statuses-20120906-141433", 2);
-    expectedRecords.put(path + "sample-statuses-20120906-141433.gz", 2);
-    expectedRecords.put(path + "sample-statuses-20120906-141433.bz2", 2);
-    expectedRecords.put(path + "cars.csv", 6);
-    expectedRecords.put(path + "cars.csv.gz", 6);
-    expectedRecords.put(path + "cars.tar.gz", 4);
-    expectedRecords.put(path + "cars.tsv", 6);
-    expectedRecords.put(path + "cars.ssv", 6);
-    expectedRecords.put(path + "test-documents.7z", 9);
-    expectedRecords.put(path + "test-documents.cpio", 9);
-    expectedRecords.put(path + "test-documents.tar", 9);
-    expectedRecords.put(path + "test-documents.tbz2", 9);
-    expectedRecords.put(path + "test-documents.tgz", 9);
-    expectedRecords.put(path + "test-documents.zip", 9);
-    expectedRecords.put(path + "multiline-stacktrace.log", 4);
-    
-    {
-      Map<String, Object> record = new LinkedHashMap();
-      record.put("ignored__attachment_mimetype", "image/jpeg");
-      record.put("ignored_exif_isospeedratings", "400");
-      record.put("ignored_meta_creation_date", "2009-08-11T09:09:45");
-      record.put("ignored_tiff_model", "Canon EOS 40D");
-      record.put("text", NON_EMPTY_FIELD);
-      expectedRecordContents.put("/testJPEG_EXIF.jpg", record);
-      expectedRecordContents.put("/testJPEG_EXIF.jpg.tar", record);
-      expectedRecordContents.put("/testJPEG_EXIF.jpg.tar.gz", record);
-    }
-    
-    {
-      String file = path + "testWORD_various.doc";
-      Map<String, Object> record = new LinkedHashMap();
-      record.put("ignored__attachment_mimetype", "application/msword");
-      record.put("ignored_author", "Michael McCandless");
-      record.put("ignored_creation_date", "2011-09-02T10:11:00Z");
-      record.put("ignored_title", "");
-      record.put("ignored_keywords", "Keyword1 Keyword2");
-      record.put("ignored_subject", "Subject is here");
-      record.put("text", NON_EMPTY_FIELD);
-      expectedRecordContents.put(file, record);
-    }
-    
-    {
-      String file = path + "testPDF.pdf";
-      Map<String, Object> record = new LinkedHashMap();
-      record.put("ignored__attachment_mimetype", "application/pdf");
-      record.put("ignored_author", "Bertrand Delacr�taz");
-      record.put("ignored_creation_date", "2007-09-15T09:02:31Z");
-      record.put("ignored_title", "Apache Tika - Apache Tika");
-      record.put("ignored_xmp_creatortool", "Firefox");
-      record.put("text", NON_EMPTY_FIELD);
-      expectedRecordContents.put(file, record);
-    }
-    
-    {
-      String file = path + "email.eml";
-      Map<String, Object> record = new LinkedHashMap();
-      String name = "Patrick Foo <fo...@cloudera.com>";
-      record.put("ignored__attachment_mimetype", "message/rfc822");
-      record.put("ignored_author", name);
-      //record.put("ignored_content_length", "1068");
-      record.put("ignored_creation_date", "2013-11-27T20:01:23Z");
-      record.put("ignored_message_from", name);
-      record.put("ignored_message_to", name);
-      record.put("ignored_creator", name);
-      record.put("ignored_dc_creator", name);
-      record.put("ignored_dc_title", "Test EML");
-      record.put("ignored_dcterms_created", "2013-11-27T20:01:23Z");
-      record.put("ignored_meta_author", name);
-      record.put("ignored_meta_creation_date", "2013-11-27T20:01:23Z");
-      record.put("ignored_subject", "Test EML");
-      record.put("text", NON_EMPTY_FIELD);
-      expectedRecordContents.put(file, record);
-    }
-
-    {
-      String file = path + "testEXCEL.xlsx";
-      Map<String, Object> record = new LinkedHashMap();
-      record.put("ignored__attachment_mimetype", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
-      record.put("ignored_author", "Keith Bennett");
-      record.put("ignored_creation_date", "2007-10-01T16:13:56Z");
-      record.put("ignored_title", "Simple Excel document");
-      record.put("text", NON_EMPTY_FIELD);
-      expectedRecordContents.put(file, record);
-    }    
-    
-    FileUtils.copyFile(new File(RESOURCES_DIR + "/custom-mimetypes.xml"), new File(tempDir + "/custom-mimetypes.xml"));
-  }
-  
-  @Test
-  @AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-6489")
-  public void testSolrCellJPGCompressed() throws Exception {
-    morphline = createMorphline("test-morphlines" + File.separator + "solrCellJPGCompressed");    
-    String path = RESOURCES_DIR + File.separator + "test-documents" + File.separator;
-    String[] files = new String[] {
-        path + "testJPEG_EXIF.jpg",
-        path + "testJPEG_EXIF.jpg.gz",
-        path + "testJPEG_EXIF.jpg.tar.gz",
-        //path + "jpeg2000.jp2",
-    };
-    testDocumentTypesInternal(files, expectedRecords, expectedRecordContents);
-  }  
-
-  @Test
-  public void testSolrCellXML() throws Exception {
-    morphline = createMorphline("test-morphlines" + File.separator + "solrCellXML");    
-    String path = RESOURCES_DIR + File.separator + "test-documents" + File.separator;
-    String[] files = new String[] {
-        path + "testXML2.xml",
-    };
-    testDocumentTypesInternal(files, expectedRecords, expectedRecordContents);
-  }  
-
-  @Test
-  @AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-6489")
-  public void testSolrCellDocumentTypes() throws Exception {
-    AbstractSolrMorphlineTestBase.setupMorphline(tempDir, "test-morphlines/solrCellDocumentTypes", false);
-    
-    morphline = createMorphline(new File(tempDir).getAbsolutePath() +  "/test-morphlines/solrCellDocumentTypes");    
-    String path = RESOURCES_DIR + File.separator + "test-documents" + File.separator;
-    String[] files = new String[] {
-        path + "testBMPfp.txt",
-        path + "boilerplate.html",
-        path + "NullHeader.docx",
-        path + "testWORD_various.doc",          
-        path + "testPDF.pdf",
-        path + "testJPEG_EXIF.jpg",
-        path + "testJPEG_EXIF.jpg.gz",
-        path + "testJPEG_EXIF.jpg.tar.gz",
-        path + "testXML.xml",          
-        path + "cars.csv",
-//        path + "cars.tsv",
-//        path + "cars.ssv",
-        path + "cars.csv.gz",
-        path + "cars.tar.gz",
-        path + "sample-statuses-20120906-141433.avro",
-        path + "sample-statuses-20120906-141433",
-        path + "sample-statuses-20120906-141433.gz",
-        path + "sample-statuses-20120906-141433.bz2",
-        path + "email.eml",
-    };
-    testDocumentTypesInternal(files, expectedRecords, expectedRecordContents);
-  }
-  
-  @Test
-  @AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-9220")
-  public void testSolrCellDocumentTypes2() throws Exception {
-
-    AbstractSolrMorphlineTestBase.setupMorphline(tempDir, "test-morphlines/solrCellDocumentTypes", false);
-    
-    morphline = createMorphline(new File(tempDir).getAbsolutePath() + "/test-morphlines/solrCellDocumentTypes");    
-    String path = RESOURCES_DIR + File.separator + "test-documents" + File.separator;
-    String[] files = new String[] {
-        path + "testPPT_various.ppt",
-        path + "testPPT_various.pptx",        
-        path + "testEXCEL.xlsx",
-        path + "testEXCEL.xls", 
-        path + "testPages.pages", 
-        //path + "testNumbers.numbers", 
-        //path + "testKeynote.key",
-        
-        path + "testRTFVarious.rtf", 
-        path + "complex.mbox", 
-        path + "test-outlook.msg", 
-        path + "testEMLX.emlx",
-        path + "testRFC822",  
-        path + "rsstest.rss", 
-//        path + "testDITA.dita", 
-        
-        path + "testMP3i18n.mp3", 
-        path + "testAIFF.aif", 
-        path + "testFLAC.flac", 
-//        path + "testFLAC.oga", 
-//        path + "testVORBIS.ogg",  
-        path + "testMP4.m4a", 
-        path + "testWAV.wav", 
-//        path + "testWMA.wma", 
-        
-        path + "testFLV.flv", 
-//        path + "testWMV.wmv", 
-        
-        path + "testBMP.bmp", 
-        path + "testPNG.png", 
-        path + "testPSD.psd",        
-        path + "testSVG.svg",  
-        path + "testTIFF.tif",     
-
-//        path + "test-documents.7z", 
-//        path + "test-documents.cpio",
-//        path + "test-documents.tar", 
-//        path + "test-documents.tbz2", 
-//        path + "test-documents.tgz",
-//        path + "test-documents.zip",
-//        path + "test-zip-of-zip.zip",
-//        path + "testJAR.jar",
-        
-//        path + "testKML.kml", 
-//        path + "testRDF.rdf", 
-        path + "testVISIO.vsd",
-//        path + "testWAR.war", 
-//        path + "testWindows-x86-32.exe",
-//        path + "testWINMAIL.dat", 
-//        path + "testWMF.wmf", 
-    };   
-    testDocumentTypesInternal(files, expectedRecords, expectedRecordContents);
-  }
-
-  /**
-   * Test that the ContentHandler properly strips the illegal characters
-   */
-  @Test
-  public void testTransformValue() {
-    String fieldName = "user_name";
-    assertFalse("foobar".equals(getFoobarWithNonChars()));
-
-    Metadata metadata = new Metadata();
-    // load illegal char string into a metadata field and generate a new document,
-    // which will cause the ContentHandler to be invoked.
-    metadata.set(fieldName, getFoobarWithNonChars());
-    StripNonCharSolrContentHandlerFactory contentHandlerFactory =
-      new StripNonCharSolrContentHandlerFactory(ExtractionDateUtil.DEFAULT_DATE_FORMATS);
-    IndexSchema schema = h.getCore().getLatestSchema();
-    SolrContentHandler contentHandler =
-      contentHandlerFactory.createSolrContentHandler(metadata, new MapSolrParams(new HashMap()), schema);
-    SolrInputDocument doc = contentHandler.newDocument();
-    String foobar = doc.getFieldValue(fieldName).toString();
-    assertTrue("foobar".equals(foobar));
-  }
-
-  /**
-   * Returns string "foobar" with illegal characters interspersed.
-   */
-  private String getFoobarWithNonChars() {
-    char illegalChar = '\uffff';
-    StringBuilder builder = new StringBuilder();
-    builder.append(illegalChar).append(illegalChar).append("foo").append(illegalChar)
-      .append(illegalChar).append("bar").append(illegalChar).append(illegalChar);
-    return builder.toString();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/README.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/README.txt b/solr/contrib/morphlines-core/README.txt
deleted file mode 100644
index 0efa467..0000000
--- a/solr/contrib/morphlines-core/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Apache Solr Morphlines-Core
-
-*Experimental* - This contrib is currently subject to change in ways that may 
-break back compatibility.
-
-This contrib provides a variety of Kite Morphlines features for Solr.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/build.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/build.xml b/solr/contrib/morphlines-core/build.xml
deleted file mode 100644
index 2cf6261..0000000
--- a/solr/contrib/morphlines-core/build.xml
+++ /dev/null
@@ -1,105 +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.
- -->
-
-<project name="solr-morphlines-core" default="default" xmlns:ivy="antlib:org.apache.ivy.ant">
-
-  <description>
-    Solr Morphlines commands.
-  </description>
-
-  <import file="../contrib-build.xml"/>
-  
-  <solr-contrib-uptodate name="extraction" 
-                         property="solr-extraction.uptodate" 
-                         classpath.property="solr-cell.jar"/>
-  
-  <target name="compile-solr-extraction" unless="solr-extraction.uptodate">
-   <ant dir="${common-solr.dir}/contrib/extraction" target="compile-core" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
-  <target name="resolve-extraction-libs">
-    <ant dir="${common-solr.dir}/contrib/extraction" target="resolve" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-
-  <path id="classpath.additions">
-    <pathelement location="${common-solr.dir}/build/contrib/solr-cell/classes/java"/>
-    <fileset dir="${common-solr.dir}/contrib/extraction/lib" excludes="${common.classpath.excludes}"/>
-  </path>
-  
-  <path id="classpath">
-    <path refid="solr.base.classpath"/>
-    <path refid="classpath.additions"/>
-  </path>
-  
-  <path id="test.classpath">
-    <path refid="solr.test.base.classpath"/>
-    <path refid="classpath.additions"/>
-    <fileset dir="${test.lib.dir}" includes="*.jar"/>
-  </path>
-
-  <path id="javadoc.classpath">
-    <path refid="junit-path"/>
-    <path refid="classpath"/>
-    <pathelement location="${ant.home}/lib/ant.jar"/>
-    <fileset dir=".">
-      <exclude name="build/**/*.jar"/>
-      <include name="**/lib/*.jar"/>
-    </fileset>
-  </path>
-  
-  <!-- TODO: make this nicer like lucene? -->
-  <target name="javadocs" depends="compile-core,define-lucene-javadoc-url,lucene-javadocs,javadocs-solr-core,javadocs-extraction,check-javadocs-uptodate" unless="javadocs-uptodate-${name}"> 
-        <sequential>
-      <mkdir dir="${javadoc.dir}/${name}"/>
-      <solr-invoke-javadoc>
-        <solrsources>
-          <packageset dir="${src.dir}"/>
-        </solrsources>
-        <links>
-          <link href="../solr-solrj"/>
-          <link href="../solr-core"/>
-          <link href="../solr-cell"/>
-        </links>
-      </solr-invoke-javadoc>
-      <solr-jarify basedir="${javadoc.dir}/${name}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
-     </sequential>
-  </target>
-  
-  <target name="javadocs-extraction">
-    <ant dir="${common-solr.dir}/contrib/extraction" target="javadocs" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-
-  <target name="resolve" depends="ivy-availability-check,ivy-fail,ivy-configure">
-    <sequential>
-      <ivy:retrieve conf="compile" type="jar,bundle" sync="${ivy.sync}" log="download-only" symlink="${ivy.symlink}"/>
-      <ivy:retrieve conf="test,test.DfsMiniCluster" type="jar,bundle,test" sync="${ivy.sync}" log="download-only" symlink="${ivy.symlink}"
-                    pattern="${test.lib.dir}/[artifact]-[revision](-[classifier]).[ext]"/>
-    </sequential>
-  </target>
-
-  <target name="compile-core" depends="resolve-extraction-libs, compile-solr-extraction, solr-contrib-build.compile-core"/>
-  <target name="dist" depends="common-solr.dist"/>
-
-</project>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/ivy.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/ivy.xml b/solr/contrib/morphlines-core/ivy.xml
deleted file mode 100644
index ad47aec..0000000
--- a/solr/contrib/morphlines-core/ivy.xml
+++ /dev/null
@@ -1,128 +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.    
--->
-<ivy-module version="2.0" xmlns:maven="http://ant.apache.org/ivy/maven">
-  <info organisation="org.apache.solr" module="morphlines-core" />
-  <configurations defaultconfmapping="compile->master;test->master;test.DfsMiniCluster->master">
-    <!-- artifacts in the "compile" configuration will go into morphlines-core/lib/ -->
-    <conf name="compile" transitive="false" />
-    <!-- artifacts in the "test" and "test.DfsMiniCluster" configuration will go into morphlines-core/test-lib/ -->
-    <conf name="test" transitive="false" />
-    <conf name="test.DfsMiniCluster" transitive="false" />
-  </configurations>
-
-  <dependencies>
-    <dependency org="org.kitesdk" name="kite-morphlines-core" rev="${/org.kitesdk/kite-morphlines-core}"  conf="compile;test">
-      <artifact name="kite-morphlines-core"  ext="jar" />
-      <artifact name="kite-morphlines-core" type="test" ext="jar" maven:classifier="tests" />
-    </dependency>
-
-    <dependency org="org.kitesdk" name="kite-morphlines-avro" rev="${/org.kitesdk/kite-morphlines-avro}" conf="compile" />
-    
-    <dependency org="io.dropwizard.metrics" name="metrics-core" rev="${/io.dropwizard.metrics/metrics-core}" conf="compile" />
-    <dependency org="io.dropwizard.metrics" name="metrics-healthchecks" rev="${/io.dropwizard.metrics/metrics-healthchecks}" conf="compile" />
-    <dependency org="com.typesafe" name="config" rev="${/com.typesafe/config}" conf="compile" />
-    
-    <!-- Test Dependencies -->
-
-    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-core" rev="${/org.apache.hadoop/hadoop-mapreduce-client-core}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-yarn-common" rev="${/org.apache.hadoop/hadoop-yarn-common}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-yarn-api" rev="${/org.apache.hadoop/hadoop-yarn-api}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-yarn-client" rev="${/org.apache.hadoop/hadoop-yarn-client}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-tests" rev="${/org.apache.hadoop/hadoop-yarn-server-tests}" conf="test">
-      <artifact name="hadoop-yarn-server-tests" type="test" ext="jar" maven:classifier="tests" />
-    </dependency>
-    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-common" rev="${/org.apache.hadoop/hadoop-yarn-server-common}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-nodemanager" rev="${/org.apache.hadoop/hadoop-yarn-server-nodemanager}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-app" rev="${/org.apache.hadoop/hadoop-mapreduce-client-app}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-common" rev="${/org.apache.hadoop/hadoop-mapreduce-client-common}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-hs" rev="${/org.apache.hadoop/hadoop-mapreduce-client-hs}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-resourcemanager" rev="${/org.apache.hadoop/hadoop-yarn-server-resourcemanager}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-shuffle" rev="${/org.apache.hadoop/hadoop-mapreduce-client-shuffle}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-web-proxy" rev="${/org.apache.hadoop/hadoop-yarn-server-web-proxy}" conf="test" />
-    <dependency org="org.apache.hadoop" name="hadoop-mapreduce-client-jobclient" rev="${/org.apache.hadoop/hadoop-mapreduce-client-jobclient}" conf="test">
-      <artifact name="hadoop-mapreduce-client-jobclient" type="jar" ext="jar" />
-      <artifact name="hadoop-mapreduce-client-jobclient" type="test" ext="jar" maven:classifier="tests" />
-    </dependency>
-    
-    <dependency org="org.apache.hadoop" name="hadoop-yarn-server-applicationhistoryservice" rev="${/org.apache.hadoop/hadoop-yarn-server-applicationhistoryservice}" conf="test"/>
-    <dependency org="org.fusesource.leveldbjni" name="leveldbjni" rev="${/org.fusesource.leveldbjni/leveldbjni}" conf="test"/>
-    <dependency org="org.iq80.leveldb" name="leveldb" rev="${/org.iq80.leveldb/leveldb}" conf="test.DfsMiniCluster"/>
-    <dependency org="org.iq80.leveldb" name="leveldb-api" rev="${/org.iq80.leveldb/leveldb-api}" conf="test.DfsMiniCluster"/>
-    <dependency org="org.apache.curator" name="curator-framework" rev="${/org.apache.curator/curator-framework}" conf="test"/>
-    <dependency org="org.apache.curator" name="curator-client" rev="${/org.apache.curator/curator-client}" conf="test"/>
-
-    <dependency org="aopalliance" name="aopalliance" rev="${/aopalliance/aopalliance}" conf="test" />
-    <dependency org="com.sun.xml.bind" name="jaxb-impl" rev="${/com.sun.xml.bind/jaxb-impl}" conf="test" />
-    <dependency org="io.netty" name="netty-all" rev="${/io.netty/netty-all}" conf="test" />
-    <dependency org="org.apache.mrunit" name="mrunit" rev="${/org.apache.mrunit/mrunit}" conf="test">
-      <artifact name="mrunit" maven:classifier="hadoop2" />
-      <exclude org="log4j" module="log4j" />
-    </dependency>
-    
-    <!-- Mocking -->
-    <dependency org="org.mockito" name="mockito-core" rev="${/org.mockito/mockito-core}" conf="test"/>
-    <dependency org="net.bytebuddy" name="byte-buddy" rev="${/net.bytebuddy/byte-buddy}" conf="test"/>
-    <dependency org="org.objenesis" name="objenesis" rev="${/org.objenesis/objenesis}" conf="test"/>
-    
-    <dependency org="commons-collections" name="commons-collections" rev="${/commons-collections/commons-collections}" conf="test" />
-
-    <!-- FasterXml Jackson Dependencies -->
-    <dependency org="com.fasterxml.jackson.core" name="jackson-core" rev="${/com.fasterxml.jackson.core/jackson-core}" conf="test" />
-    <dependency org="com.fasterxml.jackson.core" name="jackson-databind" rev="${/com.fasterxml.jackson.core/jackson-databind}" conf="test" />
-    <dependency org="com.fasterxml.jackson.core" name="jackson-annotations" rev="${/com.fasterxml.jackson.core/jackson-annotations}" conf="test" />
-
-    <!-- CodeHaus Jackson Dependencies -->
-    <dependency org="org.codehaus.jackson" name="jackson-jaxrs" rev="${/org.codehaus.jackson/jackson-jaxrs}" conf="test" />
-    <dependency org="org.codehaus.jackson" name="jackson-mapper-asl" rev="${/org.codehaus.jackson/jackson-mapper-asl}" conf="test" />
-    <dependency org="org.codehaus.jackson" name="jackson-core-asl" rev="${/org.codehaus.jackson/jackson-core-asl}" conf="test" />
-
-    <!-- Jersey Dependencies -->
-    <dependency org="com.sun.jersey.contribs" name="jersey-guice" rev="${/com.sun.jersey.contribs/jersey-guice}" conf="test" />
-    <dependency org="com.sun.jersey" name="jersey-core" rev="${/com.sun.jersey/jersey-core}" conf="test" />
-    <dependency org="com.sun.jersey" name="jersey-json" rev="${/com.sun.jersey/jersey-json}" conf="test" />
-    <dependency org="com.sun.jersey" name="jersey-server" rev="${/com.sun.jersey/jersey-server}" conf="test" />
-    <dependency org="com.sun.jersey" name="jersey-bundle" rev="${/com.sun.jersey/jersey-bundle}" conf="test" />
-
-    <!-- Guice Dependencies -->
-    <dependency org="com.google.inject" name="guice" rev="${/com.google.inject/guice}" conf="test" />
-    <dependency org="com.google.inject.extensions" name="guice-servlet" rev="${/com.google.inject.extensions/guice-servlet}" conf="test" />
-    <dependency org="javax.inject" name="javax.inject" rev="${/javax.inject/javax.inject}" conf="test" />
-
-    <!-- Avro Dependencies -->
-    <dependency org="org.apache.avro" name="avro" rev="${/org.apache.avro/avro}" conf="test" />
-    <dependency org="com.thoughtworks.paranamer" name="paranamer" rev="${/com.thoughtworks.paranamer/paranamer}" conf="test" />
-    <dependency org="org.xerial.snappy" name="snappy-java" rev="${/org.xerial.snappy/snappy-java}" conf="test" />
-
-    <!-- Hadoop DfsMiniCluster Dependencies -->
-    <dependency org="org.apache.hadoop" name="hadoop-common" rev="${/org.apache.hadoop/hadoop-common}" conf="test.DfsMiniCluster">
-      <artifact name="hadoop-common" type="jar" ext="jar" />
-      <artifact name="hadoop-common" type="test" ext="jar" maven:classifier="tests" />
-    </dependency>
-    <dependency org="org.apache.hadoop" name="hadoop-hdfs" rev="${/org.apache.hadoop/hadoop-hdfs}" conf="test.DfsMiniCluster">
-      <artifact name="hadoop-hdfs" type="test" ext="jar" maven:classifier="tests" />
-    </dependency>
-    <dependency org="org.mortbay.jetty" name="jetty" rev="${/org.mortbay.jetty/jetty}" conf="test.DfsMiniCluster" />
-    <dependency org="org.mortbay.jetty" name="jetty-util" rev="${/org.mortbay.jetty/jetty-util}" conf="test.DfsMiniCluster" />
-    <dependency org="com.sun.jersey" name="jersey-core" rev="${/com.sun.jersey/jersey-core}" conf="test.DfsMiniCluster" />
-    <dependency org="org.apache.htrace" name="htrace-core" rev="${/org.apache.htrace/htrace-core}" conf="test.DfsMiniCluster"/>
-    
-    <exclude org="*" ext="*" matcher="regexp" type="${ivy.exclude.types}" />
-
-  </dependencies>
-</ivy-module>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/DocumentLoader.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/DocumentLoader.java b/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/DocumentLoader.java
deleted file mode 100644
index f303024..0000000
--- a/solr/contrib/morphlines-core/src/java/org/apache/solr/morphlines/solr/DocumentLoader.java
+++ /dev/null
@@ -1,73 +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.morphlines.solr;
-
-import java.io.IOException;
-
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.response.SolrPingResponse;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.common.SolrInputDocument;
-
-/**
- * A vehicle to load a list of Solr documents into some kind of destination,
- * such as a SolrServer or MapReduce RecordWriter.
- */
-public interface DocumentLoader {
-
-  /** Begins a transaction */
-  public void beginTransaction() throws IOException, SolrServerException;
-
-  /** Loads the given document into the destination */
-  public void load(SolrInputDocument doc) throws IOException, SolrServerException;
-
-  /**
-   * Sends any outstanding documents to the destination and waits for a positive
-   * or negative ack (i.e. exception). Depending on the outcome the caller
-   * should then commit or rollback the current flume transaction
-   * correspondingly.
-   * 
-   * @throws IOException
-   *           If there is a low-level I/O error.
-   */
-  public void commitTransaction() throws IOException, SolrServerException;
-
-  /**
-   * Performs a rollback of all non-committed documents pending.
-   * <p>
-   * Note that this is not a true rollback as in databases. Content you have
-   * previously added may have already been committed due to autoCommit, buffer
-   * full, other client performing a commit etc. So this is only a best-effort
-   * rollback.
-   * 
-   * @throws IOException
-   *           If there is a low-level I/O error.
-   */
-  public UpdateResponse rollbackTransaction() throws IOException, SolrServerException;
-
-  /** Releases allocated resources */
-  public void shutdown() throws IOException, SolrServerException;
-
-  /**
-   * Issues a ping request to check if the server is alive
-   * 
-   * @throws IOException
-   *           If there is a low-level I/O error.
-   */
-  public SolrPingResponse ping() throws IOException, SolrServerException;
-
-}


[54/73] [abbrv] lucene-solr:jira/solr-6203: LUCENE-7754: Inner classes should be static whenever possible.

Posted by cp...@apache.org.
LUCENE-7754: Inner classes should be static whenever possible.


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

Branch: refs/heads/jira/solr-6203
Commit: 53064e46ddfc94a0b0e1d9c9f3e94786fb6701cd
Parents: 68eb078
Author: Adrien Grand <jp...@gmail.com>
Authored: Tue Mar 28 15:15:45 2017 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Tue Mar 28 15:35:04 2017 +0200

----------------------------------------------------------------------
 lucene/CHANGES.txt                                |  6 +++++-
 .../analysis/charfilter/HTMLStripCharFilter.java  |  2 +-
 .../analysis/charfilter/HTMLStripCharFilter.jflex |  7 +++----
 .../lucene/analysis/shingle/ShingleFilter.java    |  2 +-
 .../lucene/analysis/hunspell/TestDictionary.java  |  2 +-
 .../miscellaneous/TestWordDelimiterFilter.java    |  2 +-
 .../TestWordDelimiterGraphFilter.java             |  2 +-
 .../payloads/NumericPayloadTokenFilterTest.java   |  2 +-
 .../payloads/TypeAsPayloadTokenFilterTest.java    |  2 +-
 .../analysis/sinks/TestTeeSinkTokenFilter.java    |  4 ++--
 .../lucene/analysis/snowball/TestSnowball.java    |  2 +-
 .../standard/TestUAX29URLEmailTokenizer.java      |  4 ++--
 .../lucene/analysis/icu/ICUTransformFilter.java   |  2 +-
 .../CachingNaiveBayesClassifierTest.java          |  2 +-
 .../SimpleNaiveBayesClassifierTest.java           |  2 +-
 .../bloom/BloomFilteringPostingsFormat.java       |  8 ++++----
 .../codecs/memory/MemoryPostingsFormat.java       |  2 +-
 .../simpletext/SimpleTextTermVectorsReader.java   |  2 +-
 .../compressing/CompressingTermVectorsReader.java |  2 +-
 .../apache/lucene/index/ParallelLeafReader.java   |  2 +-
 .../apache/lucene/search/ConstantScoreQuery.java  |  2 +-
 .../test/org/apache/lucene/index/TestCodecs.java  |  8 ++++----
 .../index/TestFlushByRamOrCountsPolicy.java       |  2 +-
 .../lucene/index/TestIndexWriterExceptions.java   |  2 +-
 .../lucene/index/TestIndexWriterMerging.java      |  2 +-
 .../lucene/index/TestIndexWriterWithThreads.java  |  2 +-
 .../apache/lucene/index/TestIndexableField.java   |  2 +-
 .../apache/lucene/index/TestMaxTermFrequency.java |  2 +-
 .../test/org/apache/lucene/index/TestNorms.java   |  2 +-
 .../lucene/index/TestPerSegmentDeletes.java       |  2 +-
 .../apache/lucene/index/TestStressIndexing2.java  |  2 +-
 .../lucene/index/TestTermVectorsReader.java       |  2 +-
 .../lucene/index/TestTransactionRollback.java     |  6 +++---
 .../apache/lucene/index/TestUniqueTermCount.java  |  2 +-
 .../lucene/search/TestCustomSearcherSort.java     |  4 ++--
 .../TestEarlyTerminatingSortingCollector.java     |  4 ++--
 .../apache/lucene/search/TestPrefixRandom.java    |  4 ++--
 .../apache/lucene/search/TestRegexpRandom2.java   |  2 +-
 .../lucene/search/TestSimilarityProvider.java     |  6 +++---
 .../org/apache/lucene/search/TestTermScorer.java  |  2 +-
 .../lucene/search/TestTimeLimitingCollector.java  |  2 +-
 .../org/apache/lucene/store/TestLockFactory.java  |  4 ++--
 .../lucene/util/TestCloseableThreadLocal.java     |  2 +-
 .../org/apache/lucene/util/TestQueryBuilder.java  |  2 +-
 .../test/org/apache/lucene/util/fst/TestFSTs.java |  2 +-
 .../facet/taxonomy/writercache/CollisionMap.java  |  2 +-
 .../search/grouping/GroupFacetCollectorTest.java  |  4 ++--
 .../TestUnifiedHighlighterExtensibility.java      |  2 +-
 .../apache/lucene/queries/CustomScoreQuery.java   |  2 +-
 .../lucene/queries/TestCustomScoreQuery.java      |  2 +-
 .../lucene/queries/payloads/TestPayloadSpans.java |  6 +++---
 .../queryparser/classic/TestMultiAnalyzer.java    |  8 ++++----
 .../classic/TestMultiFieldQueryParser.java        |  2 +-
 .../standard/TestMultiAnalyzerQPHelper.java       |  8 ++++----
 .../flexible/standard/TestQPHelper.java           |  8 ++++----
 .../queryparser/util/QueryParserTestBase.java     | 10 +++++-----
 .../sandbox/queries/FuzzyLikeThisQuery.java       |  2 +-
 .../lucene/payloads/TestPayloadSpanUtil.java      |  4 ++--
 .../search/spell/WordBreakSpellChecker.java       | 10 +++++-----
 .../search/suggest/document/ContextQuery.java     |  2 +-
 .../search/suggest/fst/ExternalRefSorter.java     |  2 +-
 .../search/suggest/fst/WFSTCompletionLookup.java  |  2 +-
 .../search/suggest/jaspell/JaspellLookup.java     |  8 ++++----
 .../suggest/jaspell/JaspellTernarySearchTrie.java |  2 +-
 .../search/suggest/DocumentDictionaryTest.java    |  2 +-
 .../analyzing/AnalyzingInfixSuggesterTest.java    |  2 +-
 .../suggest/analyzing/FuzzySuggesterTest.java     |  2 +-
 .../lucene/store/BaseLockFactoryTestCase.java     |  2 +-
 .../dependencies/GetMavenDependenciesTask.java    |  2 +-
 .../lucene/validation/LibVersionsCheckTask.java   |  2 +-
 .../handler/dataimport/MailEntityProcessor.java   |  4 ++--
 .../solr/handler/dataimport/VariableResolver.java |  2 +-
 .../dataimport/AbstractDIHCacheTestCase.java      |  2 +-
 .../AbstractSqlEntityProcessorTestCase.java       |  4 ++--
 .../dataimport/TestContentStreamDataSource.java   |  2 +-
 .../handler/extraction/XLSXResponseWriter.java    |  2 +-
 .../java/org/apache/solr/ltr/LTRScoringQuery.java |  2 +-
 .../apache/solr/ltr/TestLTRReRankingPipeline.java |  2 +-
 .../solr/response/VelocityResponseWriter.java     |  2 +-
 .../src/java/org/apache/solr/cloud/Overseer.java  |  2 +-
 .../org/apache/solr/cloud/OverseerTaskQueue.java  |  2 +-
 .../java/org/apache/solr/cloud/ZkController.java  |  2 +-
 .../apache/solr/core/CachingDirectoryFactory.java |  2 +-
 .../org/apache/solr/handler/CdcrReplicator.java   |  2 +-
 .../apache/solr/handler/CdcrReplicatorState.java  |  6 +++---
 .../org/apache/solr/handler/ExportWriter.java     | 18 +++++++++---------
 .../org/apache/solr/handler/IndexFetcher.java     |  4 ++--
 .../java/org/apache/solr/handler/SQLHandler.java  |  2 +-
 .../solr/handler/component/ExpandComponent.java   |  6 +++---
 .../component/HttpShardHandlerFactory.java        |  2 +-
 .../component/PivotFacetFieldValueCollection.java |  4 ++--
 .../solr/handler/component/TermsComponent.java    |  2 +-
 .../solr/highlight/DefaultSolrHighlighter.java    |  2 +-
 .../apache/solr/schema/ManagedIndexSchema.java    |  4 ++--
 .../org/apache/solr/schema/RandomSortField.java   |  2 +-
 .../solr/search/ComplexPhraseQParserPlugin.java   |  4 ++--
 .../apache/solr/search/ExportQParserPlugin.java   |  2 +-
 .../apache/solr/search/ExtendedDismaxQParser.java |  4 ++--
 .../org/apache/solr/search/HashQParserPlugin.java | 18 +++++++++---------
 .../org/apache/solr/search/ReRankCollector.java   |  2 +-
 .../apache/solr/search/ReRankQParserPlugin.java   |  2 +-
 .../solr/search/facet/FacetFieldMerger.java       |  2 +-
 .../org/apache/solr/search/facet/UniqueAgg.java   |  2 +-
 .../search/function/CollapseScoreFunction.java    |  2 +-
 .../org/apache/solr/search/join/GraphQuery.java   |  2 +-
 .../apache/solr/spelling/PossibilityIterator.java |  6 +++---
 .../java/org/apache/solr/update/UpdateLog.java    |  2 +-
 .../src/java/org/apache/solr/util/RTimer.java     |  2 +-
 .../java/org/apache/solr/util/SimplePostTool.java |  4 ++--
 .../solr/cloud/BaseCdcrDistributedZkTest.java     |  4 ++--
 .../solr/cloud/ChaosMonkeyNothingIsSafeTest.java  |  4 ++--
 .../apache/solr/cloud/ConnectionManagerTest.java  |  2 +-
 .../apache/solr/cloud/DistributedQueueTest.java   |  2 +-
 .../org/apache/solr/cloud/LeaderElectionTest.java |  4 ++--
 ...verriddenZkACLAndCredentialsProvidersTest.java |  4 ++--
 .../OverseerCollectionConfigSetProcessorTest.java |  2 +-
 .../org/apache/solr/cloud/ZkSolrClientTest.java   |  2 +-
 .../solr/core/CachingDirectoryFactoryTest.java    |  2 +-
 .../handler/AnalysisRequestHandlerTestBase.java   |  2 +-
 .../solr/handler/PingRequestHandlerTest.java      |  2 +-
 .../solr/handler/XmlUpdateRequestHandlerTest.java |  2 +-
 .../admin/CoreMergeIndexesAdminHandlerTest.java   |  2 +-
 .../apache/solr/internal/csv/CSVParserTest.java   |  2 +-
 .../reporters/SolrGraphiteReporterTest.java       |  2 +-
 .../solr/response/TestGraphMLResponseWriter.java  |  2 +-
 .../org/apache/solr/rest/TestManagedResource.java |  4 ++--
 .../org/apache/solr/rest/TestRestManager.java     |  2 +-
 .../schema/TestCloudManagedSchemaConcurrent.java  |  2 +-
 .../solr/search/AnalyticsTestQParserPlugin.java   | 10 +++++-----
 .../solr/search/TestExtendedDismaxParser.java     | 10 +++++-----
 .../org/apache/solr/search/TestFiltering.java     |  2 +-
 .../apache/solr/search/TestRankQueryPlugin.java   | 14 +++++++-------
 .../spelling/ConjunctionSolrSpellCheckerTest.java |  4 ++--
 .../solr/spelling/IndexBasedSpellCheckerTest.java |  2 +-
 .../solr/store/blockcache/BlockDirectoryTest.java |  2 +-
 .../org/apache/solr/util/SimplePostToolTest.java  |  2 +-
 .../org/apache/solr/util/SolrPluginUtilsTest.java |  2 +-
 .../apache/solr/util/TestSolrCLIRunExample.java   |  2 +-
 .../solrj/impl/ConcurrentUpdateSolrClient.java    |  2 +-
 .../apache/solr/client/solrj/io/ModelCache.java   |  4 ++--
 .../client/solrj/io/graph/GatherNodesStream.java  |  2 +-
 .../client/solrj/io/graph/ShortestPathStream.java |  2 +-
 .../solr/client/solrj/io/ops/GroupOperation.java  |  2 +-
 .../solr/client/solrj/io/stream/RankStream.java   |  2 +-
 .../solrj/io/stream/SignificantTermsStream.java   |  2 +-
 .../client/solrj/io/stream/TextLogitStream.java   |  2 +-
 .../client/solrj/response/SpellCheckResponse.java |  4 ++--
 .../apache/solr/common/cloud/ZkStateReader.java   |  2 +-
 .../solr/client/solrj/TestLBHttpSolrClient.java   |  2 +-
 .../solrj/embedded/SolrExampleStreamingTest.java  |  4 ++--
 .../impl/ConcurrentUpdateSolrClientTest.java      |  6 +++---
 .../src/java/org/apache/solr/SolrTestCaseJ4.java  |  2 +-
 152 files changed, 253 insertions(+), 250 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 15f4ff3..e6da586 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -81,7 +81,11 @@ Other
 * LUCENE-7681: MemoryIndex uses new DocValues API (Alan Woodward)
 
 ======================= Lucene 6.6.0 =======================
-(No Changes)
+
+Other
+
+* LUCENE-7754: Inner classes should be static whenever possible.
+  (Daniel Jelinski via Adrien Grand)
 
 ======================= Lucene 6.5.0 =======================
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.java
index ba44dd8..a236497 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.java
@@ -30021,7 +30021,7 @@ public final class HTMLStripCharFilter extends BaseCharFilter {
     return ZZ_BUFFERSIZE;
   }
 
-  private class TextSegment extends OpenStringBuilder {
+  private static class TextSegment extends OpenStringBuilder {
     /** The position from which the next char will be read. */
     int pos = 0;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.jflex
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.jflex b/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.jflex
index 98c3946..d810d79 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.jflex
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/charfilter/HTMLStripCharFilter.jflex
@@ -19,13 +19,12 @@ package org.apache.lucene.analysis.charfilter;
 
 import java.io.IOException;
 import java.io.Reader;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.lucene.analysis.util.CharArrayMap;
-import org.apache.lucene.analysis.util.CharArraySet;
+import org.apache.lucene.analysis.CharArrayMap;
+import org.apache.lucene.analysis.CharArraySet;
 import org.apache.lucene.analysis.util.OpenStringBuilder;
 
 /**
@@ -238,7 +237,7 @@ InlineElment = ( [aAbBiIqQsSuU]                   |
     return ZZ_BUFFERSIZE;
   }
 
-  private class TextSegment extends OpenStringBuilder {
+  private static class TextSegment extends OpenStringBuilder {
     /** The position from which the next char will be read. */
     int pos = 0;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilter.java
index e3fa803..0775cf7 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilter.java
@@ -583,7 +583,7 @@ public final class ShingleFilter extends TokenFilter {
     }
   }
     
-  private class InputWindowToken {
+  private static class InputWindowToken {
     final AttributeSource attSource;
     final CharTermAttribute termAtt;
     final OffsetAttribute offsetAtt;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestDictionary.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestDictionary.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestDictionary.java
index 5e32afe..b7312cb 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestDictionary.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/TestDictionary.java
@@ -157,7 +157,7 @@ public class TestDictionary extends LuceneTestCase {
     tempDir.close();
   }
   
-  private class CloseCheckInputStream extends FilterInputStream {
+  private static class CloseCheckInputStream extends FilterInputStream {
     private boolean closed = false;
 
     public CloseCheckInputStream(InputStream delegate) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestWordDelimiterFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestWordDelimiterFilter.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestWordDelimiterFilter.java
index 7f0481f..2804bfd 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestWordDelimiterFilter.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestWordDelimiterFilter.java
@@ -184,7 +184,7 @@ public class TestWordDelimiterFilter extends BaseTokenStreamTestCase {
   /*
    * Set a large position increment gap of 10 if the token is "largegap" or "/"
    */
-  private final class LargePosIncTokenFilter extends TokenFilter {
+  private static final class LargePosIncTokenFilter extends TokenFilter {
     private CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
     private PositionIncrementAttribute posIncAtt = addAttribute(PositionIncrementAttribute.class);
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestWordDelimiterGraphFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestWordDelimiterGraphFilter.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestWordDelimiterGraphFilter.java
index f4e8b79..7516a23 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestWordDelimiterGraphFilter.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestWordDelimiterGraphFilter.java
@@ -171,7 +171,7 @@ public class TestWordDelimiterGraphFilter extends BaseTokenStreamTestCase {
   /*
    * Set a large position increment gap of 10 if the token is "largegap" or "/"
    */
-  private final class LargePosIncTokenFilter extends TokenFilter {
+  private static final class LargePosIncTokenFilter extends TokenFilter {
     private CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
     private PositionIncrementAttribute posIncAtt = addAttribute(PositionIncrementAttribute.class);
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilterTest.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilterTest.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilterTest.java
index 3e54cc0..81da458 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilterTest.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/NumericPayloadTokenFilterTest.java
@@ -57,7 +57,7 @@ public class NumericPayloadTokenFilterTest extends BaseTokenStreamTestCase {
     assertTrue(seenDogs + " does not equal: " + true, seenDogs == true);
   }
 
-  private final class WordTokenFilter extends TokenFilter {
+  private static final class WordTokenFilter extends TokenFilter {
     private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
     private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilterTest.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilterTest.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilterTest.java
index f901016..5333cf0 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilterTest.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/payloads/TypeAsPayloadTokenFilterTest.java
@@ -47,7 +47,7 @@ public class TypeAsPayloadTokenFilterTest extends BaseTokenStreamTestCase {
     assertTrue(count + " does not equal: " + 10, count == 10);
   }
 
-  private final class WordTokenFilter extends TokenFilter {
+  private static final class WordTokenFilter extends TokenFilter {
     private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
     private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/test/org/apache/lucene/analysis/sinks/TestTeeSinkTokenFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/sinks/TestTeeSinkTokenFilter.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/sinks/TestTeeSinkTokenFilter.java
index c0127a3..5c2c2bb 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/sinks/TestTeeSinkTokenFilter.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/sinks/TestTeeSinkTokenFilter.java
@@ -223,7 +223,7 @@ public class TestTeeSinkTokenFilter extends BaseTokenStreamTestCase {
   }
 
 
-  class ModuloTokenFilter extends TokenFilter {
+  static class ModuloTokenFilter extends TokenFilter {
 
     int modCount;
 
@@ -248,7 +248,7 @@ public class TestTeeSinkTokenFilter extends BaseTokenStreamTestCase {
     }
   }
 
-  class ModuloSinkFilter extends FilteringTokenFilter {
+  static class ModuloSinkFilter extends FilteringTokenFilter {
     int count = 0;
     int modCount;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/test/org/apache/lucene/analysis/snowball/TestSnowball.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/snowball/TestSnowball.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/snowball/TestSnowball.java
index 881bc2f..783b707 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/snowball/TestSnowball.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/snowball/TestSnowball.java
@@ -71,7 +71,7 @@ public class TestSnowball extends BaseTokenStreamTestCase {
     assertEquals(new BytesRef(new byte[]{0,1,2,3}), payloadAtt.getPayload());
   }
   
-  private final class TestTokenStream extends TokenStream {
+  private static final class TestTokenStream extends TokenStream {
     private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
     private final OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class);
     private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/common/src/test/org/apache/lucene/analysis/standard/TestUAX29URLEmailTokenizer.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/standard/TestUAX29URLEmailTokenizer.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/standard/TestUAX29URLEmailTokenizer.java
index 8d3c706..eaa5a44 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/standard/TestUAX29URLEmailTokenizer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/standard/TestUAX29URLEmailTokenizer.java
@@ -127,7 +127,7 @@ public class TestUAX29URLEmailTokenizer extends BaseTokenStreamTestCase {
   }
 
   /** Passes through tokens with type "<URL>" and blocks all other types. */
-  private class URLFilter extends TokenFilter {
+  private static class URLFilter extends TokenFilter {
     private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
     public URLFilter(TokenStream in) {
       super(in);
@@ -146,7 +146,7 @@ public class TestUAX29URLEmailTokenizer extends BaseTokenStreamTestCase {
   }
   
   /** Passes through tokens with type "<EMAIL>" and blocks all other types. */
-  private class EmailFilter extends TokenFilter {
+  private static class EmailFilter extends TokenFilter {
     private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
     public EmailFilter(TokenStream in) {
       super(in);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/analysis/icu/src/java/org/apache/lucene/analysis/icu/ICUTransformFilter.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/icu/src/java/org/apache/lucene/analysis/icu/ICUTransformFilter.java b/lucene/analysis/icu/src/java/org/apache/lucene/analysis/icu/ICUTransformFilter.java
index e48c4ba..bfe7c12 100644
--- a/lucene/analysis/icu/src/java/org/apache/lucene/analysis/icu/ICUTransformFilter.java
+++ b/lucene/analysis/icu/src/java/org/apache/lucene/analysis/icu/ICUTransformFilter.java
@@ -112,7 +112,7 @@ public final class ICUTransformFilter extends TokenFilter {
   /**
    * Wrap a {@link CharTermAttribute} with the Replaceable API.
    */
-  final class ReplaceableTermAttribute implements Replaceable {
+  static final class ReplaceableTermAttribute implements Replaceable {
     private char buffer[];
     private int length;
     private CharTermAttribute token;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/classification/src/test/org/apache/lucene/classification/CachingNaiveBayesClassifierTest.java
----------------------------------------------------------------------
diff --git a/lucene/classification/src/test/org/apache/lucene/classification/CachingNaiveBayesClassifierTest.java b/lucene/classification/src/test/org/apache/lucene/classification/CachingNaiveBayesClassifierTest.java
index acbfe82..ccdb207 100644
--- a/lucene/classification/src/test/org/apache/lucene/classification/CachingNaiveBayesClassifierTest.java
+++ b/lucene/classification/src/test/org/apache/lucene/classification/CachingNaiveBayesClassifierTest.java
@@ -82,7 +82,7 @@ public class CachingNaiveBayesClassifierTest extends ClassificationTestBase<Byte
     }
   }
 
-  private class NGramAnalyzer extends Analyzer {
+  private static class NGramAnalyzer extends Analyzer {
     @Override
     protected TokenStreamComponents createComponents(String fieldName) {
       final Tokenizer tokenizer = new KeywordTokenizer();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java
----------------------------------------------------------------------
diff --git a/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java b/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java
index 830ce2c..2b4873d 100644
--- a/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java
+++ b/lucene/classification/src/test/org/apache/lucene/classification/SimpleNaiveBayesClassifierTest.java
@@ -83,7 +83,7 @@ public class SimpleNaiveBayesClassifierTest extends ClassificationTestBase<Bytes
     }
   }
 
-  private class NGramAnalyzer extends Analyzer {
+  private static class NGramAnalyzer extends Analyzer {
     @Override
     protected TokenStreamComponents createComponents(String fieldName) {
       final Tokenizer tokenizer = new KeywordTokenizer();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java b/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java
index ffe9fa1..b864bf0 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/bloom/BloomFilteringPostingsFormat.java
@@ -217,8 +217,8 @@ public final class BloomFilteringPostingsFormat extends PostingsFormat {
     public int size() {
       return delegateFieldsProducer.size();
     }
-    
-    class BloomFilteredTerms extends Terms {
+
+    static class BloomFilteredTerms extends Terms {
       private Terms delegateTerms;
       private FuzzySet filter;
       
@@ -288,8 +288,8 @@ public final class BloomFilteringPostingsFormat extends PostingsFormat {
         return delegateTerms.getMax();
       }
     }
-    
-    final class BloomFilteredTermsEnum extends TermsEnum {
+
+    static final class BloomFilteredTermsEnum extends TermsEnum {
       private Terms delegateTerms;
       private TermsEnum delegateTermsEnum;
       private final FuzzySet filter;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java
index 2f71765..dff445e 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/memory/MemoryPostingsFormat.java
@@ -267,7 +267,7 @@ public final class MemoryPostingsFormat extends PostingsFormat {
   private static final int VERSION_START = 1;
   private static final int VERSION_CURRENT = VERSION_START;
 
-  private class MemoryFieldsConsumer extends FieldsConsumer {
+  private static class MemoryFieldsConsumer extends FieldsConsumer {
     private final SegmentWriteState state;
     private final IndexOutput out;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
----------------------------------------------------------------------
diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
index c1808bf..873aaef 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextTermVectorsReader.java
@@ -239,7 +239,7 @@ public class SimpleTextTermVectorsReader extends TermVectorsReader {
     return scratchUTF16.toString();
   }
 
-  private class SimpleTVFields extends Fields {
+  private static class SimpleTVFields extends Fields {
     private final SortedMap<String,SimpleTVTerms> fields;
 
     SimpleTVFields(SortedMap<String,SimpleTVTerms> fields) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressingTermVectorsReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressingTermVectorsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressingTermVectorsReader.java
index aa19f20..2e8ed63 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressingTermVectorsReader.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressingTermVectorsReader.java
@@ -742,7 +742,7 @@ public final class CompressingTermVectorsReader extends TermVectorsReader implem
 
   }
 
-  private class TVTerms extends Terms {
+  private static class TVTerms extends Terms {
 
     private final int numTerms, flags;
     private final int[] prefixLengths, suffixLengths, termFreqs, positionIndex, positions, startOffsets, lengths, payloadIndex;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java b/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
index c67d07b..eee0c16 100644
--- a/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
+++ b/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
@@ -160,7 +160,7 @@ public class ParallelLeafReader extends LeafReader {
   }
 
   // Single instance of this, per ParallelReader instance
-  private final class ParallelFields extends Fields {
+  private static final class ParallelFields extends Fields {
     final Map<String,Terms> fields = new TreeMap<>();
     
     ParallelFields() {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java b/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
index dbd05e8..8827a9f 100644
--- a/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
+++ b/lucene/core/src/java/org/apache/lucene/search/ConstantScoreQuery.java
@@ -68,7 +68,7 @@ public final class ConstantScoreQuery extends Query {
    *  wraps a query with its own optimized top-level
    *  scorer (e.g. BooleanScorer) we can use that
    *  top-level scorer. */
-  protected class ConstantBulkScorer extends BulkScorer {
+  protected static class ConstantBulkScorer extends BulkScorer {
     final BulkScorer bulkScorer;
     final Weight weight;
     final float theScore;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java b/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java
index 79783b5..c842606 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestCodecs.java
@@ -75,7 +75,7 @@ public class TestCodecs extends LuceneTestCase {
     NUM_TEST_ITER = atLeast(20);
   }
 
-  class FieldData implements Comparable<FieldData> {
+  static class FieldData implements Comparable<FieldData> {
     final FieldInfo fieldInfo;
     final TermData[] terms;
     final boolean omitTF;
@@ -107,7 +107,7 @@ public class TestCodecs extends LuceneTestCase {
     }
   }
 
-  class PositionData {
+  static class PositionData {
     int pos;
     BytesRef payload;
 
@@ -117,7 +117,7 @@ public class TestCodecs extends LuceneTestCase {
     }
   }
 
-  class TermData implements Comparable<TermData> {
+  static class TermData implements Comparable<TermData> {
     String text2;
     final BytesRef text;
     int[] docs;
@@ -300,7 +300,7 @@ public class TestCodecs extends LuceneTestCase {
     dir.close();
   }
 
-  private class Verify extends Thread {
+  private static class Verify extends Thread {
     final Fields termsDict;
     final FieldData[] fields;
     final SegmentInfo si;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestFlushByRamOrCountsPolicy.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestFlushByRamOrCountsPolicy.java b/lucene/core/src/test/org/apache/lucene/index/TestFlushByRamOrCountsPolicy.java
index 993a521..aa2901c 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestFlushByRamOrCountsPolicy.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestFlushByRamOrCountsPolicy.java
@@ -290,7 +290,7 @@ public class TestFlushByRamOrCountsPolicy extends LuceneTestCase {
     assertEquals(bytesUsed, flushControl.activeBytes());
   }
 
-  public class IndexThread extends Thread {
+  public static class IndexThread extends Thread {
     IndexWriter writer;
     LiveIndexWriterConfig iwc;
     LineFileDocs docs;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
index 987852f..c0907a5 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
@@ -346,7 +346,7 @@ public class TestIndexWriterExceptions extends LuceneTestCase {
 
   private static String CRASH_FAIL_MESSAGE = "I'm experiencing problems";
 
-  private class CrashingFilter extends TokenFilter {
+  private static class CrashingFilter extends TokenFilter {
     String fieldName;
     int count;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java
index e4d4018..6931efa 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMerging.java
@@ -308,7 +308,7 @@ public class TestIndexWriterMerging extends LuceneTestCase {
   
   // Just intercepts all merges & verifies that we are never
   // merging a segment with >= 20 (maxMergeDocs) docs
-  private class MyMergeScheduler extends MergeScheduler {
+  private static class MyMergeScheduler extends MergeScheduler {
     @Override
     synchronized public void merge(IndexWriter writer, MergeTrigger trigger, boolean newMergesFound) throws IOException {
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
index 6b599d2..6c950b8 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterWithThreads.java
@@ -51,7 +51,7 @@ import org.apache.lucene.util.LuceneTestCase.Slow;
 public class TestIndexWriterWithThreads extends LuceneTestCase {
 
   // Used by test cases below
-  private class IndexerThread extends Thread {
+  private static class IndexerThread extends Thread {
 
     boolean diskFull;
     Throwable error;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java
index e60a3e1..510a899 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexableField.java
@@ -41,7 +41,7 @@ import org.apache.lucene.util.TestUtil;
 
 public class TestIndexableField extends LuceneTestCase {
 
-  private class MyField implements IndexableField {
+  private static class MyField implements IndexableField {
 
     private final int counter;
     private final IndexableFieldType fieldType = new IndexableFieldType() {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestMaxTermFrequency.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestMaxTermFrequency.java b/lucene/core/src/test/org/apache/lucene/index/TestMaxTermFrequency.java
index 900ec2b..4f74c30 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestMaxTermFrequency.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestMaxTermFrequency.java
@@ -99,7 +99,7 @@ public class TestMaxTermFrequency extends LuceneTestCase {
   /**
    * Simple similarity that encodes maxTermFrequency directly as a byte
    */
-  class TestSimilarity extends TFIDFSimilarity {
+  static class TestSimilarity extends TFIDFSimilarity {
 
     @Override
     public float lengthNorm(FieldInvertState state) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestNorms.java b/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
index 363f57e..16ce61d 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestNorms.java
@@ -50,7 +50,7 @@ import org.apache.lucene.util.TestUtil;
 public class TestNorms extends LuceneTestCase {
   final String byteTestField = "normsTestByte";
 
-  class CustomNormEncodingSimilarity extends TFIDFSimilarity {
+  static class CustomNormEncodingSimilarity extends TFIDFSimilarity {
 
     @Override
     public long encodeNormValue(float f) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java b/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
index 34d8afb..58ef890 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestPerSegmentDeletes.java
@@ -242,7 +242,7 @@ public class TestPerSegmentDeletes extends LuceneTestCase {
     return Arrays.copyOf(docs, numDocs);
   }
 
-  public class RangeMergePolicy extends MergePolicy {
+  public static class RangeMergePolicy extends MergePolicy {
     boolean doMerge = false;
     int start;
     int length;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java b/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java
index 3cd9a6a..d386f39 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java
@@ -686,7 +686,7 @@ public class TestStressIndexing2 extends LuceneTestCase {
     assertFalse(fieldsEnum2.hasNext());
   }
 
-  private class IndexingThread extends Thread {
+  private static class IndexingThread extends Thread {
     IndexWriter w;
     int base;
     int range;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java b/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java
index 4b2a060..76947dd 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestTermVectorsReader.java
@@ -50,7 +50,7 @@ public class TestTermVectorsReader extends LuceneTestCase {
   private FieldInfos fieldInfos = new FieldInfos(new FieldInfo[0]);
   private static int TERM_FREQ = 3;
 
-  private class TestToken implements Comparable<TestToken> {
+  private static class TestToken implements Comparable<TestToken> {
     String text;
     int pos;
     int startOffset;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestTransactionRollback.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestTransactionRollback.java b/lucene/core/src/test/org/apache/lucene/index/TestTransactionRollback.java
index e7de028..eb08475 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestTransactionRollback.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestTransactionRollback.java
@@ -157,7 +157,7 @@ public class TestTransactionRollback extends LuceneTestCase {
   }
 
   // Rolls back to previous commit point
-  class RollbackDeletionPolicy extends IndexDeletionPolicy {
+  static class RollbackDeletionPolicy extends IndexDeletionPolicy {
     private int rollbackPoint;
 
     public RollbackDeletionPolicy(int rollbackPoint) {
@@ -197,7 +197,7 @@ public class TestTransactionRollback extends LuceneTestCase {
     }
   }
 
-  class DeleteLastCommitPolicy extends IndexDeletionPolicy {
+  static class DeleteLastCommitPolicy extends IndexDeletionPolicy {
 
     @Override
     public void onCommit(List<? extends IndexCommit> commits) throws IOException {}
@@ -222,7 +222,7 @@ public class TestTransactionRollback extends LuceneTestCase {
   }
 
   // Keeps all commit points (used to build index)
-  class KeepAllDeletionPolicy extends IndexDeletionPolicy {
+  static class KeepAllDeletionPolicy extends IndexDeletionPolicy {
     @Override
     public void onCommit(List<? extends IndexCommit> commits) throws IOException {}
     @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java b/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java
index ee47fff..a0fca4c 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestUniqueTermCount.java
@@ -98,7 +98,7 @@ public class TestUniqueTermCount extends LuceneTestCase {
   /**
    * Simple similarity that encodes maxTermFrequency directly
    */
-  class TestSimilarity extends Similarity {
+  static class TestSimilarity extends Similarity {
 
     @Override
     public long computeNorm(FieldInvertState state) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/search/TestCustomSearcherSort.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestCustomSearcherSort.java b/lucene/core/src/test/org/apache/lucene/search/TestCustomSearcherSort.java
index a9bac60..f09dfde 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestCustomSearcherSort.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestCustomSearcherSort.java
@@ -183,7 +183,7 @@ public class TestCustomSearcherSort extends LuceneTestCase {
     if (VERBOSE) System.out.println(message);
   }
   
-  public class CustomSearcher extends IndexSearcher {
+  public static class CustomSearcher extends IndexSearcher {
     private int switcher;
     
     public CustomSearcher(IndexReader r, int switcher) {
@@ -212,7 +212,7 @@ public class TestCustomSearcherSort extends LuceneTestCase {
     }
   }
   
-  private class RandomGen {
+  private static class RandomGen {
     RandomGen(Random random) {
       this.random = random;
       base.set(1980, 1, 1);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/search/TestEarlyTerminatingSortingCollector.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestEarlyTerminatingSortingCollector.java b/lucene/core/src/test/org/apache/lucene/search/TestEarlyTerminatingSortingCollector.java
index d12caf1..6d699e8 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestEarlyTerminatingSortingCollector.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestEarlyTerminatingSortingCollector.java
@@ -201,7 +201,7 @@ public class TestEarlyTerminatingSortingCollector extends LuceneTestCase {
     }
   }
 
-  private class TestTerminatedEarlySimpleCollector extends SimpleCollector {
+  private static class TestTerminatedEarlySimpleCollector extends SimpleCollector {
     private boolean collectedSomething;
     public boolean collectedSomething() {
       return collectedSomething;
@@ -216,7 +216,7 @@ public class TestEarlyTerminatingSortingCollector extends LuceneTestCase {
     }
   }
 
-  private class TestEarlyTerminatingSortingcollectorQueryTimeout implements QueryTimeout {
+  private static class TestEarlyTerminatingSortingcollectorQueryTimeout implements QueryTimeout {
     final private boolean shouldExit;
     public TestEarlyTerminatingSortingcollectorQueryTimeout(boolean shouldExit) {
       this.shouldExit = shouldExit;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/search/TestPrefixRandom.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestPrefixRandom.java b/lucene/core/src/test/org/apache/lucene/search/TestPrefixRandom.java
index 72fdc7a..f332a36 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestPrefixRandom.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestPrefixRandom.java
@@ -75,7 +75,7 @@ public class TestPrefixRandom extends LuceneTestCase {
   }
   
   /** a stupid prefix query that just blasts thru the terms */
-  private class DumbPrefixQuery extends MultiTermQuery {
+  private static class DumbPrefixQuery extends MultiTermQuery {
     private final BytesRef prefix;
     
     DumbPrefixQuery(Term term) {
@@ -88,7 +88,7 @@ public class TestPrefixRandom extends LuceneTestCase {
       return new SimplePrefixTermsEnum(terms.iterator(), prefix);
     }
 
-    private class SimplePrefixTermsEnum extends FilteredTermsEnum {
+    private static class SimplePrefixTermsEnum extends FilteredTermsEnum {
       private final BytesRef prefix;
 
       private SimplePrefixTermsEnum(TermsEnum tenum, BytesRef prefix) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java b/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java
index a704d54..78a4352 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestRegexpRandom2.java
@@ -102,7 +102,7 @@ public class TestRegexpRandom2 extends LuceneTestCase {
   }
   
   /** a stupid regexp query that just blasts thru the terms */
-  private class DumbRegexpQuery extends MultiTermQuery {
+  private static class DumbRegexpQuery extends MultiTermQuery {
     private final Automaton automaton;
     
     DumbRegexpQuery(Term term, int flags) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/search/TestSimilarityProvider.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestSimilarityProvider.java b/lucene/core/src/test/org/apache/lucene/search/TestSimilarityProvider.java
index de96755..fbc0b35 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestSimilarityProvider.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestSimilarityProvider.java
@@ -90,7 +90,7 @@ public class TestSimilarityProvider extends LuceneTestCase {
     assertTrue(foodocs.scoreDocs[0].score < bardocs.scoreDocs[0].score);
   }
   
-  private class ExampleSimilarityProvider extends PerFieldSimilarityWrapper {
+  private static class ExampleSimilarityProvider extends PerFieldSimilarityWrapper {
     private Similarity sim1 = new Sim1();
     private Similarity sim2 = new Sim2();
     
@@ -104,7 +104,7 @@ public class TestSimilarityProvider extends LuceneTestCase {
     }
   }
   
-  private class Sim1 extends TFIDFSimilarity {
+  private static class Sim1 extends TFIDFSimilarity {
     
     @Override
     public long encodeNormValue(float f) {
@@ -142,7 +142,7 @@ public class TestSimilarityProvider extends LuceneTestCase {
     }
   }
   
-  private class Sim2 extends TFIDFSimilarity {
+  private static class Sim2 extends TFIDFSimilarity {
     
     @Override
     public long encodeNormValue(float f) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java b/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java
index d00e520..f0ad9b9 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java
@@ -153,7 +153,7 @@ public class TestTermScorer extends LuceneTestCase {
     assertTrue("doc should be number 5", ts.docID() == 5);
   }
   
-  private class TestHit {
+  private static class TestHit {
     public int doc;
     public float score;
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java b/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java
index d26006c..6a02e58 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java
@@ -320,7 +320,7 @@ public class TestTimeLimitingCollector extends LuceneTestCase {
   }
   
   // counting collector that can slow down at collect().
-  private class MyHitCollector extends SimpleCollector {
+  private static class MyHitCollector extends SimpleCollector {
     private final BitSet bits = new BitSet();
     private int slowdown = 0;
     private int lastDocCollected = -1;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/store/TestLockFactory.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/store/TestLockFactory.java b/lucene/core/src/test/org/apache/lucene/store/TestLockFactory.java
index fa7a3fb..c257861 100644
--- a/lucene/core/src/test/org/apache/lucene/store/TestLockFactory.java
+++ b/lucene/core/src/test/org/apache/lucene/store/TestLockFactory.java
@@ -76,7 +76,7 @@ public class TestLockFactory extends LuceneTestCase {
         }
     }
 
-    class MockLockFactory extends LockFactory {
+    static class MockLockFactory extends LockFactory {
 
         public Map<String,Lock> locksCreated = Collections.synchronizedMap(new HashMap<String,Lock>());
 
@@ -87,7 +87,7 @@ public class TestLockFactory extends LuceneTestCase {
             return lock;
         }
 
-        public class MockLock extends Lock {
+        public static class MockLock extends Lock {
 
             @Override
             public void close() {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/util/TestCloseableThreadLocal.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestCloseableThreadLocal.java b/lucene/core/src/test/org/apache/lucene/util/TestCloseableThreadLocal.java
index 9f56d7b..ca0f811 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestCloseableThreadLocal.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestCloseableThreadLocal.java
@@ -40,7 +40,7 @@ public class TestCloseableThreadLocal extends LuceneTestCase {
     assertNull(ctl.get());
   }
 
-  public class InitValueThreadLocal extends CloseableThreadLocal<Object> {
+  public static class InitValueThreadLocal extends CloseableThreadLocal<Object> {
     @Override
     protected Object initialValue() {
       return TEST_VALUE;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/util/TestQueryBuilder.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestQueryBuilder.java b/lucene/core/src/test/org/apache/lucene/util/TestQueryBuilder.java
index fc04c5e..a9d803b 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestQueryBuilder.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestQueryBuilder.java
@@ -266,7 +266,7 @@ public class TestQueryBuilder extends LuceneTestCase {
     }
   }
   
-  private class SimpleCJKAnalyzer extends Analyzer {
+  private static class SimpleCJKAnalyzer extends Analyzer {
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
       return new TokenStreamComponents(new SimpleCJKTokenizer());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java b/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java
index 7a8e5f5..6f704c9 100644
--- a/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java
+++ b/lucene/core/src/test/org/apache/lucene/util/fst/TestFSTs.java
@@ -1458,7 +1458,7 @@ public class TestFSTs extends LuceneTestCase {
   }
 
   // used by slowcompletor
-  class TwoLongs {
+  static class TwoLongs {
     long a;
     long b;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/writercache/CollisionMap.java
----------------------------------------------------------------------
diff --git a/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/writercache/CollisionMap.java b/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/writercache/CollisionMap.java
index 205a540..b80f2bd 100644
--- a/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/writercache/CollisionMap.java
+++ b/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/writercache/CollisionMap.java
@@ -185,7 +185,7 @@ public class CollisionMap {
     return memoryUsage;
   }
 
-  private class EntryIterator implements Iterator<Entry> {
+  private static class EntryIterator implements Iterator<Entry> {
     Entry next;    // next entry to return
     int index;        // current slot 
     Entry[] ents;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupFacetCollectorTest.java
----------------------------------------------------------------------
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupFacetCollectorTest.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupFacetCollectorTest.java
index 46141bc..c590502 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupFacetCollectorTest.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/GroupFacetCollectorTest.java
@@ -720,7 +720,7 @@ public class GroupFacetCollectorTest extends AbstractGroupingTestCase {
     return null;
   }
 
-  private class IndexContext {
+  private static class IndexContext {
 
     final int numDocs;
     final DirectoryReader indexReader;
@@ -744,7 +744,7 @@ public class GroupFacetCollectorTest extends AbstractGroupingTestCase {
     }
   }
 
-  private class GroupedFacetResult {
+  private static class GroupedFacetResult {
 
     final int totalCount;
     final int totalMissingCount;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/visibility/TestUnifiedHighlighterExtensibility.java
----------------------------------------------------------------------
diff --git a/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/visibility/TestUnifiedHighlighterExtensibility.java b/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/visibility/TestUnifiedHighlighterExtensibility.java
index 08055a2..e5d7e82 100644
--- a/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/visibility/TestUnifiedHighlighterExtensibility.java
+++ b/lucene/highlighter/src/test/org/apache/lucene/search/uhighlight/visibility/TestUnifiedHighlighterExtensibility.java
@@ -202,7 +202,7 @@ public class TestUnifiedHighlighterExtensibility extends LuceneTestCase {
   }
 
   /** Tests maintaining extensibility/visibility of {@link org.apache.lucene.search.uhighlight.FieldHighlighter} out of package. */
-  private class CustomFieldHighlighter extends FieldHighlighter {
+  private static class CustomFieldHighlighter extends FieldHighlighter {
     CustomFieldHighlighter(String field, FieldOffsetStrategy fieldOffsetStrategy, BreakIterator breakIterator, PassageScorer passageScorer, int maxPassages, int maxNoHighlightPassages, PassageFormatter passageFormatter) {
       super(field, fieldOffsetStrategy, breakIterator, passageScorer, maxPassages, maxNoHighlightPassages, passageFormatter);
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java b/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java
index 2ae6c01..632bcc7 100644
--- a/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java
+++ b/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java
@@ -238,7 +238,7 @@ public class CustomScoreQuery extends Query implements Cloneable {
   /**
    * A scorer that applies a (callback) function on scores of the subQuery.
    */
-  private class CustomScorer extends FilterScorer {
+  private static class CustomScorer extends FilterScorer {
     private final float qWeight;
     private final Scorer subQueryScorer;
     private final Scorer[] valSrcScorers;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java b/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java
index 540ecf8..d001cc8 100644
--- a/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java
+++ b/lucene/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java
@@ -153,7 +153,7 @@ public class TestCustomScoreQuery extends FunctionTestSetup {
     }
   }
 
-  private final class CustomExternalQuery extends CustomScoreQuery {
+  private static final class CustomExternalQuery extends CustomScoreQuery {
 
     @Override
     protected CustomScoreProvider getCustomScoreProvider(LeafReaderContext context) throws IOException {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/queries/src/test/org/apache/lucene/queries/payloads/TestPayloadSpans.java
----------------------------------------------------------------------
diff --git a/lucene/queries/src/test/org/apache/lucene/queries/payloads/TestPayloadSpans.java b/lucene/queries/src/test/org/apache/lucene/queries/payloads/TestPayloadSpans.java
index 3c5b80f..c39421b 100644
--- a/lucene/queries/src/test/org/apache/lucene/queries/payloads/TestPayloadSpans.java
+++ b/lucene/queries/src/test/org/apache/lucene/queries/payloads/TestPayloadSpans.java
@@ -461,7 +461,7 @@ public class TestPayloadSpans extends LuceneTestCase {
     assertEquals("expected numSpans", numSpans, cnt);
   }
 
-  final class PayloadAnalyzer extends Analyzer {
+  static final class PayloadAnalyzer extends Analyzer {
 
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
@@ -470,7 +470,7 @@ public class TestPayloadSpans extends LuceneTestCase {
     }
   }
 
-  final class PayloadFilter extends TokenFilter {
+  static final class PayloadFilter extends TokenFilter {
     Set<String> entities = new HashSet<>();
     Set<String> nopayload = new HashSet<>();
     int pos;
@@ -515,7 +515,7 @@ public class TestPayloadSpans extends LuceneTestCase {
     }
   }
   
-  public final class TestPayloadAnalyzer extends Analyzer {
+  public static final class TestPayloadAnalyzer extends Analyzer {
 
     @Override
     public TokenStreamComponents createComponents(String fieldName) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiAnalyzer.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiAnalyzer.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiAnalyzer.java
index bdb6256..85a5f39 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiAnalyzer.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiAnalyzer.java
@@ -120,7 +120,7 @@ public class TestMultiAnalyzer extends BaseTokenStreamTestCase {
    * Expands "multi" to "multi" and "multi2", both at the same position,
    * and expands "triplemulti" to "triplemulti", "multi3", and "multi2".
    */
-  private class MultiAnalyzer extends Analyzer {
+  private static class MultiAnalyzer extends Analyzer {
 
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
@@ -129,7 +129,7 @@ public class TestMultiAnalyzer extends BaseTokenStreamTestCase {
     }
   }
 
-  private final class TestFilter extends TokenFilter {
+  private static final class TestFilter extends TokenFilter {
 
     private String prevType;
     private int prevStartOffset;
@@ -191,7 +191,7 @@ public class TestMultiAnalyzer extends BaseTokenStreamTestCase {
    * Analyzes "the quick brown" as: quick(incr=2) brown(incr=1).
    * Does not work correctly for input other than "the quick brown ...".
    */
-  private class PosIncrementAnalyzer extends Analyzer {
+  private static class PosIncrementAnalyzer extends Analyzer {
 
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
@@ -200,7 +200,7 @@ public class TestMultiAnalyzer extends BaseTokenStreamTestCase {
     }
   }
 
-  private final class TestPosIncrementFilter extends TokenFilter {
+  private static final class TestPosIncrementFilter extends TokenFilter {
 
     CharTermAttribute termAtt;
     PositionIncrementAttribute posIncrAtt;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
index 7490e8c..4c28e8f 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
@@ -336,7 +336,7 @@ public class TestMultiFieldQueryParser extends LuceneTestCase {
   }
 
   /** whitespace+lowercase analyzer with synonyms (dogs,dog) and (guinea pig,cavy) */
-  private class MockSynonymAnalyzer extends Analyzer {
+  private static class MockSynonymAnalyzer extends Analyzer {
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
       Tokenizer tokenizer = new MockTokenizer(MockTokenizer.WHITESPACE, true);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java
index 56ef65a..220ce02 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiAnalyzerQPHelper.java
@@ -139,7 +139,7 @@ public class TestMultiAnalyzerQPHelper extends LuceneTestCase {
    * Expands "multi" to "multi" and "multi2", both at the same position, and
    * expands "triplemulti" to "triplemulti", "multi3", and "multi2".
    */
-  private class MultiAnalyzer extends Analyzer {
+  private static class MultiAnalyzer extends Analyzer {
 
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
@@ -148,7 +148,7 @@ public class TestMultiAnalyzerQPHelper extends LuceneTestCase {
     }
   }
 
-  private final class TestFilter extends TokenFilter {
+  private static final class TestFilter extends TokenFilter {
 
     private String prevType;
     private int prevStartOffset;
@@ -206,7 +206,7 @@ public class TestMultiAnalyzerQPHelper extends LuceneTestCase {
    * Analyzes "the quick brown" as: quick(incr=2) brown(incr=1). Does not work
    * correctly for input other than "the quick brown ...".
    */
-  private class PosIncrementAnalyzer extends Analyzer {
+  private static class PosIncrementAnalyzer extends Analyzer {
 
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
@@ -215,7 +215,7 @@ public class TestMultiAnalyzerQPHelper extends LuceneTestCase {
     }
   }
 
-  private class TestPosIncrementFilter extends TokenFilter {
+  private static class TestPosIncrementFilter extends TokenFilter {
 
     private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
     private final PositionIncrementAttribute posIncrAtt = addAttribute(PositionIncrementAttribute.class);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
index 2d5ee43..2aa96be 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
@@ -350,7 +350,7 @@ public class TestQPHelper extends LuceneTestCase {
   }
 
   //individual CJK chars as terms, like StandardAnalyzer
-  private class SimpleCJKTokenizer extends Tokenizer {
+  private static class SimpleCJKTokenizer extends Tokenizer {
     private CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
 
     public SimpleCJKTokenizer() {
@@ -368,7 +368,7 @@ public class TestQPHelper extends LuceneTestCase {
     }
   }
 
-  private class SimpleCJKAnalyzer extends Analyzer {
+  private static class SimpleCJKAnalyzer extends Analyzer {
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
       return new TokenStreamComponents(new SimpleCJKTokenizer());
@@ -1252,7 +1252,7 @@ public class TestQPHelper extends LuceneTestCase {
     super.tearDown();
   }
 
-  private class CannedTokenizer extends Tokenizer {
+  private static class CannedTokenizer extends Tokenizer {
     private int upto = 0;
     private final PositionIncrementAttribute posIncr = addAttribute(PositionIncrementAttribute.class);
     private final CharTermAttribute term = addAttribute(CharTermAttribute.class);
@@ -1291,7 +1291,7 @@ public class TestQPHelper extends LuceneTestCase {
     }
   }
 
-  private class CannedAnalyzer extends Analyzer {
+  private static class CannedAnalyzer extends Analyzer {
     @Override
     public TokenStreamComponents createComponents(String ignored) {
       return new TokenStreamComponents(new CannedTokenizer());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
index 0041106..1b8ee96 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
@@ -264,7 +264,7 @@ public abstract class QueryParserTestBase extends LuceneTestCase {
     }
   }
 
-  private class SimpleCJKAnalyzer extends Analyzer {
+  private static class SimpleCJKAnalyzer extends Analyzer {
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
       return new TokenStreamComponents(new SimpleCJKTokenizer());
@@ -1095,7 +1095,7 @@ public abstract class QueryParserTestBase extends LuceneTestCase {
   }
 
   /** whitespace+lowercase analyzer with synonyms */
-  protected class Analyzer1 extends Analyzer {
+  protected static class Analyzer1 extends Analyzer {
     public Analyzer1(){
       super();
     }
@@ -1107,7 +1107,7 @@ public abstract class QueryParserTestBase extends LuceneTestCase {
   }
   
   /** whitespace+lowercase analyzer without synonyms */
-  protected class Analyzer2 extends Analyzer {
+  protected static class Analyzer2 extends Analyzer {
     public Analyzer2(){
       super();
     }
@@ -1122,7 +1122,7 @@ public abstract class QueryParserTestBase extends LuceneTestCase {
   /**
    * Mock collation analyzer: indexes terms as "collated" + term
    */
-  private class MockCollationFilter extends TokenFilter {
+  private static class MockCollationFilter extends TokenFilter {
     private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
 
     protected MockCollationFilter(TokenStream input) {
@@ -1141,7 +1141,7 @@ public abstract class QueryParserTestBase extends LuceneTestCase {
     }
     
   }
-  private class MockCollationAnalyzer extends Analyzer {
+  private static class MockCollationAnalyzer extends Analyzer {
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
       Tokenizer tokenizer = new MockTokenizer(MockTokenizer.WHITESPACE, true);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java b/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java
index 8bd7b89..840ade3 100644
--- a/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java
+++ b/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java
@@ -112,7 +112,7 @@ public class FuzzyLikeThisQuery extends Query
     this.maxNumTerms = maxNumTerms;
   }
 
-  class FieldVals
+  static class FieldVals
   {
     String queryString;
     String fieldName;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/sandbox/src/test/org/apache/lucene/payloads/TestPayloadSpanUtil.java
----------------------------------------------------------------------
diff --git a/lucene/sandbox/src/test/org/apache/lucene/payloads/TestPayloadSpanUtil.java b/lucene/sandbox/src/test/org/apache/lucene/payloads/TestPayloadSpanUtil.java
index ecf2ff6..af19e3d 100644
--- a/lucene/sandbox/src/test/org/apache/lucene/payloads/TestPayloadSpanUtil.java
+++ b/lucene/sandbox/src/test/org/apache/lucene/payloads/TestPayloadSpanUtil.java
@@ -72,7 +72,7 @@ public class TestPayloadSpanUtil extends LuceneTestCase {
     directory.close();
   }
 
-  final class PayloadAnalyzer extends Analyzer {
+  final static class PayloadAnalyzer extends Analyzer {
 
     @Override
     public TokenStreamComponents createComponents(String fieldName) {
@@ -81,7 +81,7 @@ public class TestPayloadSpanUtil extends LuceneTestCase {
     }
   }
 
-  final class PayloadFilter extends TokenFilter {
+  static final class PayloadFilter extends TokenFilter {
     Set<String> entities = new HashSet<>();
     Set<String> nopayload = new HashSet<>();
     int pos;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/suggest/src/java/org/apache/lucene/search/spell/WordBreakSpellChecker.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/spell/WordBreakSpellChecker.java b/lucene/suggest/src/java/org/apache/lucene/search/spell/WordBreakSpellChecker.java
index f3cc5bd..c075ad4 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/spell/WordBreakSpellChecker.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/spell/WordBreakSpellChecker.java
@@ -441,7 +441,7 @@ public class WordBreakSpellChecker {
     this.maxEvaluations = maxEvaluations;
   }
   
-  private class LengthThenMaxFreqComparator implements
+  private static class LengthThenMaxFreqComparator implements
       Comparator<SuggestWordArrayWrapper> {
     @Override
     public int compare(SuggestWordArrayWrapper o1, SuggestWordArrayWrapper o2) {
@@ -455,7 +455,7 @@ public class WordBreakSpellChecker {
     }
   }
   
-  private class LengthThenSumFreqComparator implements
+  private static class LengthThenSumFreqComparator implements
       Comparator<SuggestWordArrayWrapper> {
     @Override
     public int compare(SuggestWordArrayWrapper o1, SuggestWordArrayWrapper o2) {
@@ -469,7 +469,7 @@ public class WordBreakSpellChecker {
     }
   }
   
-  private class CombinationsThenFreqComparator implements
+  private static class CombinationsThenFreqComparator implements
       Comparator<CombineSuggestionWrapper> {
     @Override
     public int compare(CombineSuggestionWrapper o1, CombineSuggestionWrapper o2) {
@@ -484,7 +484,7 @@ public class WordBreakSpellChecker {
     }
   }
   
-  private class SuggestWordArrayWrapper {
+  private static class SuggestWordArrayWrapper {
     final SuggestWord[] suggestWords;
     final int freqMax;
     final int freqSum;
@@ -502,7 +502,7 @@ public class WordBreakSpellChecker {
     }
   }
   
-  private class CombineSuggestionWrapper {
+  private static class CombineSuggestionWrapper {
     final CombineSuggestion combineSuggestion;
     final int numCombinations;
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/ContextQuery.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/ContextQuery.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/ContextQuery.java
index 7a5e3e0..4a29f24 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/ContextQuery.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/ContextQuery.java
@@ -238,7 +238,7 @@ public class ContextQuery extends CompletionQuery {
     }
   }
 
-  private class ContextCompletionWeight extends CompletionWeight {
+  private static class ContextCompletionWeight extends CompletionWeight {
 
     private final Map<IntsRef, Float> contextMap;
     private final int[] contextLengths;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/ExternalRefSorter.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/ExternalRefSorter.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/ExternalRefSorter.java
index fb876d2..5b7e714 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/ExternalRefSorter.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/ExternalRefSorter.java
@@ -105,7 +105,7 @@ public class ExternalRefSorter implements BytesRefSorter, Closeable {
    * Iterate over byte refs in a file.
    */
   // TODO: this class is a bit silly ... sole purpose is to "remove" Closeable from what #iterator returns:
-  class ByteSequenceIterator implements BytesRefIterator {
+  static class ByteSequenceIterator implements BytesRefIterator {
     private final OfflineSorter.ByteSequencesReader reader;
     private BytesRef scratch;
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/WFSTCompletionLookup.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/WFSTCompletionLookup.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/WFSTCompletionLookup.java
index 1cc89a4..d6c1a97 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/WFSTCompletionLookup.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/WFSTCompletionLookup.java
@@ -267,7 +267,7 @@ public class WFSTCompletionLookup extends Lookup implements Accountable {
     return Integer.MAX_VALUE - (int)value;
   }
   
-  private final class WFSTInputIterator extends SortedInputIterator {
+  private static final class WFSTInputIterator extends SortedInputIterator {
 
     WFSTInputIterator(Directory tempDir, String tempFileNamePrefix, InputIterator source) throws IOException {
       super(tempDir, tempFileNamePrefix, source);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellLookup.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellLookup.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellLookup.java
index 3e78f59..948ebeb 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellLookup.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellLookup.java
@@ -147,17 +147,17 @@ public class JaspellLookup extends Lookup implements Accountable {
       node.data = Long.valueOf(in.readLong());
     }
     if ((mask & LO_KID) != 0) {
-      TSTNode kid = trie.new TSTNode('\0', node);
+      TSTNode kid = new TSTNode('\0', node);
       node.relatives[TSTNode.LOKID] = kid;
       readRecursively(in, kid);
     }
     if ((mask & EQ_KID) != 0) {
-      TSTNode kid = trie.new TSTNode('\0', node);
+      TSTNode kid = new TSTNode('\0', node);
       node.relatives[TSTNode.EQKID] = kid;
       readRecursively(in, kid);
     }
     if ((mask & HI_KID) != 0) {
-      TSTNode kid = trie.new TSTNode('\0', node);
+      TSTNode kid = new TSTNode('\0', node);
       node.relatives[TSTNode.HIKID] = kid;
       readRecursively(in, kid);
     }
@@ -196,7 +196,7 @@ public class JaspellLookup extends Lookup implements Accountable {
   @Override
   public boolean load(DataInput input) throws IOException {
     count = input.readVLong();
-    TSTNode root = trie.new TSTNode('\0', null);
+    TSTNode root = new TSTNode('\0', null);
     readRecursively(input, root);
     trie.setRoot(root);
     return true;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellTernarySearchTrie.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellTernarySearchTrie.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellTernarySearchTrie.java
index 15deaea..2a4a439 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellTernarySearchTrie.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellTernarySearchTrie.java
@@ -71,7 +71,7 @@ public class JaspellTernarySearchTrie implements Accountable {
   /**
    * An inner class of Ternary Search Trie that represents a node in the trie.
    */
-  protected final class TSTNode implements Accountable {
+  protected static final class TSTNode implements Accountable {
 
     /** Index values for accessing relatives array. */
     protected final static int PARENT = 0, LOKID = 1, EQKID = 2, HIKID = 3;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/suggest/src/test/org/apache/lucene/search/suggest/DocumentDictionaryTest.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/suggest/DocumentDictionaryTest.java b/lucene/suggest/src/test/org/apache/lucene/search/suggest/DocumentDictionaryTest.java
index a7e9b00..57173e2 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/suggest/DocumentDictionaryTest.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/suggest/DocumentDictionaryTest.java
@@ -411,7 +411,7 @@ public class DocumentDictionaryTest extends LuceneTestCase {
     return suggestionList;
   }
 
-  private class Suggestion {
+  private static class Suggestion {
     private long weight;
     private BytesRef payload;
     private Set<BytesRef> contexts;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java b/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
index 478358b..423e62a 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggesterTest.java
@@ -910,7 +910,7 @@ public class AnalyzingInfixSuggesterTest extends LuceneTestCase {
     a.close();
   }
 
-  private class IndexDocument implements Runnable {
+  private static class IndexDocument implements Runnable {
     AnalyzingInfixSuggester suggester;
     String key;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/FuzzySuggesterTest.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/FuzzySuggesterTest.java b/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/FuzzySuggesterTest.java
index adda0fc..165c9f2 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/FuzzySuggesterTest.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/suggest/analyzing/FuzzySuggesterTest.java
@@ -1118,7 +1118,7 @@ public class FuzzySuggesterTest extends LuceneTestCase {
 
   private static final Comparator<CharSequence> CHARSEQUENCE_COMPARATOR = new CharSequenceComparator();
 
-  public class CompareByCostThenAlpha implements Comparator<LookupResult> {
+  public static class CompareByCostThenAlpha implements Comparator<LookupResult> {
     @Override
     public int compare(LookupResult a, LookupResult b) {
       if (a.value > b.value) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/test-framework/src/java/org/apache/lucene/store/BaseLockFactoryTestCase.java
----------------------------------------------------------------------
diff --git a/lucene/test-framework/src/java/org/apache/lucene/store/BaseLockFactoryTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/store/BaseLockFactoryTestCase.java
index 01791b7..312b644 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/store/BaseLockFactoryTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/store/BaseLockFactoryTestCase.java
@@ -274,7 +274,7 @@ public abstract class BaseLockFactoryTestCase extends LuceneTestCase {
     }
   }
 
-  private class SearcherThread extends Thread { 
+  private static class SearcherThread extends Thread {
     private Directory dir;
     private int numIteration;
     public boolean hitException = false;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/tools/src/java/org/apache/lucene/dependencies/GetMavenDependenciesTask.java
----------------------------------------------------------------------
diff --git a/lucene/tools/src/java/org/apache/lucene/dependencies/GetMavenDependenciesTask.java b/lucene/tools/src/java/org/apache/lucene/dependencies/GetMavenDependenciesTask.java
index 5b2f0b8..2c20abd 100644
--- a/lucene/tools/src/java/org/apache/lucene/dependencies/GetMavenDependenciesTask.java
+++ b/lucene/tools/src/java/org/apache/lucene/dependencies/GetMavenDependenciesTask.java
@@ -786,7 +786,7 @@ public class GetMavenDependenciesTask extends Task {
   /**
    * Stores information about an external dependency
    */
-  private class ExternalDependency implements Comparable<ExternalDependency> {
+  private static class ExternalDependency implements Comparable<ExternalDependency> {
     String groupId;
     String artifactId;
     boolean isTestDependency;


[18/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/solrconfig.xml b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/solrconfig.xml
deleted file mode 100644
index 9d298d4..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/solrconfig.xml
+++ /dev/null
@@ -1,1446 +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>${tests.luceneMatchVersion:LATEST}</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.
-
-       The examples below can be used to load some solr-contribs along 
-       with their external dependencies.
-    -->
-  <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />
-
-  <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />
-
-  <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />
-
-  <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />
-
-  <!-- If a 'dir' option (with or without a regex) is used and nothing
-       is found that matches, a warning will be logged.
-    -->
-  <lib dir="/non/existent/dir/yields/warning" /> 
-
-  <!-- an exact 'path' can be used instead of a 'dir' to specify a 
-       specific jar file.  This will cause a serious error to be logged 
-       if it can't be loaded.
-    -->
-  <!--
-     <lib path="../a-jar-that-does-not-exist.jar" /> 
-  -->
-  
-  <!-- Data Directory
-
-       Used to specify an alternate directory to hold all index data
-       other than the default ./data under the Solr home.  If
-       replication is in use, this should match the replication
-       configuration.
-    -->
-  <dataDir>${solr.data.dir:}</dataDir>
-
-
-  <!-- The DirectoryFactory to use for indexes.
-       
-       solr.StandardDirectoryFactory is filesystem
-       based and tries to pick the best implementation for the current
-       JVM and platform.  solr.NRTCachingDirectoryFactory, the default,
-       wraps solr.StandardDirectoryFactory and caches small files in memory
-       for better NRT performance.
-
-       One can force a particular implementation via solr.MMapDirectoryFactory,
-       solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.
-
-       solr.RAMDirectoryFactory is memory based, not
-       persistent, and doesn't work with replication.
-    -->
-  <directoryFactory name="DirectoryFactory" class="org.apache.solr.core.HdfsDirectoryFactory">
-    <str name="solr.hdfs.home">${solr.hdfs.home:}</str>
-    <str name="solr.hdfs.confdir">${solr.hdfs.confdir:}</str>
-    <bool name="solr.hdfs.blockcache.enabled">${solr.hdfs.blockcache.enabled:true}</bool>
-    <int name="solr.hdfs.blockcache.slab.count">${solr.hdfs.blockcache.slab.count:1}</int>
-    <bool name="solr.hdfs.blockcache.direct.memory.allocation">${solr.hdfs.blockcache.direct.memory.allocation:true}</bool>
-    <int name="solr.hdfs.blockcache.blocksperbank">${solr.hdfs.blockcache.blocksperbank:16384}</int> 
-    <bool name="solr.hdfs.blockcache.read.enabled">${solr.hdfs.blockcache.read.enabled:true}</bool>
-    <bool name="solr.hdfs.nrtcachingdirectory.enable">${solr.hdfs.nrtcachingdirectory.enable:true}</bool>
-    <int name="solr.hdfs.nrtcachingdirectory.maxmergesizemb">${solr.hdfs.nrtcachingdirectory.maxmergesizemb:16}</int>
-    <int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">${solr.hdfs.nrtcachingdirectory.maxcachedmb:192}</int>
-    <str name="solr.hdfs.blockcache.global">${solr.hdfs.blockcache.global:false}</str>
-  </directoryFactory>
-
-  <schemaFactory class="ClassicIndexSchemaFactory"/>
-
-  <!-- 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>128</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:hdfs}</lockType>
-
-    <!-- If true, IndexReaders will be reopened (often more efficient)
-         instead of closed and then opened. Default: true
-      -->
-    <!-- 
-    <reopenReaders>true</reopenReaders>
-      -->
-
-    <!-- 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>${solr.autoCommit.maxTime:60000}</maxTime> 
-       <openSearcher>false</openSearcher> 
-     </autoCommit>
-
-    <!-- softAutoCommit is like autoCommit except it causes a
-         'soft' commit which only ensures that changes are visible
-         but does not ensure that data is synced to disk.  This is
-         faster and more near-realtime friendly than a hard commit.
-      -->   
-     <autoSoftCommit> 
-       <maxTime>${solr.autoSoftCommit.maxTime: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
-      -->
-    <!-- The RunExecutableListener executes an external command from a
-         hook such as postCommit or postOptimize.
-         
-         exe - the name of the executable to run
-         dir - dir to use as the current working directory. (default=".")
-         wait - the calling thread waits until the executable returns. 
-                (default="true")
-         args - the arguments to pass to the program.  (default is none)
-         env - environment variables to set.  (default is none)
-      -->
-    <!-- This example shows how RunExecutableListener could be used
-         with the script based replication...
-         http://wiki.apache.org/solr/CollectionDistribution
-      -->
-    <!--
-       <listener event="postCommit" class="solr.RunExecutableListener">
-         <str name="exe">solr/bin/snapshooter</str>
-         <str name="dir">.</str>
-         <bool name="wait">true</bool>
-         <arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
-         <arr name="env"> <str>MYVAR=val1</str> </arr>
-       </listener>
-      -->
-
-  </updateHandler>
-  
-  <!-- IndexReaderFactory
-
-       Use the following format to specify a custom IndexReaderFactory,
-       which allows for alternate IndexReader implementations.
-
-       ** Experimental Feature **
-
-       Please note - Using a custom IndexReaderFactory may prevent
-       certain other features from working. The API to
-       IndexReaderFactory may change without warning or may even be
-       removed from future releases if the problems cannot be
-       resolved.
-
-
-       ** Features that may not work with custom IndexReaderFactory **
-
-       The ReplicationHandler assumes a disk-resident index. Using a
-       custom IndexReader implementation may cause incompatibility
-       with ReplicationHandler and may cause replication to not work
-       correctly. See SOLR-1366 for details.
-
-    -->
-  <!--
-  <indexReaderFactory name="IndexReaderFactory" class="package.class">
-    <str name="someArg">Some Value</str>
-  </indexReaderFactory >
-  -->
-  <!-- By explicitly declaring the Factory, the termIndexDivisor can
-       be specified.
-    -->
-  <!--
-     <indexReaderFactory name="IndexReaderFactory" 
-                         class="solr.StandardIndexReaderFactory">
-       <int name="setTermIndexDivisor">12</int>
-     </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>1024</maxBooleanClauses>
-
-
-    <!-- Solr Internal Query Caches
-
-         There are two implementations of cache available for Solr,
-         LRUCache, based on a synchronized LinkedHashMap, and
-         FastLRUCache, based on a ConcurrentHashMap.  
-
-         FastLRUCache has faster gets and slower puts in single
-         threaded operation and thus is generally faster than LRUCache
-         when the hit ratio of the cache is high (> 75%), and may be
-         faster under other scenarios on multi-cpu systems.
-    -->
-
-    <!-- Filter Cache
-
-         Cache used by SolrIndexSearcher for filters (DocSets),
-         unordered sets of *all* documents that match a query.  When a
-         new searcher is opened, its caches may be prepopulated or
-         "autowarmed" using data from caches in the old searcher.
-         autowarmCount is the number of items to prepopulate.  For
-         LRUCache, the autowarmed items will be the most recently
-         accessed items.
-
-         Parameters:
-           class - the SolrCache implementation LRUCache or
-               (LRUCache or FastLRUCache)
-           size - the maximum number of entries in the cache
-           initialSize - the initial capacity (number of entries) of
-               the cache.  (see java.util.HashMap)
-           autowarmCount - the number of entries to prepopulate from
-               and old cache.  
-      -->
-    <filterCache class="solr.FastLRUCache"
-                 size="512"
-                 initialSize="512"
-                 autowarmCount="0"/>
-
-    <!-- Query Result Cache
-         
-         Caches results of searches - ordered lists of document ids
-         (DocList) based on a query, a sort, and the range of documents requested.  
-      -->
-    <queryResultCache class="solr.LRUCache"
-                     size="512"
-                     initialSize="512"
-                     autowarmCount="0"/>
-   
-    <!-- Document Cache
-
-         Caches Lucene Document objects (the stored fields for each
-         document).  Since Lucene internal document ids are transient,
-         this cache will not be autowarmed.  
-      -->
-    <documentCache class="solr.LRUCache"
-                   size="512"
-                   initialSize="512"
-                   autowarmCount="0"/>
-    
-    <!-- Field Value Cache
-         
-         Cache used to hold field values that are quickly accessible
-         by document id.  The fieldValueCache is created by default
-         even if not configured here.
-      -->
-    <!--
-       <fieldValueCache class="solr.FastLRUCache"
-                        size="512"
-                        autowarmCount="128"
-                        showItems="32" />
-      -->
-
-    <!-- Custom Cache
-
-         Example of a generic cache.  These caches may be accessed by
-         name through SolrIndexSearcher.getCache(),cacheLookup(), and
-         cacheInsert().  The purpose is to enable easy caching of
-         user/application level data.  The regenerator argument should
-         be specified as an implementation of solr.CacheRegenerator 
-         if autowarming is desired.  
-      -->
-    <!--
-       <cache name="myUserCache"
-              class="solr.LRUCache"
-              size="4096"
-              initialSize="1024"
-              autowarmCount="1024"
-              regenerator="com.mycompany.MyRegenerator"
-              />
-      -->
-
-
-    <!-- Lazy Field Loading
-
-         If true, stored fields that are not requested will be loaded
-         lazily.  This can result in a significant speed improvement
-         if the usual case is to not load all stored fields,
-         especially if the skipped fields are large compressed text
-         fields.
-    -->
-    <enableLazyFieldLoading>true</enableLazyFieldLoading>
-
-   <!-- Use Filter For Sorted Query
-
-        A possible optimization that attempts to use a filter to
-        satisfy a search.  If the requested sort does not include
-        score, then the filterCache will be checked for a filter
-        matching the query. If found, the filter will be used as the
-        source of document ids, and then the sort will be applied to
-        that.
-
-        For most situations, this will not be useful unless you
-        frequently get the same search repeatedly with different sort
-        options, and none of them ever use "score"
-     -->
-   <!--
-      <useFilterForSortedQuery>true</useFilterForSortedQuery>
-     -->
-
-   <!-- Result Window Size
-
-        An optimization for use with the queryResultCache.  When a search
-        is requested, a superset of the requested number of document ids
-        are collected.  For example, if a search for a particular query
-        requests matching documents 10 through 19, and queryWindowSize is 50,
-        then documents 0 through 49 will be collected and cached.  Any further
-        requests in that range can be satisfied via the cache.  
-     -->
-   <queryResultWindowSize>20</queryResultWindowSize>
-
-   <!-- Maximum number of documents to cache for any entry in the
-        queryResultCache. 
-     -->
-   <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
-
-   <!-- Query Related Event Listeners
-
-        Various IndexSearcher related events can trigger Listeners to
-        take actions.
-
-        newSearcher - fired whenever a new searcher is being prepared
-        and there is a current searcher handling requests (aka
-        registered).  It can be used to prime certain caches to
-        prevent long request times for certain requests.
-
-        firstSearcher - fired whenever a new searcher is being
-        prepared but there is no current registered searcher to handle
-        requests or to gain autowarming data from.
-
-        
-     -->
-    <!-- QuerySenderListener takes an array of NamedList and executes a
-         local query request for each NamedList in sequence. 
-      -->
-    <listener event="newSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <!--
-           <lst><str name="q">solr</str><str name="sort">price asc</str></lst>
-           <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
-          -->
-      </arr>
-    </listener>
-    <listener event="firstSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <lst>
-          <str name="q">static firstSearcher warming in solrconfig.xml</str>
-        </lst>
-      </arr>
-    </listener>
-
-    <!-- Use Cold Searcher
-
-         If a search request comes in and there is no current
-         registered searcher, then immediately register the still
-         warming searcher and use it.  If "false" then all requests
-         will block until the first searcher is done warming.
-      -->
-    <useColdSearcher>false</useColdSearcher>
-
-    <!-- Max Warming Searchers
-         
-         Maximum number of searchers that may be warming in the
-         background concurrently.  An error is returned if this limit
-         is exceeded.
-
-         Recommend values of 1-2 for read-only slaves, higher for
-         masters w/o cache warming.
-      -->
-    <maxWarmingSearchers>4</maxWarmingSearchers>
-
-  </query>
-
-
-  <!-- Request Dispatcher
-
-       This section contains instructions for how the SolrDispatchFilter
-       should behave when processing requests for this SolrCore.
-
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the 
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
-    -->
-  <requestDispatcher handleSelect="false" >
-    <!-- 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.
-         
-         *** WARNING ***
-         The settings below authorize Solr to fetch remote files, You
-         should make sure your system has some authentication before
-         using enableRemoteStreaming="true"
-
-      --> 
-    <requestParsers enableRemoteStreaming="true" 
-                    multipartUploadLimitInKB="2048000"
-                    formdataUploadLimitInKB="2048"/>
-
-    <!-- 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.
-
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-
-       If a Request Handler is declared with startup="lazy", then it will
-       not be initialized until the first request that uses it.
-
-    -->
-  <!-- SearchHandler
-
-       http://wiki.apache.org/solr/SearchHandler
-
-       For processing Search Queries, the primary Request Handler
-       provided with Solr is "SearchHandler" It delegates to a sequent
-       of SearchComponents (see below) and supports distributed
-       queries across multiple shards
-    -->
-  <requestHandler name="/select" class="solr.SearchHandler">
-    <!-- default values for query parameters can be specified, these
-         will be overridden by parameters in the request
-      -->
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <int name="rows">10</int>
-       <str name="df">text</str>
-     </lst>
-    <!-- In addition to defaults, "appends" params can be specified
-         to identify values which should be appended to the list of
-         multi-val params from the query (or the existing "defaults").
-      -->
-    <!-- In this example, the param "fq=instock:true" would be appended to
-         any query time fq params the user may specify, as a mechanism for
-         partitioning the index, independent of any user selected filtering
-         that may also be desired (perhaps as a result of faceted searching).
-
-         NOTE: there is *absolutely* nothing a client can do to prevent these
-         "appends" values from being used, so don't use this mechanism
-         unless you are sure you always want it.
-      -->
-    <!--
-       <lst name="appends">
-         <str name="fq">inStock:true</str>
-       </lst>
-      -->
-    <!-- "invariants" are a way of letting the Solr maintainer lock down
-         the options available to Solr clients.  Any params values
-         specified here are used regardless of what values may be specified
-         in either the query, the "defaults", or the "appends" params.
-
-         In this example, the facet.field and facet.query params would
-         be fixed, limiting the facets clients can use.  Faceting is
-         not turned on by default - but if the client does specify
-         facet=true in the request, these are the only facets they
-         will be able to see counts for; regardless of what other
-         facet.field or facet.query params they may specify.
-
-         NOTE: there is *absolutely* nothing a client can do to prevent these
-         "invariants" values from being used, so don't use this mechanism
-         unless you are sure you always want it.
-      -->
-    <!--
-       <lst name="invariants">
-         <str name="facet.field">cat</str>
-         <str name="facet.field">manu_exact</str>
-         <str name="facet.query">price:[* TO 500]</str>
-         <str name="facet.query">price:[500 TO *]</str>
-       </lst>
-      -->
-    <!-- If the default list of SearchComponents is not desired, that
-         list can either be overridden completely, or components can be
-         prepended or appended to the default list.  (see below)
-      -->
-    <!--
-       <arr name="components">
-         <str>nameOfCustomComponent1</str>
-         <str>nameOfCustomComponent2</str>
-       </arr>
-      -->
-    </requestHandler>
-
-  <!-- A request handler that returns indented JSON by default -->
-  <requestHandler name="/query" class="solr.SearchHandler">
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <str name="wt">json</str>
-       <str name="indent">true</str>
-       <str name="df">text</str>
-     </lst>
-  </requestHandler>
-
-  <!-- Search Components
-
-       Search components are registered to SolrCore and used by 
-       instances of SearchHandler (which can access them by name)
-       
-       By default, the following components are available:
-       
-       <searchComponent name="query"     class="solr.QueryComponent" />
-       <searchComponent name="facet"     class="solr.FacetComponent" />
-       <searchComponent name="mlt"       class="solr.MoreLikeThisComponent" />
-       <searchComponent name="highlight" class="solr.HighlightComponent" />
-       <searchComponent name="stats"     class="solr.StatsComponent" />
-       <searchComponent name="debug"     class="solr.DebugComponent" />
-   
-       Default configuration in a requestHandler would look like:
-
-       <arr name="components">
-         <str>query</str>
-         <str>facet</str>
-         <str>mlt</str>
-         <str>highlight</str>
-         <str>stats</str>
-         <str>debug</str>
-       </arr>
-
-       If you register a searchComponent to one of the standard names, 
-       that will be used instead of the default.
-
-       To insert components before or after the 'standard' components, use:
-    
-       <arr name="first-components">
-         <str>myFirstComponentName</str>
-       </arr>
-    
-       <arr name="last-components">
-         <str>myLastComponentName</str>
-       </arr>
-
-       NOTE: The component registered with the name "debug" will
-       always be executed after the "last-components" 
-       
-     -->
-  
-   <!-- Spell Check
-
-        The spell check component can return a list of alternative spelling
-        suggestions.  
-
-        http://wiki.apache.org/solr/SpellCheckComponent
-     -->
-  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
-
-    <str name="queryAnalyzerFieldType">text_general</str>
-
-    <!-- Multiple "Spell Checkers" can be declared and used by this
-         component
-      -->
-
-    <!-- a spellchecker built from a field of the main index -->
-    <lst name="spellchecker">
-      <str name="name">default</str>
-      <str name="field">text</str>
-      <str name="classname">solr.DirectSolrSpellChecker</str>
-      <!-- the spellcheck distance measure used, the default is the internal levenshtein -->
-      <str name="distanceMeasure">internal</str>
-      <!-- minimum accuracy needed to be considered a valid spellcheck suggestion -->
-      <float name="accuracy">0.5</float>
-      <!-- the maximum #edits we consider when enumerating terms: can be 1 or 2 -->
-      <int name="maxEdits">2</int>
-      <!-- the minimum shared prefix when enumerating terms -->
-      <int name="minPrefix">1</int>
-      <!-- maximum number of inspections per result. -->
-      <int name="maxInspections">5</int>
-      <!-- minimum length of a query term to be considered for correction -->
-      <int name="minQueryLength">4</int>
-      <!-- maximum threshold of documents a query term can appear to be considered for correction -->
-      <float name="maxQueryFrequency">0.01</float>
-      <!-- uncomment this to require suggestions to occur in 1% of the documents
-        <float name="thresholdTokenFrequency">.01</float>
-      -->
-    </lst>
-    
-    <!-- a spellchecker that can break or combine words.  See "/spell" handler below for usage -->
-    <lst name="spellchecker">
-      <str name="name">wordbreak</str>
-      <str name="classname">solr.WordBreakSolrSpellChecker</str>      
-      <str name="field">name</str>
-      <str name="combineWords">true</str>
-      <str name="breakWords">true</str>
-      <int name="maxChanges">10</int>
-    </lst>
-
-    <!-- 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">
-      <str name="df">text</str>
-      <!-- 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">
-      <str name="df">text</str>
-      <bool name="tv">true</bool>
-    </lst>
-    <arr name="last-components">
-      <str>tvComponent</str>
-    </arr>
-  </requestHandler>
-
-  <!-- Clustering Component
-
-       http://wiki.apache.org/solr/ClusteringComponent
-
-       You'll need to set the solr.clustering.enabled system property
-       when running solr to run with clustering enabled:
-
-            java -Dsolr.clustering.enabled=true -jar start.jar
-
-    -->
-  <searchComponent name="clustering"
-                   enable="${solr.clustering.enabled:false}"
-                   class="solr.clustering.ClusteringComponent" >
-    <!-- Declare an engine -->
-    <lst name="engine">
-      <!-- The name, only one can be named "default" -->
-      <str name="name">default</str>
-
-      <!-- Class name of Carrot2 clustering algorithm.
-
-           Currently available algorithms are:
-           
-           * org.carrot2.clustering.lingo.LingoClusteringAlgorithm
-           * org.carrot2.clustering.stc.STCClusteringAlgorithm
-           * org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm
-           
-           See http://project.carrot2.org/algorithms.html for the
-           algorithm's characteristics.
-        -->
-      <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>
-
-      <!-- Overriding values for Carrot2 default algorithm attributes.
-
-           For a description of all available attributes, see:
-           http://download.carrot2.org/stable/manual/#chapter.components.
-           Use attribute key as name attribute of str elements
-           below. These can be further overridden for individual
-           requests by specifying attribute key as request parameter
-           name and attribute value as parameter value.
-        -->
-      <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>
-
-      <!-- Location of Carrot2 lexical resources.
-
-           A directory from which to load Carrot2-specific stop words
-           and stop labels. Absolute or relative to Solr config directory.
-           If a specific resource (e.g. stopwords.en) is present in the
-           specified dir, it will completely override the corresponding
-           default one that ships with Carrot2.
-
-           For an overview of Carrot2 lexical resources, see:
-           http://download.carrot2.org/head/manual/#chapter.lexical-resources
-        -->
-      <str name="carrot.lexicalResourcesDir">clustering/carrot2</str>
-
-      <!-- The language to assume for the documents.
-
-           For a list of allowed values, see:
-           http://download.carrot2.org/stable/manual/#section.attribute.lingo.MultilingualClustering.defaultLanguage
-       -->
-      <str name="MultilingualClustering.defaultLanguage">ENGLISH</str>
-    </lst>
-    <lst name="engine">
-      <str name="name">stc</str>
-      <str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>
-    </lst>
-  </searchComponent>
-
-  <!-- A request handler for demonstrating the clustering 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="/clustering"
-                  startup="lazy"
-                  enable="${solr.clustering.enabled:false}"
-                  class="solr.SearchHandler">
-    <lst name="defaults">
-      <bool name="clustering">true</bool>
-      <str name="clustering.engine">default</str>
-      <bool name="clustering.results">true</bool>
-      <!-- The title field -->
-      <str name="carrot.title">name</str>
-      <str name="carrot.url">id</str>
-      <!-- The field to cluster on -->
-       <str name="carrot.snippet">features</str>
-       <!-- produce summaries -->
-       <bool name="carrot.produceSummary">true</bool>
-       <!-- the maximum number of labels per cluster -->
-       <!--<int name="carrot.numDescriptions">5</int>-->
-       <!-- produce sub clusters -->
-       <bool name="carrot.outputSubClusters">false</bool>
-       
-       <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
-       </str>
-       <str name="q.alt">*:*</str>
-       <str name="rows">10</str>
-       <str name="fl">*,score</str>
-    </lst>     
-    <arr name="last-components">
-      <str>clustering</str>
-    </arr>
-  </requestHandler>
-  
-  <!-- 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>
-      <str name="df">text</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
-
-    --> 
-  <!-- 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"/>
-  
-
-  <!-- XSLT response writer transforms the XML output by any xslt file found
-       in Solr's conf/xslt directory.  Changes to xslt files are checked for
-       every xsltCacheLifetimeSeconds.  
-    -->
-  <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
-    <int name="xsltCacheLifetimeSeconds">5</int>
-  </queryResponseWriter>
-
-  <!-- Query Parsers
-
-       https://cwiki.apache.org/confluence/display/solr/Query+Syntax+and+Parsing
-
-       Multiple QParserPlugins can be registered by name, and then
-       used in either the "defType" param for the QueryComponent (used
-       by SearchHandler) or in LocalParams
-    -->
-  <!-- example of registering a query parser -->
-  <!--
-     <queryParser name="myparser" class="com.mycompany.MyQParserPlugin"/>
-    -->
-
-  <!-- Function Parsers
-
-       http://wiki.apache.org/solr/FunctionQuery
-
-       Multiple ValueSourceParsers can be registered by name, and then
-       used as function names when using the "func" QParser.
-    -->
-  <!-- example of registering a custom function parser  -->
-  <!--
-     <valueSourceParser name="myfunc" 
-                        class="com.mycompany.MyValueSourceParser" />
-    -->
-    
-  
-  <!-- Document Transformers
-       http://wiki.apache.org/solr/DocTransformers
-    -->
-  <!--
-     Could be something like:
-     <transformer name="db" class="com.mycompany.LoadFromDatabaseTransformer" >
-       <int name="connection">jdbc://....</int>
-     </transformer>
-     
-     To add a constant value to all docs, use:
-     <transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
-       <int name="value">5</int>
-     </transformer>
-     
-     If you want the user to still be able to change it with _value:something_ use this:
-     <transformer name="mytrans3" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
-       <double name="defaultValue">5</double>
-     </transformer>
-
-      If you are using the QueryElevationComponent, you may wish to mark documents that get boosted.  The
-      EditorialMarkerFactory will do exactly that:
-     <transformer name="qecBooster" class="org.apache.solr.response.transform.EditorialMarkerFactory" />
-    -->
-    
-</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/stopwords.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/stopwords.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/stopwords.txt
deleted file mode 100644
index ae1e83e..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/synonyms.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/synonyms.txt
deleted file mode 100644
index 7f72128..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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 WordDelimiterFilter coming
-#after us won't split it into two words.
-
-# Synonym mappings can be used for spelling correction too
-pixima => pixma
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/solr.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/solr.xml b/solr/contrib/morphlines-core/src/test-files/solr/minimr/solr.xml
deleted file mode 100644
index 2fa9a8a..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/solr.xml
+++ /dev/null
@@ -1,46 +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.
--->
-
-<!--
- All (relative) paths are relative to the installation path
-  
-  persistent: Save changes made via the API to this file
-  sharedLib: path to a lib directory that will be shared across all cores
--->
-<solr>
-
-  <str name="shareSchema">${shareSchema:false}</str>
-
-  <solrcloud>
-    <str name="host">127.0.0.1</str>
-    <int name="hostPort">${hostPort:8983}</int>
-    <str name="hostContext">${hostContext:solr}</str>
-    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
-    <int name="leaderVoteWait">0</int>
-    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:120000}</int>
-    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:15000}</int>
-    <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
-  </solrcloud>
-
-  <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
-      <str name="urlScheme">${urlScheme:}</str>
-      <int name="socketTimeout">${socketTimeout:120000}</int>
-      <int name="connTimeout">${connTimeout:15000}</int>
-  </shardHandlerFactory>
-
-</solr>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/currency.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/currency.xml b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/currency.xml
deleted file mode 100644
index 3a9c58a..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/elevate.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/elevate.xml b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/elevate.xml
deleted file mode 100644
index 2c09ebe..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_ca.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_ca.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_ca.txt
deleted file mode 100644
index 307a85f..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_fr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_fr.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_fr.txt
deleted file mode 100644
index 722db58..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_fr.txt
+++ /dev/null
@@ -1,9 +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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_ga.txt
deleted file mode 100644
index 9ebe7fa..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_it.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_it.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/contractions_it.txt
deleted file mode 100644
index cac0409..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/hyphenations_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/hyphenations_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/hyphenations_ga.txt
deleted file mode 100644
index 4d2642c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stemdict_nl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stemdict_nl.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stemdict_nl.txt
deleted file mode 100644
index 4410729..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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


[64/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9993: Add support for ExpandComponent with PointFields

Posted by cp...@apache.org.
SOLR-9993: Add support for ExpandComponent with PointFields


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

Branch: refs/heads/jira/solr-6203
Commit: 9b7c8d5606cdd88725c2779389bfb20e1d01cb49
Parents: deddc9b
Author: Cao Manh Dat <da...@apache.org>
Authored: Wed Mar 29 13:52:51 2017 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Wed Mar 29 13:52:51 2017 +0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  2 +
 .../solr/handler/component/ExpandComponent.java | 75 +++++++++++++-------
 .../handler/component/TestExpandComponent.java  |  2 -
 3 files changed, 53 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9b7c8d56/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 4e63926..80c2aa0 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -128,6 +128,8 @@ New Features
 
 * SOLR-10349: Add totalTermFreq support to TermsComponent. (Shai Erera)
 
+* SOLR-9993: Add support for ExpandComponent with PointFields. (Cao Manh Dat)
+
 Optimizations
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9b7c8d56/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java b/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
index f6ecd8d..656ac71 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
@@ -73,7 +73,12 @@ import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.schema.DoublePointField;
 import org.apache.solr.schema.FieldType;
+import org.apache.solr.schema.FloatPointField;
+import org.apache.solr.schema.IntPointField;
+import org.apache.solr.schema.LongPointField;
+import org.apache.solr.schema.SchemaField;
 import org.apache.solr.schema.StrField;
 import org.apache.solr.schema.TrieDoubleField;
 import org.apache.solr.schema.TrieFloatField;
@@ -209,7 +214,8 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
     SolrIndexSearcher searcher = req.getSearcher();
     LeafReader reader = searcher.getSlowAtomicReader();
 
-    FieldType fieldType = searcher.getSchema().getField(field).getType();
+    SchemaField schemaField = searcher.getSchema().getField(field);
+    FieldType fieldType = schemaField.getType();
 
     SortedDocValues values = null;
     long nullValue = 0;
@@ -228,17 +234,18 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
       //Get the nullValue for the numeric collapse field
       String defaultValue = searcher.getSchema().getField(field).getDefaultValue();
       if(defaultValue != null) {
-        if(fieldType instanceof TrieIntField || fieldType instanceof TrieLongField) {
+        if(fieldType instanceof TrieIntField || fieldType instanceof TrieLongField ||
+            fieldType instanceof IntPointField || fieldType instanceof LongPointField) {
           nullValue = Long.parseLong(defaultValue);
-        } else if(fieldType instanceof TrieFloatField){
+        } else if(fieldType instanceof TrieFloatField || fieldType instanceof FloatPointField){
           nullValue = Float.floatToIntBits(Float.parseFloat(defaultValue));
-        } else if(fieldType instanceof TrieDoubleField){
+        } else if(fieldType instanceof TrieDoubleField || fieldType instanceof DoublePointField){
           nullValue = Double.doubleToLongBits(Double.parseDouble(defaultValue));
         }
       } else {
-        if(fieldType instanceof TrieFloatField){
+        if(fieldType instanceof TrieFloatField || fieldType instanceof FloatPointField){
           nullValue = Float.floatToIntBits(0.0f);
-        } else if(fieldType instanceof TrieDoubleField){
+        } else if(fieldType instanceof TrieDoubleField || fieldType instanceof DoublePointField){
           nullValue = Double.doubleToLongBits(0.0f);
         }
       }
@@ -369,7 +376,11 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
       }
 
       if(count > 0 && count < 200) {
-        groupQuery = getGroupQuery(field, fieldType, count, groupSet);
+        if (fieldType.isPointField()) {
+          groupQuery = getPointGroupQuery(schemaField, count, groupSet);
+        } else {
+          groupQuery = getGroupQuery(field, fieldType, count, groupSet);
+        }
       }
     }
 
@@ -442,13 +453,7 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
           String group = charsRef.toString();
           outMap.add(group, slice);
         } else {
-          if(fieldType instanceof TrieIntField || fieldType instanceof TrieLongField ) {
-            outMap.add(Long.toString(groupValue), slice);
-          } else if(fieldType instanceof TrieFloatField) {
-            outMap.add(Float.toString(Float.intBitsToFloat((int) groupValue)), slice);
-          } else if(fieldType instanceof TrieDoubleField) {
-            outMap.add(Double.toString(Double.longBitsToDouble(groupValue)), slice);
-          }
+          outMap.add(numericToString(fieldType, groupValue), slice);
         }
       }
     }
@@ -703,18 +708,10 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
     BytesRefBuilder term = new BytesRefBuilder();
     Iterator<LongCursor> it = groupSet.iterator();
     int index = -1;
-    String stringVal =  null;
+
     while (it.hasNext()) {
       LongCursor cursor = it.next();
-      if(ft instanceof TrieIntField || ft instanceof TrieLongField) {
-        stringVal = Long.toString(cursor.value);
-      } else {
-        if(ft instanceof TrieFloatField) {
-          stringVal = Float.toString(Float.intBitsToFloat((int)cursor.value));
-        } else {
-          stringVal = Double.toString(Double.longBitsToDouble(cursor.value));
-        }
-      }
+      String stringVal = numericToString(ft, cursor.value);
       ft.readableToIndexed(stringVal, term);
       bytesRefs[++index] = term.toBytesRef();
     }
@@ -722,6 +719,36 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
     return new SolrConstantScoreQuery(new QueryWrapperFilter(new TermInSetQuery(fname, bytesRefs)));
   }
 
+  private Query getPointGroupQuery(SchemaField sf,
+                                   int size,
+                                   LongHashSet groupSet) {
+
+    Iterator<LongCursor> it = groupSet.iterator();
+    List<String> values = new ArrayList<>(size);
+    FieldType ft = sf.getType();
+    while (it.hasNext()) {
+      LongCursor cursor = it.next();
+      values.add(numericToString(ft, cursor.value));
+    }
+
+    return new SolrConstantScoreQuery(new QueryWrapperFilter(sf.getType().getSetQuery(null, sf, values)));
+  }
+
+  private String numericToString(FieldType fieldType, long val) {
+    if (fieldType.getNumberType() != null) {
+      switch (fieldType.getNumberType()) {
+        case INTEGER:
+        case LONG:
+          return Long.toString(val);
+        case FLOAT:
+          return Float.toString(Float.intBitsToFloat((int)val));
+        case DOUBLE:
+          return Double.toString(Double.longBitsToDouble(val));
+      }
+    }
+    throw new IllegalArgumentException("FieldType must be INT,LONG,FLOAT,DOUBLE found " + fieldType);
+  }
+
   private Query getGroupQuery(String fname,
                               int size,
                               IntObjectHashMap<BytesRef> ordBytes) throws Exception {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9b7c8d56/solr/core/src/test/org/apache/solr/handler/component/TestExpandComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/component/TestExpandComponent.java b/solr/core/src/test/org/apache/solr/handler/component/TestExpandComponent.java
index 7baa5a9..d1906d5 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/TestExpandComponent.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/TestExpandComponent.java
@@ -21,14 +21,12 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.SolrTestCaseJ4.SuppressPointFields;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.search.CollapsingQParserPlugin;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-@SuppressPointFields
 public class TestExpandComponent extends SolrTestCaseJ4 {
 
   @BeforeClass


[35/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10304: Refactor new SolrDocumentFetcher out of SolrIndexSearcher

Posted by cp...@apache.org.
SOLR-10304: Refactor new SolrDocumentFetcher out of SolrIndexSearcher


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

Branch: refs/heads/jira/solr-6203
Commit: f1aef3d12be1300a93a57570e576d94c59ac969e
Parents: 8664f1f
Author: David Smiley <ds...@apache.org>
Authored: Fri Mar 24 23:01:32 2017 -0400
Committer: David Smiley <ds...@apache.org>
Committed: Fri Mar 24 23:01:32 2017 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt                                |   3 +
 .../handler/clustering/ClusteringComponent.java |  64 ++-
 .../clustering/solr/collection1/conf/schema.xml |  11 +-
 .../clustering/ClusteringComponentTest.java     |  68 ++-
 .../carrot2/CarrotClusteringEngineTest.java     |   3 +-
 .../handler/component/RealTimeGetComponent.java |  22 +-
 .../apache/solr/highlight/SolrHighlighter.java  |   2 +-
 .../org/apache/solr/response/DocsStreamer.java  |  76 ++-
 .../solr/response/TextResponseWriter.java       |   2 +-
 .../transform/ChildDocTransformerFactory.java   |   2 +-
 .../apache/solr/search/SolrDocumentFetcher.java | 571 ++++++++++++++++++
 .../apache/solr/search/SolrIndexSearcher.java   | 573 ++-----------------
 .../TopGroupsResultTransformer.java             |   6 +-
 .../org/apache/solr/util/SolrPluginUtils.java   |   7 +-
 .../org/apache/solr/search/LargeFieldTest.java  |   8 +-
 .../apache/solr/util/SolrPluginUtilsTest.java   |  87 +--
 16 files changed, 852 insertions(+), 653 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index f2937bf..dc3ae9d 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -140,6 +140,9 @@ Other Changes
 
 * SOLR-10249: Refactor IndexFetcher.doFetch() to return a more detailed result. (Jeff Miller via David Smiley)
 
+* SOLR-10304: Refactor Document handling out of SolrIndexSearcher into a new class "SolrDocumentFetcher".
+  Deprecated SolrPluginUtils.docListToSolrDocumentList(). (David Smiley)
+
 ==================  6.5.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/ClusteringComponent.java
----------------------------------------------------------------------
diff --git a/solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/ClusteringComponent.java b/solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/ClusteringComponent.java
index 6275c90..7c13e6b 100644
--- a/solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/ClusteringComponent.java
+++ b/solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/ClusteringComponent.java
@@ -26,6 +26,8 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.index.IndexableField;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrException;
@@ -39,8 +41,12 @@ import org.apache.solr.handler.clustering.carrot2.CarrotClusteringEngine;
 import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.handler.component.ShardRequest;
+import org.apache.solr.schema.IndexSchema;
+import org.apache.solr.schema.SchemaField;
+import org.apache.solr.search.DocIterator;
+import org.apache.solr.search.DocList;
 import org.apache.solr.search.DocListAndSet;
-import org.apache.solr.util.SolrPluginUtils;
+import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.util.plugin.SolrCoreAware;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -87,6 +93,60 @@ public class ClusteringComponent extends SearchComponent implements SolrCoreAwar
    */
   private NamedList<Object> initParams;
 
+  /**
+   * Convert a DocList to a SolrDocumentList
+   *
+   * The optional param "ids" is populated with the lucene document id
+   * for each SolrDocument.
+   *
+   * @param docs The {@link org.apache.solr.search.DocList} to convert
+   * @param searcher The {@link org.apache.solr.search.SolrIndexSearcher} to use to load the docs from the Lucene index
+   * @param fields The names of the Fields to load
+   * @param ids A map to store the ids of the docs
+   * @return The new {@link SolrDocumentList} containing all the loaded docs
+   * @throws IOException if there was a problem loading the docs
+   * @since solr 1.4
+   */
+  public static SolrDocumentList docListToSolrDocumentList(
+      DocList docs,
+      SolrIndexSearcher searcher,
+      Set<String> fields,
+      Map<SolrDocument, Integer> ids ) throws IOException
+  {
+    IndexSchema schema = searcher.getSchema();
+
+    SolrDocumentList list = new SolrDocumentList();
+    list.setNumFound(docs.matches());
+    list.setMaxScore(docs.maxScore());
+    list.setStart(docs.offset());
+
+    DocIterator dit = docs.iterator();
+
+    while (dit.hasNext()) {
+      int docid = dit.nextDoc();
+
+      Document luceneDoc = searcher.doc(docid, fields);
+      SolrDocument doc = new SolrDocument();
+
+      for( IndexableField field : luceneDoc) {
+        if (null == fields || fields.contains(field.name())) {
+          SchemaField sf = schema.getField( field.name() );
+          doc.addField( field.name(), sf.getType().toObject( field ) );
+        }
+      }
+      if (docs.hasScores() && (null == fields || fields.contains("score"))) {
+        doc.addField("score", dit.score());
+      }
+
+      list.add( doc );
+
+      if( ids != null ) {
+        ids.put( doc, new Integer(docid) );
+      }
+    }
+    return list;
+  }
+
   @Override
   @SuppressWarnings({"rawtypes", "unchecked"})
   public void init(NamedList args) {
@@ -172,7 +232,7 @@ public class ClusteringComponent extends SearchComponent implements SolrCoreAwar
         checkAvailable(name, engine);
         DocListAndSet results = rb.getResults();
         Map<SolrDocument,Integer> docIds = new HashMap<>(results.docList.size());
-        SolrDocumentList solrDocList = SolrPluginUtils.docListToSolrDocumentList(
+        SolrDocumentList solrDocList = docListToSolrDocumentList(
             results.docList, rb.req.getSearcher(), engine.getFieldsToLoad(rb.req), docIds);
         Object clusters = engine.cluster(rb.getQuery(), solrDocList, docIds, rb.req);
         rb.rsp.add("clusters", clusters);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml b/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
index af59a20..0c06a48 100644
--- a/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
+++ b/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
@@ -277,7 +277,7 @@
   -->
 
   <field name="id" type="string" indexed="true" stored="true" required="true"/>
-  <field name="url" type="string" indexed="true" stored="true" required="true"/>
+  <field name="url" type="string" indexed="true" stored="true" required="false"/>
   <field name="lang" type="string" indexed="true" stored="true" required="false" multiValued="true"/>
 
   <field name="title" type="text" indexed="true" stored="true" multiValued="true"/>
@@ -305,6 +305,10 @@
 
   <dynamicField name="random*" type="random"/>
 
+  <dynamicField name="*_dynamic" type="string" indexed="true" stored="true"/>
+  <dynamicField name="dynamic_*" type="string" indexed="true" stored="true"/>
+
+
   <!-- uncomment the following to ignore any fields that don't already match an existing 
        field name or dynamic field, rather than reporting them as an error. 
        alternately, change the type="ignored" to some other type e.g. "text" if you want 
@@ -331,4 +335,9 @@
   <copyField source="body" dest="text"/>
   <copyField source="snippet" dest="text"/>
 
+  <!-- dynamic destination -->
+  <copyField source="*_dynamic" dest="dynamic_*"/>
+
+  <copyField source="id" dest="range_facet_l"/>
+
 </schema>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java b/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java
index e8cf830..bff9f37 100644
--- a/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java
+++ b/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/ClusteringComponentTest.java
@@ -15,6 +15,13 @@
  * limitations under the License.
  */
 package org.apache.solr.handler.clustering;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.solr.common.SolrDocument;
+import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.NamedList;
@@ -24,8 +31,14 @@ import org.apache.solr.handler.component.QueryComponent;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.request.SolrRequestHandler;
+import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.search.DocList;
+import org.apache.solr.search.QueryCommand;
+import org.apache.solr.search.QueryResult;
+import org.apache.solr.search.SolrIndexSearcher;
+import org.apache.solr.util.RefCounted;
+import org.junit.Before;
 import org.junit.Test;
 
 /**
@@ -34,6 +47,11 @@ import org.junit.Test;
  **/
 public class ClusteringComponentTest extends AbstractClusteringTestCase {
 
+  @Before
+  public void doBefore() {
+    clearIndex();
+  }
+
   @Test
   public void testComponent() throws Exception {
     SolrCore core = h.getCore();
@@ -79,4 +97,52 @@ public class ClusteringComponentTest extends AbstractClusteringTestCase {
     req.close();
   }
 
+
+  // tests ClusteringComponent.docListToSolrDocumentList
+  @Test
+  public void testDocListConversion() throws Exception {
+    assertU("", adoc("id", "3234", "url", "ignoreme", "val_i", "1",
+        "val_dynamic", "quick red fox"));
+    assertU("", adoc("id", "3235", "url", "ignoreme", "val_i", "1",
+        "val_dynamic", "quick green fox"));
+    assertU("", adoc("id", "3236", "url", "ignoreme", "val_i", "1",
+        "val_dynamic", "quick brown fox"));
+    assertU("", commit());
+
+    RefCounted<SolrIndexSearcher> holder = h.getCore().getSearcher();
+    try {
+      SolrIndexSearcher srchr = holder.get();
+      QueryResult qr = new QueryResult();
+      QueryCommand cmd = new QueryCommand();
+      cmd.setQuery(new MatchAllDocsQuery());
+      cmd.setLen(10);
+      qr = srchr.search(qr, cmd);
+
+      DocList docs = qr.getDocList();
+      assertEquals("wrong docs size", 3, docs.size());
+      Set<String> fields = new HashSet<>();
+      fields.add("val_dynamic");
+      fields.add("dynamic_val");
+      fields.add("range_facet_l"); // copied from id
+
+      SolrDocumentList list = ClusteringComponent.docListToSolrDocumentList(docs, srchr, fields, null);
+      assertEquals("wrong list Size", docs.size(), list.size());
+      for (SolrDocument document : list) {
+
+        assertTrue("unexpected field", ! document.containsKey("val_i"));
+        assertTrue("unexpected id field", ! document.containsKey("id"));
+
+        assertTrue("original field", document.containsKey("val_dynamic"));
+        assertTrue("dyn copy field", document.containsKey("dynamic_val"));
+        assertTrue("copy field", document.containsKey("range_facet_l"));
+
+        assertNotNull("original field null", document.get("val_dynamic"));
+        assertNotNull("dyn copy field null", document.get("dynamic_val"));
+        assertNotNull("copy field null", document.get("range_facet_l"));
+      }
+    } finally {
+      if (null != holder) holder.decref();
+    }
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngineTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngineTest.java b/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngineTest.java
index 3d6f3d3..6a5b8a0 100644
--- a/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngineTest.java
+++ b/solr/contrib/clustering/src/test/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngineTest.java
@@ -42,7 +42,6 @@ import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.search.DocList;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.util.RefCounted;
-import org.apache.solr.util.SolrPluginUtils;
 import org.carrot2.clustering.lingo.LingoClusteringAlgorithm;
 import org.carrot2.core.LanguageCode;
 import org.carrot2.util.attribute.AttributeUtils;
@@ -465,7 +464,7 @@ public class CarrotClusteringEngineTest extends AbstractClusteringTestCase {
       // Perform clustering
       LocalSolrQueryRequest req = new LocalSolrQueryRequest(h.getCore(), solrParams);
       Map<SolrDocument,Integer> docIds = new HashMap<>(docList.size());
-      SolrDocumentList solrDocList = SolrPluginUtils.docListToSolrDocumentList( docList, searcher, engine.getFieldsToLoad(req), docIds );
+      SolrDocumentList solrDocList = ClusteringComponent.docListToSolrDocumentList( docList, searcher, engine.getFieldsToLoad(req), docIds );
 
       @SuppressWarnings("unchecked")
       List<NamedList<Object>> results = (List<NamedList<Object>>) engine.cluster(query, solrDocList, docIds, req);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
index 421e74f..882decb 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
@@ -69,6 +69,7 @@ import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.DocList;
+import org.apache.solr.search.SolrDocumentFetcher;
 import org.apache.solr.search.QParser;
 import org.apache.solr.search.ReturnFields;
 import org.apache.solr.search.SolrIndexSearcher;
@@ -290,7 +291,8 @@ public class RealTimeGetComponent extends SearchComponent
        
        Document luceneDocument = searcherInfo.getSearcher().doc(docid, rsp.getReturnFields().getLuceneFieldNames());
        SolrDocument doc = toSolrDoc(luceneDocument,  core.getLatestSchema());
-       searcherInfo.getSearcher().decorateDocValueFields(doc, docid, searcherInfo.getSearcher().getNonStoredDVs(true));
+       SolrDocumentFetcher docFetcher = searcherInfo.getSearcher().getDocFetcher();
+       docFetcher.decorateDocValueFields(doc, docid, docFetcher.getNonStoredDVs(true));
        if ( null != transformer) {
          if (null == resultContext) {
            // either first pass, or we've re-opened searcher - either way now we setContext
@@ -423,7 +425,8 @@ public class RealTimeGetComponent extends SearchComponent
       }
       Document luceneDocument = searcher.doc(docid, returnFields.getLuceneFieldNames());
       SolrDocument doc = toSolrDoc(luceneDocument, core.getLatestSchema());
-      searcher.decorateDocValueFields(doc, docid, searcher.getNonStoredDVs(false));
+      SolrDocumentFetcher docFetcher = searcher.getDocFetcher();
+      docFetcher.decorateDocValueFields(doc, docid, docFetcher.getNonStoredDVs(false));
 
       return doc;
     } finally {
@@ -471,10 +474,10 @@ public class RealTimeGetComponent extends SearchComponent
       }
 
       SolrDocument doc;
-      Set<String> decorateFields = onlyTheseFields == null ? searcher.getNonStoredDVs(false): onlyTheseFields; 
+      Set<String> decorateFields = onlyTheseFields == null ? searcher.getDocFetcher().getNonStoredDVs(false): onlyTheseFields;
       Document luceneDocument = searcher.doc(docid, returnFields.getLuceneFieldNames());
       doc = toSolrDoc(luceneDocument, core.getLatestSchema());
-      searcher.decorateDocValueFields(doc, docid, decorateFields);
+      searcher.getDocFetcher().decorateDocValueFields(doc, docid, decorateFields);
 
       long docVersion = (long) doc.getFirstValue(VERSION_FIELD);
       Object partialVersionObj = partialDoc.getFieldValue(VERSION_FIELD);
@@ -483,7 +486,7 @@ public class RealTimeGetComponent extends SearchComponent
       if (docVersion > partialDocVersion) {
         return doc;
       }
-      for (String fieldName: (Iterable<String>) partialDoc.getFieldNames()) {
+      for (String fieldName: partialDoc.getFieldNames()) {
         doc.setField(fieldName.toString(), partialDoc.getFieldValue(fieldName));  // since partial doc will only contain single valued fields, this is fine
       }
 
@@ -604,17 +607,18 @@ public class RealTimeGetComponent extends SearchComponent
 
         int docid = searcher.getFirstMatch(new Term(idField.getName(), idBytes));
         if (docid < 0) return null;
-        
+
+        SolrDocumentFetcher docFetcher = searcher.getDocFetcher();
         if (avoidRetrievingStoredFields) {
           sid = new SolrInputDocument();
         } else {
-          Document luceneDocument = searcher.doc(docid);
+          Document luceneDocument = docFetcher.doc(docid);
           sid = toSolrInputDocument(luceneDocument, core.getLatestSchema());
         }
         if (onlyTheseNonStoredDVs != null) {
-          searcher.decorateDocValueFields(sid, docid, onlyTheseNonStoredDVs);
+          docFetcher.decorateDocValueFields(sid, docid, onlyTheseNonStoredDVs);
         } else {
-          searcher.decorateDocValueFields(sid, docid, searcher.getNonStoredDVsWithoutCopyTargets());
+          docFetcher.decorateDocValueFields(sid, docid, docFetcher.getNonStoredDVsWithoutCopyTargets());
         }
       }
     } finally {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/java/org/apache/solr/highlight/SolrHighlighter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/SolrHighlighter.java b/solr/core/src/java/org/apache/solr/highlight/SolrHighlighter.java
index a8ee734..e526c57 100644
--- a/solr/core/src/java/org/apache/solr/highlight/SolrHighlighter.java
+++ b/solr/core/src/java/org/apache/solr/highlight/SolrHighlighter.java
@@ -69,7 +69,7 @@ public abstract class SolrHighlighter
       if (fields[0].contains("*")) {
         // create a Java regular expression from the wildcard string
         String fieldRegex = fields[0].replaceAll("\\*", ".*");
-        Collection<String> storedHighlightFieldNames = request.getSearcher().getStoredHighlightFieldNames();
+        Collection<String> storedHighlightFieldNames = request.getSearcher().getDocFetcher().getStoredHighlightFieldNames();
         List<String> storedFieldsToHighlight = new ArrayList<>();
         for (String storedFieldName: storedHighlightFieldNames) {
           if (storedFieldName.matches(fieldRegex)) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/DocsStreamer.java b/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
index bdea9ec..40e0afc 100644
--- a/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
+++ b/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
@@ -49,6 +49,8 @@ import org.apache.solr.schema.TrieIntField;
 import org.apache.solr.schema.TrieLongField;
 import org.apache.solr.search.DocIterator;
 import org.apache.solr.search.DocList;
+import org.apache.solr.search.ReturnFields;
+import org.apache.solr.search.SolrDocumentFetcher;
 import org.apache.solr.search.SolrReturnFields;
 
 /**
@@ -57,15 +59,17 @@ import org.apache.solr.search.SolrReturnFields;
 public class DocsStreamer implements Iterator<SolrDocument> {
   public static final Set<Class> KNOWN_TYPES = new HashSet<>();
 
-  private org.apache.solr.response.ResultContext rctx;
+  private final org.apache.solr.response.ResultContext rctx;
+  private final SolrDocumentFetcher docFetcher; // a collaborator of SolrIndexSearcher
   private final DocList docs;
 
-  private DocTransformer transformer;
-  private DocIterator docIterator;
+  private final DocTransformer transformer;
+  private final DocIterator docIterator;
+
+  private final Set<String> fnames; // returnFields.getLuceneFieldNames(). Maybe null. Not empty.
+  private final boolean onlyPseudoFields;
+  private final Set<String> dvFieldsToReturn; // maybe null. Not empty.
 
-  private boolean onlyPseudoFields;
-  private Set<String> fnames;
-  private Set<String> dvFieldsToReturn;
   private int idx = -1;
 
   public DocsStreamer(ResultContext rctx) {
@@ -74,47 +78,62 @@ public class DocsStreamer implements Iterator<SolrDocument> {
     transformer = rctx.getReturnFields().getTransformer();
     docIterator = this.docs.iterator();
     fnames = rctx.getReturnFields().getLuceneFieldNames();
+    //TODO move onlyPseudoFields calc to ReturnFields
     onlyPseudoFields = (fnames == null && !rctx.getReturnFields().wantsAllFields() && !rctx.getReturnFields().hasPatternMatching())
         || (fnames != null && fnames.size() == 1 && SolrReturnFields.SCORE.equals(fnames.iterator().next()));
 
     // add non-stored DV fields that may have been requested
-    if (rctx.getReturnFields().wantsAllFields()) {
+    docFetcher = rctx.getSearcher().getDocFetcher();
+    dvFieldsToReturn = calcDocValueFieldsForReturn(docFetcher, rctx.getReturnFields());
+
+    if (transformer != null) transformer.setContext(rctx);
+  }
+
+  // TODO move to ReturnFields ?  Or SolrDocumentFetcher ?
+  public static Set<String> calcDocValueFieldsForReturn(SolrDocumentFetcher docFetcher, ReturnFields returnFields) {
+    Set<String> result = null;
+    if (returnFields.wantsAllFields()) {
       // check whether there are no additional fields
-      Set<String> fieldNames = rctx.getReturnFields().getLuceneFieldNames(true);
+      Set<String> fieldNames = returnFields.getLuceneFieldNames(true);
       if (fieldNames == null) {
-        dvFieldsToReturn = rctx.getSearcher().getNonStoredDVs(true);
+        result = docFetcher.getNonStoredDVs(true);
       } else {
-        dvFieldsToReturn = new HashSet<>(rctx.getSearcher().getNonStoredDVs(true)); // copy
+        result = new HashSet<>(docFetcher.getNonStoredDVs(true)); // copy
         // add all requested fields that may be useDocValuesAsStored=false
         for (String fl : fieldNames) {
-          if (rctx.getSearcher().getNonStoredDVs(false).contains(fl)) {
-            dvFieldsToReturn.add(fl);
+          if (docFetcher.getNonStoredDVs(false).contains(fl)) {
+            result.add(fl);
           }
         }
       }
     } else {
-      if (rctx.getReturnFields().hasPatternMatching()) {
-        for (String s : rctx.getSearcher().getNonStoredDVs(true)) {
-          if (rctx.getReturnFields().wantsField(s)) {
-            if (null == dvFieldsToReturn) {
-              dvFieldsToReturn = new HashSet<>();
+      if (returnFields.hasPatternMatching()) {
+        for (String s : docFetcher.getNonStoredDVs(true)) {
+          if (returnFields.wantsField(s)) {
+            if (null == result) {
+              result = new HashSet<>();
             }
-            dvFieldsToReturn.add(s);
+            result.add(s);
           }
         }
-      } else if (fnames != null) {
-        dvFieldsToReturn = new HashSet<>(fnames); // copy
+      } else {
+        Set<String> fnames = returnFields.getLuceneFieldNames();
+        if (fnames == null) {
+          return null;
+        }
+        result = new HashSet<>(fnames); // copy
         // here we get all non-stored dv fields because even if a user has set
         // useDocValuesAsStored=false in schema, he may have requested a field
         // explicitly using the fl parameter
-        dvFieldsToReturn.retainAll(rctx.getSearcher().getNonStoredDVs(false));
+        result.retainAll(docFetcher.getNonStoredDVs(false));
       }
     }
-
-    if (transformer != null) transformer.setContext(rctx);
+    if (result != null && result.isEmpty()) {
+      return null;
+    }
+    return result;
   }
 
-
   public int currentIndex() {
     return idx;
   }
@@ -133,12 +152,12 @@ public class DocsStreamer implements Iterator<SolrDocument> {
       sdoc = new SolrDocument();
     } else {
       try {
-        Document doc = rctx.getSearcher().doc(id, fnames);
-        sdoc = getDoc(doc, rctx.getSearcher().getSchema()); // make sure to use the schema from the searcher and not the request (cross-core)
+        Document doc = docFetcher.doc(id, fnames);
+        sdoc = convertLuceneDocToSolrDoc(doc, rctx.getSearcher().getSchema()); // make sure to use the schema from the searcher and not the request (cross-core)
 
         // decorate the document with non-stored docValues fields
         if (dvFieldsToReturn != null) {
-          rctx.getSearcher().decorateDocValueFields(sdoc, id, dvFieldsToReturn);
+          docFetcher.decorateDocValueFields(sdoc, id, dvFieldsToReturn);
         }
       } catch (IOException e) {
         throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Error reading document with docId " + id, e);
@@ -157,7 +176,8 @@ public class DocsStreamer implements Iterator<SolrDocument> {
 
   }
 
-  public static SolrDocument getDoc(Document doc, final IndexSchema schema) {
+  // TODO move to SolrDocumentFetcher ?  Refactor to also call docFetcher.decorateDocValueFields(...) ?
+  public static SolrDocument convertLuceneDocToSolrDoc(Document doc, final IndexSchema schema) {
     SolrDocument out = new SolrDocument();
     for (IndexableField f : doc.getFields()) {
       // Make sure multivalued fields are represented as lists

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java b/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java
index c4c2994..8bef94a 100644
--- a/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java
@@ -147,7 +147,7 @@ public abstract class TextResponseWriter implements PushWriter {
     } else if (val instanceof Date) {
       writeDate(name, (Date) val);
     } else if (val instanceof Document) {
-      SolrDocument doc = DocsStreamer.getDoc((Document) val, schema);
+      SolrDocument doc = DocsStreamer.convertLuceneDocToSolrDoc((Document) val, schema);
       writeSolrDocument(name, doc, returnFields, 0);
     } else if (val instanceof SolrDocument) {
       writeSolrDocument(name, (SolrDocument) val, returnFields, 0);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java b/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
index e829e03..45b0efc 100644
--- a/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
+++ b/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
@@ -139,7 +139,7 @@ class ChildDocTransformer extends DocTransformer {
         while(i.hasNext()) {
           Integer childDocNum = i.next();
           Document childDoc = context.getSearcher().doc(childDocNum);
-          SolrDocument solrChildDoc = DocsStreamer.getDoc(childDoc, schema);
+          SolrDocument solrChildDoc = DocsStreamer.convertLuceneDocToSolrDoc(childDoc, schema);
 
           // TODO: future enhancement...
           // support an fl local param in the transformer, which is used to build

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java b/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
new file mode 100644
index 0000000..267d4eb
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
@@ -0,0 +1,571 @@
+/*
+ * 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.search;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.lang.invoke.MethodHandles;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.DocumentStoredFieldVisitor;
+import org.apache.lucene.document.LazyDocument;
+import org.apache.lucene.index.BinaryDocValues;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.DocValuesType;
+import org.apache.lucene.index.FieldInfo;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexableField;
+import org.apache.lucene.index.IndexableFieldType;
+import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.LeafReaderContext;
+import org.apache.lucene.index.NumericDocValues;
+import org.apache.lucene.index.ReaderUtil;
+import org.apache.lucene.index.SortedDocValues;
+import org.apache.lucene.index.SortedNumericDocValues;
+import org.apache.lucene.index.SortedSetDocValues;
+import org.apache.lucene.index.StoredFieldVisitor;
+import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.NumericUtils;
+import org.apache.solr.common.SolrDocumentBase;
+import org.apache.solr.core.SolrConfig;
+import org.apache.solr.schema.BoolField;
+import org.apache.solr.schema.EnumField;
+import org.apache.solr.schema.NumberType;
+import org.apache.solr.schema.SchemaField;
+import org.apache.solr.schema.TrieDateField;
+import org.apache.solr.schema.TrieDoubleField;
+import org.apache.solr.schema.TrieFloatField;
+import org.apache.solr.schema.TrieIntField;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A helper class of {@link org.apache.solr.search.SolrIndexSearcher} for stored Document related matters
+ * including DocValue substitutions.
+ */
+public class SolrDocumentFetcher {
+
+  private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  private final SolrIndexSearcher searcher;
+
+  private final boolean enableLazyFieldLoading;
+
+  private final SolrCache<Integer,Document> documentCache;
+
+  /** Contains the names/patterns of all docValues=true,stored=false fields in the schema. */
+  private final Set<String> allNonStoredDVs;
+
+  /** Contains the names/patterns of all docValues=true,stored=false,useDocValuesAsStored=true fields in the schema. */
+  private final Set<String> nonStoredDVsUsedAsStored;
+
+  /** Contains the names/patterns of all docValues=true,stored=false fields, excluding those that are copyField targets in the schema. */
+  private final Set<String> nonStoredDVsWithoutCopyTargets;
+
+  private static int largeValueLengthCacheThreshold = Integer.getInteger("solr.largeField.cacheThreshold", 512 * 1024); // internal setting
+
+  private final Set<String> largeFields;
+
+  private Collection<String> storedHighlightFieldNames; // lazy populated; use getter
+
+  SolrDocumentFetcher(SolrIndexSearcher searcher, SolrConfig solrConfig, boolean cachingEnabled) {
+    this.searcher = searcher;
+    this.enableLazyFieldLoading = solrConfig.enableLazyFieldLoading;
+    if (cachingEnabled) {
+      documentCache = solrConfig.documentCacheConfig == null ? null : solrConfig.documentCacheConfig.newInstance();
+    } else {
+      documentCache = null;
+    }
+
+    final Set<String> nonStoredDVsUsedAsStored = new HashSet<>();
+    final Set<String> allNonStoredDVs = new HashSet<>();
+    final Set<String> nonStoredDVsWithoutCopyTargets = new HashSet<>();
+    final Set<String> storedLargeFields = new HashSet<>();
+
+    for (FieldInfo fieldInfo : searcher.getFieldInfos()) { // can find materialized dynamic fields, unlike using the Solr IndexSchema.
+      final SchemaField schemaField = searcher.getSchema().getFieldOrNull(fieldInfo.name);
+      if (schemaField == null) {
+        continue;
+      }
+      if (!schemaField.stored() && schemaField.hasDocValues()) {
+        if (schemaField.useDocValuesAsStored()) {
+          nonStoredDVsUsedAsStored.add(fieldInfo.name);
+        }
+        allNonStoredDVs.add(fieldInfo.name);
+        if (!searcher.getSchema().isCopyFieldTarget(schemaField)) {
+          nonStoredDVsWithoutCopyTargets.add(fieldInfo.name);
+        }
+      }
+      if (schemaField.stored() && schemaField.isLarge()) {
+        storedLargeFields.add(schemaField.getName());
+      }
+    }
+
+    this.nonStoredDVsUsedAsStored = Collections.unmodifiableSet(nonStoredDVsUsedAsStored);
+    this.allNonStoredDVs = Collections.unmodifiableSet(allNonStoredDVs);
+    this.nonStoredDVsWithoutCopyTargets = Collections.unmodifiableSet(nonStoredDVsWithoutCopyTargets);
+    this.largeFields = Collections.unmodifiableSet(storedLargeFields);
+  }
+
+  public boolean isLazyFieldLoadingEnabled() {
+    return enableLazyFieldLoading;
+  }
+
+  public SolrCache<Integer, Document> getDocumentCache() {
+    return documentCache;
+  }
+
+  /**
+   * Returns a collection of the names of all stored fields which can be highlighted the index reader knows about.
+   */
+  public Collection<String> getStoredHighlightFieldNames() {
+    synchronized (this) {
+      if (storedHighlightFieldNames == null) {
+        storedHighlightFieldNames = new LinkedList<>();
+        for (FieldInfo fieldInfo : searcher.getFieldInfos()) {
+          final String fieldName = fieldInfo.name;
+          try {
+            SchemaField field = searcher.getSchema().getField(fieldName);
+            if (field.stored() && ((field.getType() instanceof org.apache.solr.schema.TextField)
+                || (field.getType() instanceof org.apache.solr.schema.StrField))) {
+              storedHighlightFieldNames.add(fieldName);
+            }
+          } catch (RuntimeException e) { // getField() throws a SolrException, but it arrives as a RuntimeException
+            log.warn("Field [{}] found in index, but not defined in schema.", fieldName);
+          }
+        }
+      }
+      return storedHighlightFieldNames;
+    }
+  }
+
+  /** @see SolrIndexSearcher#doc(int) */
+  public Document doc(int docId) throws IOException {
+    return doc(docId, (Set<String>) null);
+  }
+
+  /**
+   * Retrieve the {@link Document} instance corresponding to the document id.
+   * <p>
+   * <b>NOTE</b>: the document will have all fields accessible, but if a field filter is provided, only the provided
+   * fields will be loaded (the remainder will be available lazily).
+   *
+   * @see SolrIndexSearcher#doc(int, Set)
+   */
+  public Document doc(int i, Set<String> fields) throws IOException {
+    Document d;
+    if (documentCache != null) {
+      d = documentCache.get(i);
+      if (d != null) return d;
+    }
+
+    final DirectoryReader reader = searcher.getIndexReader();
+    if (documentCache != null && !enableLazyFieldLoading) {
+      // we do not filter the fields in this case because that would return an incomplete document which would
+      // be eventually cached. The alternative would be to read the stored fields twice; once with the fields
+      // and then without for caching leading to a performance hit
+      // see SOLR-8858 for related discussion
+      fields = null;
+    }
+    final SolrDocumentStoredFieldVisitor visitor = new SolrDocumentStoredFieldVisitor(fields, reader, i);
+    reader.document(i, visitor);
+    d = visitor.getDocument();
+
+    if (documentCache != null) {
+      documentCache.put(i, d);
+    }
+
+    return d;
+  }
+
+  /** {@link StoredFieldVisitor} which loads the specified fields eagerly (or all if null).
+   * If {@link #enableLazyFieldLoading} then the rest get special lazy field entries.  Designated "large"
+   * fields will always get a special field entry. */
+  private class SolrDocumentStoredFieldVisitor extends DocumentStoredFieldVisitor {
+    private final Document doc;
+    private final LazyDocument lazyFieldProducer; // arguably a better name than LazyDocument; at least how we use it here
+    private final int docId;
+    private final boolean addLargeFieldsLazily;
+
+    SolrDocumentStoredFieldVisitor(Set<String> toLoad, IndexReader reader, int docId) {
+      super(toLoad);
+      this.docId = docId;
+      this.doc = getDocument();
+      this.lazyFieldProducer = toLoad != null && enableLazyFieldLoading ? new LazyDocument(reader, docId) : null;
+      this.addLargeFieldsLazily = (documentCache != null && !largeFields.isEmpty());
+      //TODO can we return Status.STOP after a val is loaded and we know there are no other fields of interest?
+      //    When: toLoad is one single-valued field, no lazyFieldProducer
+    }
+
+    @Override
+    public Status needsField(FieldInfo fieldInfo) throws IOException {
+      Status status = super.needsField(fieldInfo);
+      assert status != Status.STOP : "Status.STOP not supported or expected";
+      if (addLargeFieldsLazily && largeFields.contains(fieldInfo.name)) { // load "large" fields using this lazy mechanism
+        if (lazyFieldProducer != null || status == Status.YES) {
+          doc.add(new LargeLazyField(fieldInfo.name, docId));
+        }
+        return Status.NO;
+      }
+      if (status == Status.NO && lazyFieldProducer != null) { // lazy
+        doc.add(lazyFieldProducer.getField(fieldInfo));
+      }
+      return status;
+    }
+  }
+
+  /** @see SolrIndexSearcher#doc(int, StoredFieldVisitor) */
+  public void doc(int docId, StoredFieldVisitor visitor) throws IOException {
+    if (documentCache != null) {
+      Document cached = documentCache.get(docId);
+      if (cached != null) {
+        visitFromCached(cached, visitor);
+        return;
+      }
+    }
+    searcher.getIndexReader().document(docId, visitor);
+  }
+
+  /** Executes a stored field visitor against a hit from the document cache */
+  private void visitFromCached(Document document, StoredFieldVisitor visitor) throws IOException {
+    for (IndexableField f : document) {
+      final FieldInfo info = searcher.getFieldInfos().fieldInfo(f.name());
+      final StoredFieldVisitor.Status needsField = visitor.needsField(info);
+      if (needsField == StoredFieldVisitor.Status.STOP) return;
+      if (needsField == StoredFieldVisitor.Status.NO) continue;
+      BytesRef binaryValue = f.binaryValue();
+      if (binaryValue != null) {
+        visitor.binaryField(info, toByteArrayUnwrapIfPossible(binaryValue));
+        continue;
+      }
+      Number numericValue = f.numericValue();
+      if (numericValue != null) {
+        if (numericValue instanceof Double) {
+          visitor.doubleField(info, numericValue.doubleValue());
+        } else if (numericValue instanceof Integer) {
+          visitor.intField(info, numericValue.intValue());
+        } else if (numericValue instanceof Float) {
+          visitor.floatField(info, numericValue.floatValue());
+        } else if (numericValue instanceof Long) {
+          visitor.longField(info, numericValue.longValue());
+        } else {
+          throw new AssertionError();
+        }
+        continue;
+      }
+      // must be String
+      if (f instanceof LargeLazyField) { // optimization to avoid premature string conversion
+        visitor.stringField(info, toByteArrayUnwrapIfPossible(((LargeLazyField) f).readBytes()));
+      } else {
+        visitor.stringField(info, f.stringValue().getBytes(StandardCharsets.UTF_8));
+      }
+    }
+  }
+
+  private byte[] toByteArrayUnwrapIfPossible(BytesRef bytesRef) {
+    if (bytesRef.offset == 0 && bytesRef.bytes.length == bytesRef.length) {
+      return bytesRef.bytes;
+    } else {
+      return Arrays.copyOfRange(bytesRef.bytes, bytesRef.offset, bytesRef.offset + bytesRef.length);
+    }
+  }
+
+  /** Unlike LazyDocument.LazyField, we (a) don't cache large values, and (b) provide access to the byte[]. */
+  class LargeLazyField implements IndexableField {
+
+    final String name;
+    final int docId;
+    // synchronize on 'this' to access:
+    BytesRef cachedBytes; // we only conditionally populate this if it's big enough
+
+    private LargeLazyField(String name, int docId) {
+      this.name = name;
+      this.docId = docId;
+    }
+
+    @Override
+    public String toString() {
+      return fieldType().toString() + "<" + name() + ">"; // mimic Field.java
+    }
+
+    @Override
+    public String name() {
+      return name;
+    }
+
+    @Override
+    public IndexableFieldType fieldType() {
+      return searcher.getSchema().getField(name());
+    }
+
+    @Override
+    public TokenStream tokenStream(Analyzer analyzer, TokenStream reuse) {
+      return analyzer.tokenStream(name(), stringValue()); // or we could throw unsupported exception?
+    }
+    /** (for tests) */
+    synchronized boolean hasBeenLoaded() {
+      return cachedBytes != null;
+    }
+
+    @Override
+    public synchronized String stringValue() {
+      try {
+        return readBytes().utf8ToString();
+      } catch (IOException e) {
+        throw new RuntimeException(e);
+      }
+    }
+
+    synchronized BytesRef readBytes() throws IOException {
+      if (cachedBytes != null) {
+        return cachedBytes;
+      } else {
+        BytesRef bytesRef = new BytesRef();
+        searcher.getIndexReader().document(docId, new StoredFieldVisitor() {
+          boolean done = false;
+          @Override
+          public Status needsField(FieldInfo fieldInfo) throws IOException {
+            if (done) {
+              return Status.STOP;
+            }
+            return fieldInfo.name.equals(name()) ? Status.YES : Status.NO;
+          }
+
+          @Override
+          public void stringField(FieldInfo fieldInfo, byte[] value) throws IOException {
+            bytesRef.bytes = value;
+            bytesRef.length = value.length;
+            done = true;
+          }
+
+          @Override
+          public void binaryField(FieldInfo fieldInfo, byte[] value) throws IOException {
+            throw new UnsupportedOperationException("'large' binary fields are not (yet) supported");
+          }
+        });
+        if (bytesRef.length < largeValueLengthCacheThreshold) {
+          return cachedBytes = bytesRef;
+        } else {
+          return bytesRef;
+        }
+      }
+    }
+
+    @Override
+    public BytesRef binaryValue() {
+      return null;
+    }
+
+    @Override
+    public Reader readerValue() {
+      return null;
+    }
+
+    @Override
+    public Number numericValue() {
+      return null;
+    }
+  }
+
+  /**
+   * This will fetch and add the docValues fields to a given SolrDocument/SolrInputDocument
+   *
+   * @param doc
+   *          A SolrDocument or SolrInputDocument instance where docValues will be added
+   * @param docid
+   *          The lucene docid of the document to be populated
+   * @param fields
+   *          The list of docValues fields to be decorated
+   */
+  public void decorateDocValueFields(@SuppressWarnings("rawtypes") SolrDocumentBase doc, int docid, Set<String> fields)
+      throws IOException {
+    final List<LeafReaderContext> leafContexts = searcher.getLeafContexts();
+    final int subIndex = ReaderUtil.subIndex(docid, leafContexts);
+    final int localId = docid - leafContexts.get(subIndex).docBase;
+    final LeafReader leafReader = leafContexts.get(subIndex).reader();
+    for (String fieldName : fields) {
+      final SchemaField schemaField = searcher.getSchema().getFieldOrNull(fieldName);
+      if (schemaField == null || !schemaField.hasDocValues() || doc.containsKey(fieldName)) {
+        log.warn("Couldn't decorate docValues for field: [{}], schemaField: [{}]", fieldName, schemaField);
+        continue;
+      }
+      FieldInfo fi = searcher.getFieldInfos().fieldInfo(fieldName);
+      if (fi == null) {
+        continue; // Searcher doesn't have info about this field, hence ignore it.
+      }
+      final DocValuesType dvType = fi.getDocValuesType();
+      switch (dvType) {
+        case NUMERIC:
+          final NumericDocValues ndv = leafReader.getNumericDocValues(fieldName);
+          if (ndv == null) {
+            continue;
+          }
+          Long val;
+          if (ndv.advanceExact(localId)) {
+            val = ndv.longValue();
+          } else {
+            continue;
+          }
+          Object newVal = val;
+          if (schemaField.getType().isPointField()) {
+            // TODO: Maybe merge PointField with TrieFields here
+            NumberType type = schemaField.getType().getNumberType();
+            switch (type) {
+              case INTEGER:
+                newVal = val.intValue();
+                break;
+              case LONG:
+                newVal = val.longValue();
+                break;
+              case FLOAT:
+                newVal = Float.intBitsToFloat(val.intValue());
+                break;
+              case DOUBLE:
+                newVal = Double.longBitsToDouble(val);
+                break;
+              case DATE:
+                newVal = new Date(val);
+                break;
+              default:
+                throw new AssertionError("Unexpected PointType: " + type);
+            }
+          } else {
+            if (schemaField.getType() instanceof TrieIntField) {
+              newVal = val.intValue();
+            } else if (schemaField.getType() instanceof TrieFloatField) {
+              newVal = Float.intBitsToFloat(val.intValue());
+            } else if (schemaField.getType() instanceof TrieDoubleField) {
+              newVal = Double.longBitsToDouble(val);
+            } else if (schemaField.getType() instanceof TrieDateField) {
+              newVal = new Date(val);
+            } else if (schemaField.getType() instanceof EnumField) {
+              newVal = ((EnumField) schemaField.getType()).intValueToStringValue(val.intValue());
+            }
+          }
+          doc.addField(fieldName, newVal);
+          break;
+        case BINARY:
+          BinaryDocValues bdv = leafReader.getBinaryDocValues(fieldName);
+          if (bdv == null) {
+            continue;
+          }
+          BytesRef value;
+          if (bdv.advanceExact(localId)) {
+            value = BytesRef.deepCopyOf(bdv.binaryValue());
+          } else {
+            continue;
+          }
+          doc.addField(fieldName, value);
+          break;
+        case SORTED:
+          SortedDocValues sdv = leafReader.getSortedDocValues(fieldName);
+          if (sdv == null) {
+            continue;
+          }
+          if (sdv.advanceExact(localId)) {
+            final BytesRef bRef = sdv.binaryValue();
+            // Special handling for Boolean fields since they're stored as 'T' and 'F'.
+            if (schemaField.getType() instanceof BoolField) {
+              doc.addField(fieldName, schemaField.getType().toObject(schemaField, bRef));
+            } else {
+              doc.addField(fieldName, bRef.utf8ToString());
+            }
+          }
+          break;
+        case SORTED_NUMERIC:
+          final SortedNumericDocValues numericDv = leafReader.getSortedNumericDocValues(fieldName);
+          NumberType type = schemaField.getType().getNumberType();
+          if (numericDv != null) {
+            if (numericDv.advance(localId) == localId) {
+              final List<Object> outValues = new ArrayList<Object>(numericDv.docValueCount());
+              for (int i = 0; i < numericDv.docValueCount(); i++) {
+                long number = numericDv.nextValue();
+                switch (type) {
+                  case INTEGER:
+                    outValues.add((int)number);
+                    break;
+                  case LONG:
+                    outValues.add(number);
+                    break;
+                  case FLOAT:
+                    outValues.add(NumericUtils.sortableIntToFloat((int)number));
+                    break;
+                  case DOUBLE:
+                    outValues.add(NumericUtils.sortableLongToDouble(number));
+                    break;
+                  case DATE:
+                    outValues.add(new Date(number));
+                    break;
+                  default:
+                    throw new AssertionError("Unexpected PointType: " + type);
+                }
+              }
+              assert outValues.size() > 0;
+              doc.addField(fieldName, outValues);
+            }
+          }
+        case SORTED_SET:
+          final SortedSetDocValues values = leafReader.getSortedSetDocValues(fieldName);
+          if (values != null && values.getValueCount() > 0) {
+            if (values.advance(localId) == localId) {
+              final List<Object> outValues = new LinkedList<>();
+              for (long ord = values.nextOrd(); ord != SortedSetDocValues.NO_MORE_ORDS; ord = values.nextOrd()) {
+                value = values.lookupOrd(ord);
+                outValues.add(schemaField.getType().toObject(schemaField, value));
+              }
+              assert outValues.size() > 0;
+              doc.addField(fieldName, outValues);
+            }
+          }
+        case NONE:
+          break;
+      }
+    }
+  }
+
+  /**
+   * Returns an unmodifiable set of non-stored docValues field names.
+   *
+   * @param onlyUseDocValuesAsStored
+   *          If false, returns all non-stored docValues. If true, returns only those non-stored docValues which have
+   *          the {@link SchemaField#useDocValuesAsStored()} flag true.
+   */
+  public Set<String> getNonStoredDVs(boolean onlyUseDocValuesAsStored) {
+    return onlyUseDocValuesAsStored ? nonStoredDVsUsedAsStored : allNonStoredDVs;
+  }
+
+  /**
+   * Returns an unmodifiable set of names of non-stored docValues fields, except those that are targets of a copy field.
+   */
+  public Set<String> getNonStoredDVsWithoutCopyTargets() {
+    return nonStoredDVsWithoutCopyTargets;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
index 83df60f..4207a9b 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -18,19 +18,14 @@ package org.apache.solr.search;
 
 import java.io.Closeable;
 import java.io.IOException;
-import java.io.Reader;
 import java.lang.invoke.MethodHandles;
 import java.net.URL;
-import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -40,21 +35,26 @@ import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicReference;
 
 import com.google.common.collect.Iterables;
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.document.Document;
-import org.apache.lucene.document.DocumentStoredFieldVisitor;
-import org.apache.lucene.document.LazyDocument;
-import org.apache.lucene.index.*;
-import org.apache.lucene.index.StoredFieldVisitor.Status;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.ExitableDirectoryReader;
+import org.apache.lucene.index.FieldInfos;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.LeafReader;
+import org.apache.lucene.index.LeafReaderContext;
+import org.apache.lucene.index.MultiPostingsEnum;
+import org.apache.lucene.index.PostingsEnum;
+import org.apache.lucene.index.StoredFieldVisitor;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.index.TermContext;
+import org.apache.lucene.index.Terms;
+import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.search.*;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.FixedBitSet;
-import org.apache.lucene.util.NumericUtils;
-import org.apache.solr.common.SolrDocumentBase;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.params.ModifiableSolrParams;
@@ -71,15 +71,8 @@ import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestInfo;
 import org.apache.solr.response.SolrQueryResponse;
-import org.apache.solr.schema.BoolField;
-import org.apache.solr.schema.EnumField;
 import org.apache.solr.schema.IndexSchema;
-import org.apache.solr.schema.NumberType;
 import org.apache.solr.schema.SchemaField;
-import org.apache.solr.schema.TrieDateField;
-import org.apache.solr.schema.TrieDoubleField;
-import org.apache.solr.schema.TrieFloatField;
-import org.apache.solr.schema.TrieIntField;
 import org.apache.solr.search.facet.UnInvertedField;
 import org.apache.solr.search.stats.StatsSource;
 import org.apache.solr.uninverting.UninvertingReader;
@@ -107,6 +100,7 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
 
   private final SolrCore core;
   private final IndexSchema schema;
+  private final SolrDocumentFetcher docFetcher;
 
   private final String name;
   private final Date openTime = new Date();
@@ -119,12 +113,10 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
   private final int queryResultWindowSize;
   private final int queryResultMaxDocsCached;
   private final boolean useFilterForSortedQuery;
-  public final boolean enableLazyFieldLoading;
 
   private final boolean cachingEnabled;
   private final SolrCache<Query,DocSet> filterCache;
   private final SolrCache<QueryResultKey,DocList> queryResultCache;
-  private final SolrCache<Integer,Document> documentCache;
   private final SolrCache<String,UnInvertedField> fieldValueCache;
 
   // map of generic caches - not synchronized since it's read-only after the constructor.
@@ -135,21 +127,6 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
 
   private final FieldInfos fieldInfos;
 
-  /** Contains the names/patterns of all docValues=true,stored=false fields in the schema. */
-  private final Set<String> allNonStoredDVs;
-
-  /** Contains the names/patterns of all docValues=true,stored=false,useDocValuesAsStored=true fields in the schema. */
-  private final Set<String> nonStoredDVsUsedAsStored;
-
-  /** Contains the names/patterns of all docValues=true,stored=false fields, excluding those that are copyField targets in the schema. */
-  private final Set<String> nonStoredDVsWithoutCopyTargets;
-
-  private static int largeValueLengthCacheThreshold = Integer.getInteger("solr.largeField.cacheThreshold", 512 * 1024); // internal setting
-
-  private final Set<String> largeFields;
-
-  private Collection<String> storedHighlightFieldNames; // lazy populated; use getter
-
   private DirectoryFactory directoryFactory;
 
   private final LeafReader leafReader;
@@ -161,9 +138,8 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
 
   private final NamedList<Object> readerStats;
 
-
   private static DirectoryReader getReader(SolrCore core, SolrIndexConfig config, DirectoryFactory directoryFactory,
-      String path) throws IOException {
+                                           String path) throws IOException {
     final Directory dir = directoryFactory.get(path, DirContext.DEFAULT, config.lockType);
     try {
       return core.getIndexReaderFactory().newReader(dir, core);
@@ -283,7 +259,9 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
     this.queryResultWindowSize = solrConfig.queryResultWindowSize;
     this.queryResultMaxDocsCached = solrConfig.queryResultMaxDocsCached;
     this.useFilterForSortedQuery = solrConfig.useFilterForSortedQuery;
-    this.enableLazyFieldLoading = solrConfig.enableLazyFieldLoading;
+
+    this.fieldInfos = leafReader.getFieldInfos();
+    this.docFetcher = new SolrDocumentFetcher(this, solrConfig, enableCache);
 
     this.cachingEnabled = enableCache;
     if (cachingEnabled) {
@@ -296,7 +274,7 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
       queryResultCache = solrConfig.queryResultCacheConfig == null ? null
           : solrConfig.queryResultCacheConfig.newInstance();
       if (queryResultCache != null) clist.add(queryResultCache);
-      documentCache = solrConfig.documentCacheConfig == null ? null : solrConfig.documentCacheConfig.newInstance();
+      SolrCache<Integer, Document> documentCache = docFetcher.getDocumentCache();
       if (documentCache != null) clist.add(documentCache);
 
       if (solrConfig.userCacheConfigs.isEmpty()) {
@@ -316,42 +294,11 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
     } else {
       this.filterCache = null;
       this.queryResultCache = null;
-      this.documentCache = null;
       this.fieldValueCache = null;
       this.cacheMap = NO_GENERIC_CACHES;
       this.cacheList = NO_CACHES;
     }
 
-    final Set<String> nonStoredDVsUsedAsStored = new HashSet<>();
-    final Set<String> allNonStoredDVs = new HashSet<>();
-    final Set<String> nonStoredDVsWithoutCopyTargets = new HashSet<>();
-    final Set<String> storedLargeFields = new HashSet<>();
-
-    this.fieldInfos = leafReader.getFieldInfos();
-    for (FieldInfo fieldInfo : fieldInfos) { // can find materialized dynamic fields, unlike using the Solr IndexSchema.
-      final SchemaField schemaField = schema.getFieldOrNull(fieldInfo.name);
-      if (schemaField == null) {
-        continue;
-      }
-      if (!schemaField.stored() && schemaField.hasDocValues()) {
-        if (schemaField.useDocValuesAsStored()) {
-          nonStoredDVsUsedAsStored.add(fieldInfo.name);
-        }
-        allNonStoredDVs.add(fieldInfo.name);
-        if (!schema.isCopyFieldTarget(schemaField)) {
-          nonStoredDVsWithoutCopyTargets.add(fieldInfo.name);
-        }
-      }
-      if (schemaField.stored() && schemaField.isLarge()) {
-        storedLargeFields.add(schemaField.getName());
-      }
-    }
-
-    this.nonStoredDVsUsedAsStored = Collections.unmodifiableSet(nonStoredDVsUsedAsStored);
-    this.allNonStoredDVs = Collections.unmodifiableSet(allNonStoredDVs);
-    this.nonStoredDVsWithoutCopyTargets = Collections.unmodifiableSet(nonStoredDVsWithoutCopyTargets);
-    this.largeFields = Collections.unmodifiableSet(storedLargeFields);
-
     // We already have our own filter cache
     setQueryCache(null);
 
@@ -361,9 +308,21 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
     assert ObjectReleaseTracker.track(this);
   }
 
+  public SolrDocumentFetcher getDocFetcher() {
+    return docFetcher;
+  }
+
+  List<LeafReaderContext> getLeafContexts() {
+    return super.leafContexts;
+  }
+
+  public FieldInfos getFieldInfos() {
+    return fieldInfos;
+  }
+
   /*
-   * Override these two methods to provide a way to use global collection stats.
-   */
+     * Override these two methods to provide a way to use global collection stats.
+     */
   @Override
   public TermStatistics termStatistics(Term term, TermContext context) throws IOException {
     final SolrRequestInfo reqInfo = SolrRequestInfo.getRequestInfo();
@@ -526,30 +485,6 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
     return filterCache;
   }
 
-  /**
-   * Returns a collection of the names of all stored fields which can be highlighted the index reader knows about.
-   */
-  public Collection<String> getStoredHighlightFieldNames() {
-    synchronized (this) {
-      if (storedHighlightFieldNames == null) {
-        storedHighlightFieldNames = new LinkedList<>();
-        for (FieldInfo fieldInfo : fieldInfos) {
-          final String fieldName = fieldInfo.name;
-          try {
-            SchemaField field = schema.getField(fieldName);
-            if (field.stored() && ((field.getType() instanceof org.apache.solr.schema.TextField)
-                || (field.getType() instanceof org.apache.solr.schema.StrField))) {
-              storedHighlightFieldNames.add(fieldName);
-            }
-          } catch (RuntimeException e) { // getField() throws a SolrException, but it arrives as a RuntimeException
-            log.warn("Field [{}] found in index, but not defined in schema.", fieldName);
-          }
-        }
-      }
-      return storedHighlightFieldNames;
-    }
-  }
-
   //
   // Set default regenerators on filter and query caches if they don't have any
   //
@@ -638,119 +573,26 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
   // }
   // }
 
-  /* ********************** Document retrieval *************************/
-
-  /*
-   * Future optimizations (yonik)
-   *
-   * If no cache is present: - use NO_LOAD instead of LAZY_LOAD - use LOAD_AND_BREAK if a single field is being
-   * retrieved
-   */
-
-  /** {@link StoredFieldVisitor} which loads the specified fields eagerly (or all if null).
-   * If {@link #enableLazyFieldLoading} then the rest get special lazy field entries.  Designated "large"
-   * fields will always get a special field entry. */
-  private class SolrDocumentStoredFieldVisitor extends DocumentStoredFieldVisitor {
-    private final Document doc;
-    private final LazyDocument lazyFieldProducer; // arguably a better name than LazyDocument; at least how we use it here
-    private final int docId;
-    private final boolean addLargeFieldsLazily;
-
-    SolrDocumentStoredFieldVisitor(Set<String> toLoad, IndexReader reader, int docId) {
-      super(toLoad);
-      this.docId = docId;
-      this.doc = getDocument();
-      this.lazyFieldProducer = toLoad != null && enableLazyFieldLoading ? new LazyDocument(reader, docId) : null;
-      this.addLargeFieldsLazily = (documentCache != null && !largeFields.isEmpty());
-      //TODO can we return Status.STOP after a val is loaded and we know there are no other fields of interest?
-      //    When: toLoad is one single-valued field, no lazyFieldProducer
-    }
-
-    @Override
-    public Status needsField(FieldInfo fieldInfo) throws IOException {
-      Status status = super.needsField(fieldInfo);
-      assert status != Status.STOP : "Status.STOP not supported or expected";
-      if (addLargeFieldsLazily && largeFields.contains(fieldInfo.name)) { // load "large" fields using this lazy mechanism
-        if (lazyFieldProducer != null || status == Status.YES) {
-          doc.add(new LargeLazyField(fieldInfo.name, docId));
-        }
-        return Status.NO;
-      }
-      if (status == Status.NO && lazyFieldProducer != null) { // lazy
-        doc.add(lazyFieldProducer.getField(fieldInfo));
-      }
-      return status;
-    }
-  }
-
   /**
    * Retrieve the {@link Document} instance corresponding to the document id.
+   *
+   * @see SolrDocumentFetcher
    */
   @Override
-  public Document doc(int i) throws IOException {
-    return doc(i, (Set<String>) null);
+  public Document doc(int docId) throws IOException {
+    return doc(docId, (Set<String>) null);
   }
 
   /**
-   * Visit a document's fields using a {@link StoredFieldVisitor} This method does not currently add to the Solr
-   * document cache.
+   * Visit a document's fields using a {@link StoredFieldVisitor}.
+   * This method does not currently add to the Solr document cache.
    * 
    * @see IndexReader#document(int, StoredFieldVisitor)
+   * @see SolrDocumentFetcher
    */
   @Override
-  public void doc(int docId, StoredFieldVisitor visitor) throws IOException {
-    if (documentCache != null) {
-      Document cached = documentCache.get(docId);
-      if (cached != null) {
-        visitFromCached(cached, visitor);
-        return;
-      }
-    }
-    getIndexReader().document(docId, visitor);
-  }
-
-  /** Executes a stored field visitor against a hit from the document cache */
-  private void visitFromCached(Document document, StoredFieldVisitor visitor) throws IOException {
-    for (IndexableField f : document) {
-      final FieldInfo info = fieldInfos.fieldInfo(f.name());
-      final Status needsField = visitor.needsField(info);
-      if (needsField == Status.STOP) return;
-      if (needsField == Status.NO) continue;
-      BytesRef binaryValue = f.binaryValue();
-      if (binaryValue != null) {
-        visitor.binaryField(info, toByteArrayUnwrapIfPossible(binaryValue));
-        continue;
-      }
-      Number numericValue = f.numericValue();
-      if (numericValue != null) {
-        if (numericValue instanceof Double) {
-          visitor.doubleField(info, numericValue.doubleValue());
-        } else if (numericValue instanceof Integer) {
-          visitor.intField(info, numericValue.intValue());
-        } else if (numericValue instanceof Float) {
-          visitor.floatField(info, numericValue.floatValue());
-        } else if (numericValue instanceof Long) {
-          visitor.longField(info, numericValue.longValue());
-        } else {
-          throw new AssertionError();
-        }
-        continue;
-      }
-      // must be String
-      if (f instanceof LargeLazyField) { // optimization to avoid premature string conversion
-        visitor.stringField(info, toByteArrayUnwrapIfPossible(((LargeLazyField) f).readBytes()));
-      } else {
-        visitor.stringField(info, f.stringValue().getBytes(StandardCharsets.UTF_8));
-      }
-    }
-  }
-
-  private byte[] toByteArrayUnwrapIfPossible(BytesRef bytesRef) {
-    if (bytesRef.offset == 0 && bytesRef.bytes.length == bytesRef.length) {
-      return bytesRef.bytes;
-    } else {
-      return Arrays.copyOfRange(bytesRef.bytes, bytesRef.offset, bytesRef.offset + bytesRef.length);
-    }
+  public final void doc(int docId, StoredFieldVisitor visitor) throws IOException {
+    getDocFetcher().doc(docId, visitor);
   }
 
   /**
@@ -758,328 +600,14 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
    * <p>
    * <b>NOTE</b>: the document will have all fields accessible, but if a field filter is provided, only the provided
    * fields will be loaded (the remainder will be available lazily).
-   */
-  @Override
-  public Document doc(int i, Set<String> fields) throws IOException {
-
-    Document d;
-    if (documentCache != null) {
-      d = documentCache.get(i);
-      if (d != null) return d;
-    }
-
-    final DirectoryReader reader = getIndexReader();
-    if (documentCache != null && !enableLazyFieldLoading) {
-      // we do not filter the fields in this case because that would return an incomplete document which would
-      // be eventually cached. The alternative would be to read the stored fields twice; once with the fields
-      // and then without for caching leading to a performance hit
-      // see SOLR-8858 for related discussion
-      fields = null;
-    }
-    final SolrDocumentStoredFieldVisitor visitor = new SolrDocumentStoredFieldVisitor(fields, reader, i);
-    reader.document(i, visitor);
-    d = visitor.getDocument();
-
-    if (documentCache != null) {
-      documentCache.put(i, d);
-    }
-
-    return d;
-  }
-
-  /** Unlike LazyDocument.LazyField, we (a) don't cache large values, and (b) provide access to the byte[]. */
-  class LargeLazyField implements IndexableField {
-
-    final String name;
-    final int docId;
-    // synchronize on 'this' to access:
-    BytesRef cachedBytes; // we only conditionally populate this if it's big enough
-
-    private LargeLazyField(String name, int docId) {
-      this.name = name;
-      this.docId = docId;
-    }
-
-    @Override
-    public String toString() {
-      return fieldType().toString() + "<" + name() + ">"; // mimic Field.java
-    }
-
-    @Override
-    public String name() {
-      return name;
-    }
-
-    @Override
-    public IndexableFieldType fieldType() {
-      return schema.getField(name());
-    }
-
-    @Override
-    public TokenStream tokenStream(Analyzer analyzer, TokenStream reuse) {
-      return analyzer.tokenStream(name(), stringValue()); // or we could throw unsupported exception?
-    }
-    /** (for tests) */
-    synchronized boolean hasBeenLoaded() {
-      return cachedBytes != null;
-    }
-
-    @Override
-    public synchronized String stringValue() {
-      try {
-        return readBytes().utf8ToString();
-      } catch (IOException e) {
-        throw new RuntimeException(e);
-      }
-    }
-
-    synchronized BytesRef readBytes() throws IOException {
-      if (cachedBytes != null) {
-        return cachedBytes;
-      } else {
-        BytesRef bytesRef = new BytesRef();
-        getIndexReader().document(docId, new StoredFieldVisitor() {
-          boolean done = false;
-          @Override
-          public Status needsField(FieldInfo fieldInfo) throws IOException {
-            if (done) {
-              return Status.STOP;
-            }
-            return fieldInfo.name.equals(name()) ? Status.YES : Status.NO;
-          }
-
-          @Override
-          public void stringField(FieldInfo fieldInfo, byte[] value) throws IOException {
-            bytesRef.bytes = value;
-            bytesRef.length = value.length;
-            done = true;
-          }
-
-          @Override
-          public void binaryField(FieldInfo fieldInfo, byte[] value) throws IOException {
-            throw new UnsupportedOperationException("'large' binary fields are not (yet) supported");
-          }
-        });
-        if (bytesRef.length < largeValueLengthCacheThreshold) {
-          return cachedBytes = bytesRef;
-        } else {
-          return bytesRef;
-        }
-      }
-    }
-
-    @Override
-    public BytesRef binaryValue() {
-      return null;
-    }
-
-    @Override
-    public Reader readerValue() {
-      return null;
-    }
-
-    @Override
-    public Number numericValue() {
-      return null;
-    }
-  }
-
-  /**
-   * This will fetch and add the docValues fields to a given SolrDocument/SolrInputDocument
-   *
-   * @param doc
-   *          A SolrDocument or SolrInputDocument instance where docValues will be added
-   * @param docid
-   *          The lucene docid of the document to be populated
-   * @param fields
-   *          The list of docValues fields to be decorated
-   */
-  public void decorateDocValueFields(@SuppressWarnings("rawtypes") SolrDocumentBase doc, int docid, Set<String> fields)
-      throws IOException {
-    final int subIndex = ReaderUtil.subIndex(docid, leafContexts);
-    final int localId = docid - leafContexts.get(subIndex).docBase;
-    final LeafReader leafReader = leafContexts.get(subIndex).reader();
-    for (String fieldName : fields) {
-      final SchemaField schemaField = schema.getFieldOrNull(fieldName);
-      if (schemaField == null || !schemaField.hasDocValues() || doc.containsKey(fieldName)) {
-        log.warn("Couldn't decorate docValues for field: [{}], schemaField: [{}]", fieldName, schemaField);
-        continue;
-      }
-      FieldInfo fi = fieldInfos.fieldInfo(fieldName);
-      if (fi == null) {
-        continue; // Searcher doesn't have info about this field, hence ignore it.
-      }
-      final DocValuesType dvType = fi.getDocValuesType();
-      switch (dvType) {
-        case NUMERIC:
-          final NumericDocValues ndv = leafReader.getNumericDocValues(fieldName);
-          if (ndv == null) {
-            continue;
-          }
-          Long val;
-          if (ndv.advanceExact(localId)) {
-            val = ndv.longValue();
-          } else {
-            continue;
-          }
-          Object newVal = val;
-          if (schemaField.getType().isPointField()) {
-            // TODO: Maybe merge PointField with TrieFields here
-            NumberType type = schemaField.getType().getNumberType();
-            switch (type) {
-              case INTEGER:
-                newVal = val.intValue();
-                break;
-              case LONG:
-                newVal = val;
-                break;
-              case FLOAT:
-                newVal = Float.intBitsToFloat(val.intValue());
-                break;
-              case DOUBLE:
-                newVal = Double.longBitsToDouble(val);
-                break;
-              case DATE:
-                newVal = new Date(val);
-                break;
-              default:
-                throw new AssertionError("Unexpected PointType: " + type);
-            }
-          } else {
-            if (schemaField.getType() instanceof TrieIntField) {
-              newVal = val.intValue();
-            } else if (schemaField.getType() instanceof TrieFloatField) {
-              newVal = Float.intBitsToFloat(val.intValue());
-            } else if (schemaField.getType() instanceof TrieDoubleField) {
-              newVal = Double.longBitsToDouble(val);
-            } else if (schemaField.getType() instanceof TrieDateField) {
-              newVal = new Date(val);
-            } else if (schemaField.getType() instanceof EnumField) {
-              newVal = ((EnumField) schemaField.getType()).intValueToStringValue(val.intValue());
-            }
-          }
-          doc.addField(fieldName, newVal);
-          break;
-        case BINARY:
-          BinaryDocValues bdv = leafReader.getBinaryDocValues(fieldName);
-          if (bdv == null) {
-            continue;
-          }
-          BytesRef value;
-          if (bdv.advanceExact(localId)) {
-            value = BytesRef.deepCopyOf(bdv.binaryValue());
-          } else {
-            continue;
-          }
-          doc.addField(fieldName, value);
-          break;
-        case SORTED:
-          SortedDocValues sdv = leafReader.getSortedDocValues(fieldName);
-          if (sdv == null) {
-            continue;
-          }
-          if (sdv.advanceExact(localId)) {
-            final BytesRef bRef = sdv.binaryValue();
-            // Special handling for Boolean fields since they're stored as 'T' and 'F'.
-            if (schemaField.getType() instanceof BoolField) {
-              doc.addField(fieldName, schemaField.getType().toObject(schemaField, bRef));
-            } else {
-              doc.addField(fieldName, bRef.utf8ToString());
-            }
-          }
-          break;
-        case SORTED_NUMERIC:
-          final SortedNumericDocValues numericDv = leafReader.getSortedNumericDocValues(fieldName);
-          NumberType type = schemaField.getType().getNumberType();
-          if (numericDv != null) {
-            if (numericDv.advance(localId) == localId) {
-              final List<Object> outValues = new ArrayList<Object>(numericDv.docValueCount());
-              for (int i = 0; i < numericDv.docValueCount(); i++) {
-                long number = numericDv.nextValue();
-                switch (type) {
-                  case INTEGER:
-                    outValues.add((int)number);
-                    break;
-                  case LONG:
-                    outValues.add(number);
-                    break;
-                  case FLOAT:
-                    outValues.add(NumericUtils.sortableIntToFloat((int)number));
-                    break;
-                  case DOUBLE:
-                    outValues.add(NumericUtils.sortableLongToDouble(number));
-                    break;
-                  case DATE:
-                    outValues.add(new Date(number));
-                    break;
-                  default:
-                    throw new AssertionError("Unexpected PointType: " + type);
-                }
-              }
-              assert outValues.size() > 0;
-              doc.addField(fieldName, outValues);
-            }
-          }
-        case SORTED_SET:
-          final SortedSetDocValues values = leafReader.getSortedSetDocValues(fieldName);
-          if (values != null && values.getValueCount() > 0) {
-            if (values.advance(localId) == localId) {
-              final List<Object> outValues = new LinkedList<Object>();
-              for (long ord = values.nextOrd(); ord != SortedSetDocValues.NO_MORE_ORDS; ord = values.nextOrd()) {
-                value = values.lookupOrd(ord);
-                outValues.add(schemaField.getType().toObject(schemaField, value));
-              }
-              assert outValues.size() > 0;
-              doc.addField(fieldName, outValues);
-            }
-          }
-        case NONE:
-          break;
-      }
-    }
-  }
-
-  /**
-   * Takes a list of docs (the doc ids actually), and reads them into an array of Documents.
-   */
-  public void readDocs(Document[] docs, DocList ids) throws IOException {
-    readDocs(docs, ids, null);
-  }
-
-  /**
-   * Takes a list of docs (the doc ids actually) and a set of fields to load, and reads them into an array of Documents.
-   */
-  public void readDocs(Document[] docs, DocList ids, Set<String> fields) throws IOException {
-    final DocIterator iter = ids.iterator();
-    for (int i = 0; i < docs.length; i++) {
-      docs[i] = doc(iter.nextDoc(), fields);
-    }
-  }
-
-  /**
-   * Returns an unmodifiable set of non-stored docValues field names.
    *
-   * @param onlyUseDocValuesAsStored
-   *          If false, returns all non-stored docValues. If true, returns only those non-stored docValues which have
-   *          the {@link SchemaField#useDocValuesAsStored()} flag true.
-   */
-  public Set<String> getNonStoredDVs(boolean onlyUseDocValuesAsStored) {
-    return onlyUseDocValuesAsStored ? nonStoredDVsUsedAsStored : allNonStoredDVs;
-  }
-
-  /**
-   * Returns an unmodifiable set of names of non-stored docValues fields, except those that are targets of a copy field.
+   * @see SolrDocumentFetcher
    */
-  public Set<String> getNonStoredDVsWithoutCopyTargets() {
-    return nonStoredDVsWithoutCopyTargets;
+  @Override
+  public final Document doc(int i, Set<String> fields) throws IOException {
+    return getDocFetcher().doc(i, fields);
   }
 
-  /* ********************** end document retrieval *************************/
-
-  ////////////////////////////////////////////////////////////////////////////////
-  ////////////////////////////////////////////////////////////////////////////////
-  ////////////////////////////////////////////////////////////////////////////////
-
   /** expert: internal API, subject to change */
   public SolrCache<String,UnInvertedField> getFieldValueCache() {
     return fieldValueCache;
@@ -2556,15 +2084,6 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
   }
 
   /**
-   * Takes a list of document IDs, and returns an array of Documents containing all of the stored fields.
-   */
-  public Document[] readDocs(DocList ids) throws IOException {
-    final Document[] docs = new Document[ids.size()];
-    readDocs(docs, ids);
-    return docs;
-  }
-
-  /**
    * Warm this searcher based on an old one (primarily for auto-cache warming).
    */
   public void warm(SolrIndexSearcher old) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
index adb81de..83c81e5 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
@@ -19,12 +19,12 @@ package org.apache.solr.search.grouping.distributed.shardresultserializer;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.lucene.document.Document;
-import org.apache.lucene.document.DocumentStoredFieldVisitor;
 import org.apache.lucene.search.FieldDoc;
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.Sort;
@@ -285,9 +285,7 @@ public class TopGroupsResultTransformer implements ShardResultTransformer<List<C
   }
 
   private Document retrieveDocument(final SchemaField uniqueField, int doc) throws IOException {
-    DocumentStoredFieldVisitor visitor = new DocumentStoredFieldVisitor(uniqueField.getName());
-    rb.req.getSearcher().doc(doc, visitor);
-    return visitor.getDocument();
+    return rb.req.getSearcher().doc(doc, Collections.singleton(uniqueField.getName()));
   }
 
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java b/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
index 4445e07..6a9f679 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
@@ -248,7 +248,7 @@ public class SolrPluginUtils {
                                           SolrQueryRequest req,
                                           SolrQueryResponse res) throws IOException {
     SolrIndexSearcher searcher = req.getSearcher();
-    if(!searcher.enableLazyFieldLoading) {
+    if(!searcher.getDocFetcher().isLazyFieldLoadingEnabled()) {
       // nothing to do
       return;
     }
@@ -1022,6 +1022,7 @@ public class SolrPluginUtils {
    * @return The new {@link org.apache.solr.common.SolrDocumentList} containing all the loaded docs
    * @throws java.io.IOException if there was a problem loading the docs
    * @since solr 1.4
+   * @deprecated TODO in 7.0 remove this. It was inlined into ClusteringComponent. DWS: 'ids' is ugly.
    */
   public static SolrDocumentList docListToSolrDocumentList(
       DocList docs,
@@ -1029,6 +1030,10 @@ public class SolrPluginUtils {
       Set<String> fields,
       Map<SolrDocument, Integer> ids ) throws IOException
   {
+    /*  DWS deprecation note:
+     It's only called by ClusteringComponent, and I think the "ids" param aspect is a bit messy and not worth supporting.
+     If someone wants a similar method they can speak up and we can add a method to SolrDocumentFetcher.
+     */
     IndexSchema schema = searcher.getSchema();
 
     SolrDocumentList list = new SolrDocumentList();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java b/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java
index 57dc2de..4446319 100644
--- a/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java
+++ b/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java
@@ -112,8 +112,8 @@ public class LargeFieldTest extends SolrTestCaseJ4 {
   private void assertLazyNotLoaded(Document d, String fieldName) {
     IndexableField field = d.getField(fieldName);
     if (fieldName == BIG_FIELD) {
-      assertTrue(field instanceof SolrIndexSearcher.LargeLazyField);
-      assertFalse(((SolrIndexSearcher.LargeLazyField)field).hasBeenLoaded());
+      assertTrue(field instanceof SolrDocumentFetcher.LargeLazyField);
+      assertFalse(((SolrDocumentFetcher.LargeLazyField)field).hasBeenLoaded());
     } else {
       assertTrue(field instanceof LazyDocument.LazyField);
       assertFalse(((LazyDocument.LazyField)field).hasBeenLoaded());
@@ -123,8 +123,8 @@ public class LargeFieldTest extends SolrTestCaseJ4 {
   private void assertLazyLoaded(Document d, String fieldName) {
     IndexableField field = d.getField(fieldName);
     if (fieldName == BIG_FIELD) {
-      assertTrue(field instanceof SolrIndexSearcher.LargeLazyField);
-      assertTrue(((SolrIndexSearcher.LargeLazyField)field).hasBeenLoaded());
+      assertTrue(field instanceof SolrDocumentFetcher.LargeLazyField);
+      assertTrue(((SolrDocumentFetcher.LargeLazyField)field).hasBeenLoaded());
     } else {
       assertTrue(field instanceof LazyDocument.LazyField);
       assertTrue(((LazyDocument.LazyField)field).hasBeenLoaded());


[70/73] [abbrv] lucene-solr:jira/solr-6203: LUCENE-7755: Join queries should not reference IndexReaders.

Posted by cp...@apache.org.
LUCENE-7755: Join queries should not reference IndexReaders.


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

Branch: refs/heads/jira/solr-6203
Commit: edafcbad14482f3cd2f072fdca0c89600e72885d
Parents: edcdc30
Author: Adrien Grand <jp...@gmail.com>
Authored: Thu Mar 30 15:11:52 2017 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Thu Mar 30 15:11:52 2017 +0200

----------------------------------------------------------------------
 lucene/CHANGES.txt                                  |  7 +++++++
 .../org/apache/lucene/index/IndexReaderContext.java | 10 +++++++++-
 .../lucene/search/join/GlobalOrdinalsQuery.java     | 16 ++++++++++------
 .../search/join/GlobalOrdinalsWithScoreQuery.java   | 16 ++++++++++------
 .../org/apache/lucene/search/join/JoinUtil.java     |  8 +++-----
 5 files changed, 39 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/edafcbad/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 92f01a9..da643ff 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -93,6 +93,13 @@ Other
 * LUCENE-7743: Never call new String(String).
   (Daniel Jelinski via Adrien Grand)
 
+======================= Lucene 6.5.1 =======================
+
+Bug Fixes
+
+* LUCENE-7755: Fixed join queries to not reference IndexReaders, as it could
+  cause leaks if they are cached. (Adrien Grand)
+
 ======================= Lucene 6.5.0 =======================
 
 API Changes

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/edafcbad/lucene/core/src/java/org/apache/lucene/index/IndexReaderContext.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexReaderContext.java b/lucene/core/src/java/org/apache/lucene/index/IndexReaderContext.java
index dada3ff..bca7a14 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexReaderContext.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexReaderContext.java
@@ -46,7 +46,15 @@ public abstract class IndexReaderContext {
     this.ordInParent = ordInParent;
     this.isTopLevel = parent==null;
   }
-  
+
+  /** Expert: Return an {@link Object} that uniquely identifies this context.
+   *  The returned object does neither reference this {@link IndexReaderContext}
+   *  nor the wrapped {@link IndexReader}.
+   *  @lucene.experimental */
+  public Object id() {
+    return identity;
+  }
+
   /** Returns the {@link IndexReader}, this context represents. */
   public abstract IndexReader reader();
   

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/edafcbad/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsQuery.java
----------------------------------------------------------------------
diff --git a/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsQuery.java b/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsQuery.java
index 93edcc0..5aaca1a 100644
--- a/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsQuery.java
+++ b/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsQuery.java
@@ -20,7 +20,7 @@ import java.io.IOException;
 import java.util.Set;
 
 import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReaderContext;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.MultiDocValues;
 import org.apache.lucene.index.SortedDocValues;
@@ -48,19 +48,23 @@ final class GlobalOrdinalsQuery extends Query {
 
   // just for hashcode and equals:
   private final Query fromQuery;
-  private final IndexReader indexReader;
+  // id of the context rather than the context itself in order not to hold references to index readers
+  private final Object indexReaderContextId;
 
-  GlobalOrdinalsQuery(LongBitSet foundOrds, String joinField, MultiDocValues.OrdinalMap globalOrds, Query toQuery, Query fromQuery, IndexReader indexReader) {
+  GlobalOrdinalsQuery(LongBitSet foundOrds, String joinField, MultiDocValues.OrdinalMap globalOrds, Query toQuery, Query fromQuery, IndexReaderContext context) {
     this.foundOrds = foundOrds;
     this.joinField = joinField;
     this.globalOrds = globalOrds;
     this.toQuery = toQuery;
     this.fromQuery = fromQuery;
-    this.indexReader = indexReader;
+    this.indexReaderContextId = context.id();
   }
 
   @Override
   public Weight createWeight(IndexSearcher searcher, boolean needsScores, float boost) throws IOException {
+    if (searcher.getTopReaderContext().id() != indexReaderContextId) {
+      throw new IllegalStateException("Creating the weight against a different index reader than this query has been built for.");
+    }
     return new W(this, toQuery.createWeight(searcher, false, 1f), boost);
   }
 
@@ -74,7 +78,7 @@ final class GlobalOrdinalsQuery extends Query {
     return fromQuery.equals(other.fromQuery) &&
            joinField.equals(other.joinField) &&
            toQuery.equals(other.toQuery) &&
-           indexReader.equals(other.indexReader);
+           indexReaderContextId.equals(other.indexReaderContextId);
   }
 
   @Override
@@ -83,7 +87,7 @@ final class GlobalOrdinalsQuery extends Query {
     result = 31 * result + joinField.hashCode();
     result = 31 * result + toQuery.hashCode();
     result = 31 * result + fromQuery.hashCode();
-    result = 31 * result + indexReader.hashCode();
+    result = 31 * result + indexReaderContextId.hashCode();
     return result;
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/edafcbad/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsWithScoreQuery.java
----------------------------------------------------------------------
diff --git a/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsWithScoreQuery.java b/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsWithScoreQuery.java
index 0aedf35..5e614ea 100644
--- a/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsWithScoreQuery.java
+++ b/lucene/join/src/java/org/apache/lucene/search/join/GlobalOrdinalsWithScoreQuery.java
@@ -20,7 +20,7 @@ import java.io.IOException;
 import java.util.Set;
 
 import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReaderContext;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.MultiDocValues;
 import org.apache.lucene.index.SortedDocValues;
@@ -48,9 +48,10 @@ final class GlobalOrdinalsWithScoreQuery extends Query {
   private final Query fromQuery;
   private final int min;
   private final int max;
-  private final IndexReader indexReader;
+  // id of the context rather than the context itself in order not to hold references to index readers
+  private final Object indexReaderContextId;
 
-  GlobalOrdinalsWithScoreQuery(GlobalOrdinalsWithScoreCollector collector, String joinField, MultiDocValues.OrdinalMap globalOrds, Query toQuery, Query fromQuery, int min, int max, IndexReader indexReader) {
+  GlobalOrdinalsWithScoreQuery(GlobalOrdinalsWithScoreCollector collector, String joinField, MultiDocValues.OrdinalMap globalOrds, Query toQuery, Query fromQuery, int min, int max, IndexReaderContext context) {
     this.collector = collector;
     this.joinField = joinField;
     this.globalOrds = globalOrds;
@@ -58,11 +59,14 @@ final class GlobalOrdinalsWithScoreQuery extends Query {
     this.fromQuery = fromQuery;
     this.min = min;
     this.max = max;
-    this.indexReader = indexReader;
+    this.indexReaderContextId = context.id();
   }
 
   @Override
   public Weight createWeight(IndexSearcher searcher, boolean needsScores, float boost) throws IOException {
+    if (searcher.getTopReaderContext().id() != indexReaderContextId) {
+      throw new IllegalStateException("Creating the weight against a different index reader than this query has been built for.");
+    }
     return new W(this, toQuery.createWeight(searcher, false, 1f));
   }
 
@@ -78,7 +82,7 @@ final class GlobalOrdinalsWithScoreQuery extends Query {
            joinField.equals(other.joinField) &&
            fromQuery.equals(other.fromQuery) &&
            toQuery.equals(other.toQuery) &&
-           indexReader.equals(other.indexReader);
+           indexReaderContextId.equals(other.indexReaderContextId);
   }
 
   @Override
@@ -89,7 +93,7 @@ final class GlobalOrdinalsWithScoreQuery extends Query {
     result = 31 * result + fromQuery.hashCode();
     result = 31 * result + min;
     result = 31 * result + max;
-    result = 31 * result + indexReader.hashCode();
+    result = 31 * result + indexReaderContextId.hashCode();
     return result;
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/edafcbad/lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java
----------------------------------------------------------------------
diff --git a/lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java b/lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java
index bfc1f9b..537b224 100644
--- a/lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java
+++ b/lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java
@@ -32,7 +32,6 @@ import org.apache.lucene.document.LongPoint;
 import org.apache.lucene.index.BinaryDocValues;
 import org.apache.lucene.index.DocValues;
 import org.apache.lucene.index.DocValuesType;
-import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.MultiDocValues;
@@ -467,8 +466,7 @@ public final class JoinUtil {
                                       MultiDocValues.OrdinalMap ordinalMap,
                                       int min,
                                       int max) throws IOException {
-    IndexReader indexReader = searcher.getIndexReader();
-    int numSegments = indexReader.leaves().size();
+    int numSegments = searcher.getIndexReader().leaves().size();
     final long valueCount;
     if (numSegments == 0) {
       return new MatchNoDocsQuery("JoinUtil.createJoinQuery with no segments");
@@ -509,7 +507,7 @@ public final class JoinUtil {
         if (min <= 0 && max == Integer.MAX_VALUE) {
           GlobalOrdinalsCollector globalOrdinalsCollector = new GlobalOrdinalsCollector(joinField, ordinalMap, valueCount);
           searcher.search(rewrittenFromQuery, globalOrdinalsCollector);
-          return new GlobalOrdinalsQuery(globalOrdinalsCollector.getCollectorOrdinals(), joinField, ordinalMap, rewrittenToQuery, rewrittenFromQuery, indexReader);
+          return new GlobalOrdinalsQuery(globalOrdinalsCollector.getCollectorOrdinals(), joinField, ordinalMap, rewrittenToQuery, rewrittenFromQuery, searcher.getTopReaderContext());
         } else {
           globalOrdinalsWithScoreCollector = new GlobalOrdinalsWithScoreCollector.NoScore(joinField, ordinalMap, valueCount, min, max);
           break;
@@ -518,7 +516,7 @@ public final class JoinUtil {
         throw new IllegalArgumentException(String.format(Locale.ROOT, "Score mode %s isn't supported.", scoreMode));
     }
     searcher.search(rewrittenFromQuery, globalOrdinalsWithScoreCollector);
-    return new GlobalOrdinalsWithScoreQuery(globalOrdinalsWithScoreCollector, joinField, ordinalMap, rewrittenToQuery, rewrittenFromQuery, min, max, indexReader);
+    return new GlobalOrdinalsWithScoreQuery(globalOrdinalsWithScoreCollector, joinField, ordinalMap, rewrittenToQuery, rewrittenFromQuery, min, max, searcher.getTopReaderContext());
   }
 
 }


[52/73] [abbrv] lucene-solr:jira/solr-6203: LUCENE-7743: Avoid calling new String(String).

Posted by cp...@apache.org.
LUCENE-7743: Avoid calling new String(String).


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

Branch: refs/heads/jira/solr-6203
Commit: 390ef9af9fa081c90370f69b001cf7ec83c8f1bb
Parents: c189139
Author: Adrien Grand <jp...@gmail.com>
Authored: Tue Mar 28 15:25:16 2017 +0200
Committer: Adrien Grand <jp...@gmail.com>
Committed: Tue Mar 28 15:35:04 2017 +0200

----------------------------------------------------------------------
 lucene/CHANGES.txt                                           | 3 +++
 .../lucene/analysis/compound/hyphenation/TernaryTree.java    | 2 +-
 .../java/org/apache/lucene/analysis/cn/smart/Utility.java    | 8 ++++----
 .../src/test/org/apache/lucene/index/TestIndexWriter.java    | 2 +-
 .../test/org/apache/lucene/util/TestRamUsageEstimator.java   | 8 ++++----
 .../solr/handler/dataimport/AbstractDIHCacheTestCase.java    | 2 +-
 .../org/apache/solr/highlight/DefaultSolrHighlighter.java    | 3 +--
 solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java      | 4 ++--
 .../test/org/apache/solr/response/TestSolrQueryResponse.java | 2 +-
 .../solr/schema/TrieIntPrefixActsAsRangeQueryFieldType.java  | 2 +-
 10 files changed, 19 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/390ef9af/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index a8f24c7..92f01a9 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -90,6 +90,9 @@ Other
 * LUCENE-7751: Avoid boxing primitives only to call compareTo.
   (Daniel Jelinski via Adrien Grand)
 
+* LUCENE-7743: Never call new String(String).
+  (Daniel Jelinski via Adrien Grand)
+
 ======================= Lucene 6.5.0 =======================
 
 API Changes

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/390ef9af/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/TernaryTree.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/TernaryTree.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/TernaryTree.java
index 6aeb69b..a331d2a 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/TernaryTree.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/compound/hyphenation/TernaryTree.java
@@ -516,7 +516,7 @@ public class TernaryTree implements Cloneable {
 
     @Override
     public String nextElement() {
-      String res = new String(curkey);
+      String res = curkey;
       cur = up();
       run();
       return res;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/390ef9af/lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/Utility.java
----------------------------------------------------------------------
diff --git a/lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/Utility.java b/lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/Utility.java
index aca80e7..81ca52e 100644
--- a/lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/Utility.java
+++ b/lucene/analysis/smartcn/src/java/org/apache/lucene/analysis/cn/smart/Utility.java
@@ -24,16 +24,16 @@ import org.apache.lucene.analysis.cn.smart.hhmm.SegTokenFilter; // for javadoc
  */
 public class Utility {
 
-  public static final char[] STRING_CHAR_ARRAY = new String("\u672a##\u4e32")
+  public static final char[] STRING_CHAR_ARRAY = "\u672a##\u4e32"
       .toCharArray();
 
-  public static final char[] NUMBER_CHAR_ARRAY = new String("\u672a##\u6570")
+  public static final char[] NUMBER_CHAR_ARRAY = "\u672a##\u6570"
       .toCharArray();
 
-  public static final char[] START_CHAR_ARRAY = new String("\u59cb##\u59cb")
+  public static final char[] START_CHAR_ARRAY = "\u59cb##\u59cb"
       .toCharArray();
 
-  public static final char[] END_CHAR_ARRAY = new String("\u672b##\u672b").toCharArray();
+  public static final char[] END_CHAR_ARRAY = "\u672b##\u672b".toCharArray();
 
   /**
    * Delimiters will be filtered to this character by {@link SegTokenFilter}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/390ef9af/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
index d153ac3..660280b 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
@@ -1154,7 +1154,7 @@ public class TestIndexWriter extends LuceneTestCase {
     t.finish = true;
     t.join();
     if (t.failed) {
-      fail(new String(t.bytesLog.toString("UTF-8")));
+      fail(t.bytesLog.toString("UTF-8"));
     }
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/390ef9af/lucene/core/src/test/org/apache/lucene/util/TestRamUsageEstimator.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/util/TestRamUsageEstimator.java b/lucene/core/src/test/org/apache/lucene/util/TestRamUsageEstimator.java
index cf53c2d..34128ad 100644
--- a/lucene/core/src/test/org/apache/lucene/util/TestRamUsageEstimator.java
+++ b/lucene/core/src/test/org/apache/lucene/util/TestRamUsageEstimator.java
@@ -24,7 +24,7 @@ import java.util.Random;
 
 public class TestRamUsageEstimator extends LuceneTestCase {
   public void testSanity() {
-    assertTrue(sizeOf(new String("test string")) > shallowSizeOfInstance(String.class));
+    assertTrue(sizeOf("test string") > shallowSizeOfInstance(String.class));
 
     Holder holder = new Holder();
     holder.holder = new Holder("string2", 5000L);
@@ -37,9 +37,9 @@ public class TestRamUsageEstimator extends LuceneTestCase {
         shallowSizeOfInstance(Holder.class)         == shallowSizeOfInstance(HolderSubclass2.class));
 
     String[] strings = new String[] {
-        new String("test string"),
-        new String("hollow"), 
-        new String("catchmaster")
+        "test string",
+        "hollow",
+        "catchmaster"
     };
     assertTrue(sizeOf(strings) > shallowSizeOf(strings));
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/390ef9af/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHCacheTestCase.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHCacheTestCase.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHCacheTestCase.java
index 2ef5a91..8c7109d 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHCacheTestCase.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHCacheTestCase.java
@@ -47,7 +47,7 @@ public class AbstractDIHCacheTestCase {
   @Before
   public void setup() {
     try {
-      APPLE = new SerialClob(new String("Apples grow on trees and they are good to eat.").toCharArray());
+      APPLE = new SerialClob("Apples grow on trees and they are good to eat.".toCharArray());
     } catch (SQLException sqe) {
       Assert.fail("Could not Set up Test");
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/390ef9af/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java b/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
index 098e1f7..24304d0a 100644
--- a/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
+++ b/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
@@ -733,9 +733,8 @@ public class DefaultSolrHighlighter extends SolrHighlighter implements PluginInf
       if( alternateFieldLen <= 0 ){
         altList.add(encoder.encodeText(altText));
       } else{
-        //note: seemingly redundant new String(...) releases memory to the larger text. But is copying better?
         altList.add( len + altText.length() > alternateFieldLen ?
-            encoder.encodeText(new String(altText.substring( 0, alternateFieldLen - len ))) :
+            encoder.encodeText(altText.substring(0, alternateFieldLen - len)) :
             encoder.encodeText(altText) );
         len += altText.length();
         if( len >= alternateFieldLen ) break;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/390ef9af/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java b/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java
index 8b29d48..dc999f1 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java
@@ -272,7 +272,7 @@ public class ZkCLITest extends SolrTestCaseJ4 {
   @Test
   public void testGet() throws Exception {
     String getNode = "/getNode";
-    byte [] data = new String("getNode-data").getBytes(StandardCharsets.UTF_8);
+    byte [] data = "getNode-data".getBytes(StandardCharsets.UTF_8);
     this.zkClient.create(getNode, data, CreateMode.PERSISTENT, true);
     String[] args = new String[] {"-zkhost", zkServer.getZkAddress(), "-cmd",
         "get", getNode};
@@ -284,7 +284,7 @@ public class ZkCLITest extends SolrTestCaseJ4 {
     File tmpDir = createTempDir().toFile();
     
     String getNode = "/getFileNode";
-    byte [] data = new String("getFileNode-data").getBytes(StandardCharsets.UTF_8);
+    byte [] data = "getFileNode-data".getBytes(StandardCharsets.UTF_8);
     this.zkClient.create(getNode, data, CreateMode.PERSISTENT, true);
 
     File file = new File(tmpDir,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/390ef9af/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java b/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
index 8b17dc6..046582f 100644
--- a/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
+++ b/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
@@ -79,7 +79,7 @@ public class TestSolrQueryResponse extends LuceneTestCase {
     final SolrQueryResponse response = new SolrQueryResponse();
     assertEquals("response initial value", null, response.getResponse());
     final Object newValue = (random().nextBoolean()
-        ? (random().nextBoolean() ? new String("answer") : new Integer(42)) : null);
+        ? (random().nextBoolean() ? "answer" : Integer.valueOf(42)) : null);
     response.addResponse(newValue);
     assertEquals("response new value", newValue, response.getResponse());
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/390ef9af/solr/core/src/test/org/apache/solr/schema/TrieIntPrefixActsAsRangeQueryFieldType.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/TrieIntPrefixActsAsRangeQueryFieldType.java b/solr/core/src/test/org/apache/solr/schema/TrieIntPrefixActsAsRangeQueryFieldType.java
index a58c268..4b79975 100644
--- a/solr/core/src/test/org/apache/solr/schema/TrieIntPrefixActsAsRangeQueryFieldType.java
+++ b/solr/core/src/test/org/apache/solr/schema/TrieIntPrefixActsAsRangeQueryFieldType.java
@@ -26,7 +26,7 @@ import org.apache.solr.search.QParser;
 public class TrieIntPrefixActsAsRangeQueryFieldType extends TrieIntField {
 
   public Query getPrefixQuery(QParser parser, SchemaField sf, String termStr) {
-    return getRangeQuery(parser, sf, termStr, new String(Integer.MAX_VALUE + ""), true, false);
+    return getRangeQuery(parser, sf, termStr, Integer.MAX_VALUE + "", true, false);
   }
 
 }


[55/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10343: Update Solr default/example and test configs to use SynonymGraphFilterFactory

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/example/example-DIH/solr/solr/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/solr/conf/managed-schema b/solr/example/example-DIH/solr/solr/conf/managed-schema
index 04c85c0..f6c5103 100644
--- a/solr/example/example-DIH/solr/solr/conf/managed-schema
+++ b/solr/example/example-DIH/solr/solr/conf/managed-schema
@@ -443,14 +443,15 @@
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>
@@ -464,7 +465,8 @@
       <analyzer type="index">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -482,7 +484,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -510,7 +512,7 @@
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -526,7 +528,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -543,7 +545,7 @@
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -556,7 +558,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -580,7 +582,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/example/files/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/files/conf/managed-schema b/solr/example/files/conf/managed-schema
index ff209be..3c47c35 100644
--- a/solr/example/files/conf/managed-schema
+++ b/solr/example/files/conf/managed-schema
@@ -133,7 +133,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
       <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.EnglishPossessiveFilterFactory"/>
@@ -153,7 +153,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
       <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="0" generateNumberParts="1" splitOnCaseChange="1" generateWordParts="1" catenateAll="0" catenateWords="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
@@ -164,7 +164,7 @@
   <fieldType name="text_en_splitting_tight" class="solr.TextField" autoGeneratePhraseQueries="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" expand="false" ignoreCase="true" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" expand="false" ignoreCase="true" synonyms="synonyms.txt"/>
       <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="1" generateNumberParts="0" generateWordParts="0" catenateAll="0" catenateWords="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
@@ -175,7 +175,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" expand="false" ignoreCase="true" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" expand="false" ignoreCase="true" synonyms="synonyms.txt"/>
       <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="1" generateNumberParts="0" generateWordParts="0" catenateAll="0" catenateWords="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
@@ -246,7 +246,7 @@
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
       <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
-      <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
@@ -259,7 +259,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
       <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/server/solr/configsets/basic_configs/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/basic_configs/conf/managed-schema b/solr/server/solr/configsets/basic_configs/conf/managed-schema
index 09aaae3..360a296 100644
--- a/solr/server/solr/configsets/basic_configs/conf/managed-schema
+++ b/solr/server/solr/configsets/basic_configs/conf/managed-schema
@@ -378,14 +378,15 @@
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>
@@ -400,7 +401,8 @@
       <analyzer type="index">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -418,7 +420,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -447,7 +449,7 @@
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -463,7 +465,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -481,7 +483,7 @@
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -494,7 +496,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -520,7 +522,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema b/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema
index 0319eb0..2635a60 100644
--- a/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema
+++ b/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema
@@ -377,14 +377,15 @@
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>
@@ -399,7 +400,8 @@
       <analyzer type="index">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -417,7 +419,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -446,7 +448,7 @@
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -462,7 +464,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -480,7 +482,7 @@
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -493,7 +495,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -519,7 +521,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema b/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema
index 17dadd4..2756516 100644
--- a/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema
+++ b/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema
@@ -487,14 +487,15 @@
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>
@@ -508,7 +509,8 @@
       <analyzer type="index">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -526,7 +528,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -554,7 +556,7 @@
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -570,7 +572,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -587,7 +589,7 @@
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -600,7 +602,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -624,7 +626,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>


[61/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-7452: change terminology from _m missing-bucket to _p partial-bucket for refinement

Posted by cp...@apache.org.
SOLR-7452: change terminology from _m missing-bucket to _p partial-bucket for refinement


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

Branch: refs/heads/jira/solr-6203
Commit: 66bfdcbdbab8f294341232946a30a61898228a34
Parents: 0a689f4
Author: yonik <yo...@apache.org>
Authored: Tue Mar 28 19:52:51 2017 -0400
Committer: yonik <yo...@apache.org>
Committed: Tue Mar 28 19:52:51 2017 -0400

----------------------------------------------------------------------
 .../solr/search/facet/FacetFieldProcessor.java      |  6 +++---
 .../solr/search/facet/FacetRequestSortedMerger.java | 16 ++++++++--------
 .../solr/search/facet/TestJsonFacetRefinement.java  | 11 +++++------
 3 files changed, 16 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/66bfdcbd/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java
index 97d8607..a29e78d 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java
@@ -530,13 +530,13 @@ abstract class FacetFieldProcessor extends FacetProcessor<FacetField> {
   protected SimpleOrderedMap<Object> refineFacets() throws IOException {
     List leaves = asList(fcontext.facetInfo.get("_l"));        // We have not seen this bucket: do full faceting for this bucket, including all sub-facets
     List<List> skip = asList(fcontext.facetInfo.get("_s"));    // We have seen this bucket, so skip stats on it, and skip sub-facets except for the specified sub-facets that should calculate specified buckets.
-    List<List> missing = asList(fcontext.facetInfo.get("_m")); // We have not seen this bucket, do full faceting for this bucket, and most sub-facets... but some sub-facets should only visit specified buckets.
+    List<List> partial = asList(fcontext.facetInfo.get("_p")); // We have not seen this bucket, do full faceting for this bucket, and most sub-facets... but some sub-facets are partial and should only visit specified buckets.
 
     // For leaf refinements, we do full faceting for each leaf bucket.  Any sub-facets of these buckets will be fully evaluated.  Because of this, we should never
     // encounter leaf refinements that have sub-facets that return partial results.
 
     SimpleOrderedMap<Object> res = new SimpleOrderedMap<>();
-    List<SimpleOrderedMap> bucketList = new ArrayList<>( leaves.size() + skip.size() + missing.size() );
+    List<SimpleOrderedMap> bucketList = new ArrayList<>( leaves.size() + skip.size() + partial.size() );
     res.add("buckets", bucketList);
 
     // TODO: an alternate implementations can fill all accs at once
@@ -555,7 +555,7 @@ abstract class FacetFieldProcessor extends FacetProcessor<FacetField> {
     }
 
     // The only difference between skip and missing is the value of "skip" passed to refineBucket
-    for (List bucketAndFacetInfo : missing) {
+    for (List bucketAndFacetInfo : partial) {
       assert bucketAndFacetInfo.size() == 2;
       Object bucketVal = bucketAndFacetInfo.get(0);
       Map<String,Object> facetInfo = (Map<String, Object>) bucketAndFacetInfo.get(1);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/66bfdcbd/solr/core/src/java/org/apache/solr/search/facet/FacetRequestSortedMerger.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetRequestSortedMerger.java b/solr/core/src/java/org/apache/solr/search/facet/FacetRequestSortedMerger.java
index f55fc0f..e05064c 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetRequestSortedMerger.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetRequestSortedMerger.java
@@ -161,7 +161,7 @@ abstract class FacetRequestSortedMerger<FacetRequestT extends FacetRequestSorted
     boolean thisMissing = mcontext.bucketWasMissing(); // Was this whole facet missing (i.e. inside a bucket that was missing)?
 
     // TODO: add information in sub-shard response about dropped buckets (i.e. not all returned due to limit)
-    // If we know we've seen all the buckets from a shard, then we don't have to add to leafBuckets or missingBuckets, only skipBuckets
+    // If we know we've seen all the buckets from a shard, then we don't have to add to leafBuckets or partialBuckets, only skipBuckets
     boolean isCommandPartial = freq.returnsPartial();
     boolean returnedAllBuckets = !isCommandPartial && !thisMissing;  // did the shard return all of the possible buckets?
 
@@ -189,7 +189,7 @@ abstract class FacetRequestSortedMerger<FacetRequestT extends FacetRequestSorted
     }
 
     ArrayList<Object> leafBuckets = null;    // "_l" missing buckets specified by bucket value only (no need to specify anything further)
-    ArrayList<Object> missingBuckets = null; // "_m" missing buckets that need to specify values for partial facets.. each entry is [bucketval, subs]
+    ArrayList<Object> partialBuckets = null; // "_p" missing buckets that have a partial sub-facet that need to specify those bucket values... each entry is [bucketval, subs]
     ArrayList<Object> skipBuckets = null;    // "_s" present buckets that we need to recurse into because children facets have refinement requirements. each entry is [bucketval, subs]
 
     for (FacetBucket bucket : bucketList) {
@@ -208,12 +208,12 @@ abstract class FacetRequestSortedMerger<FacetRequestT extends FacetRequestSorted
           mcontext.setBucketWasMissing(prev);
 
           if (bucketRefinement != null) {
-            if (missingBuckets==null) missingBuckets = new ArrayList<>();
-            missingBuckets.add( Arrays.asList(bucket.bucketValue, bucketRefinement) );
+            if (partialBuckets==null) partialBuckets = new ArrayList<>();
+            partialBuckets.add( Arrays.asList(bucket.bucketValue, bucketRefinement) );
           }
         }
 
-        // if we didn't add to "_m" (missing), then we should add to "_l" (leaf missing)
+        // if we didn't add to "_p" (missing with partial sub-facets), then we should add to "_l" (missing leaf)
         if (bucketRefinement == null) {
           if (leafBuckets == null) leafBuckets = new ArrayList<>();
           leafBuckets.add(bucket.bucketValue);
@@ -231,12 +231,12 @@ abstract class FacetRequestSortedMerger<FacetRequestT extends FacetRequestSorted
     }
 
     // TODO: what if we don't need to refine any variable buckets, but we do need to contribute to numBuckets, missing, allBuckets, etc...
-    // because we were "missing".  That will be handled at a higher level (i.e. we'll be in someone's missing bucket?)
+    // because we were "partial".  That will be handled at a higher level (i.e. we'll be in someone's missing bucket?)
     // TODO: test with a sub-facet with a limit of 0 and something like a missing bucket
-    if (leafBuckets != null || missingBuckets != null || skipBuckets != null) {
+    if (leafBuckets != null || partialBuckets != null || skipBuckets != null) {
       refinement = new HashMap<>(3);
       if (leafBuckets != null) refinement.put("_l",leafBuckets);
-      if (missingBuckets != null) refinement.put("_m", missingBuckets);
+      if (partialBuckets != null) refinement.put("_p", partialBuckets);
       if (skipBuckets != null) refinement.put("_s", skipBuckets);
     }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/66bfdcbd/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacetRefinement.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacetRefinement.java b/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacetRefinement.java
index 5c86347..b4b0220 100644
--- a/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacetRefinement.java
+++ b/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacetRefinement.java
@@ -36,7 +36,6 @@ import org.noggit.ObjectBuilder;
 public class TestJsonFacetRefinement extends SolrTestCaseHS {
 
   private static SolrInstances servers;  // for distributed testing
-  private static int origTableSize;
 
   @BeforeClass
   public static void beforeTests() throws Exception {
@@ -209,13 +208,13 @@ public class TestJsonFacetRefinement extends SolrTestCaseHS {
             "}"
     );
 
-    // for testing missing _m, we need a partial facet within a partial facet
+    // for testing partial _p, we need a partial facet within a partial facet
     doTestRefine("{top:{type:terms, field:Afield, refine:true, limit:1, facet:{x : {type:terms, field:X, limit:1, refine:true} } } }",
         "{top: {buckets:[{val:'A', count:2, x:{buckets:[{val:x1, count:5},{val:x2, count:3}]} } ] } }",
         "{top: {buckets:[{val:'B', count:1, x:{buckets:[{val:x2, count:4},{val:x3, count:2}]} } ] } }",
         null,
         "=={top: {" +
-            "_m:[  ['A' , {x:{_l:[x1]}} ]  ]" +
+            "_p:[  ['A' , {x:{_l:[x1]}} ]  ]" +
             "    }  " +
             "}"
     );
@@ -329,7 +328,7 @@ public class TestJsonFacetRefinement extends SolrTestCaseHS {
             "}"
     );
 
-    // test that sibling facets and stats are included for _m buckets, but skipped for _s buckets
+    // test that sibling facets and stats are included for _p buckets, but skipped for _s buckets
     client.testJQ(params(p, "q", "*:*",
         "json.facet", "{" +
             " ab :{type:terms, field:${cat_s}, limit:1, overrequest:0, refine:true,  facet:{  xy:{type:terms, field:${xy_s}, limit:1, overrequest:0, refine:true}, qq:{query:'*:*'},ww:'sum(${num_d})'  }}" +
@@ -339,9 +338,9 @@ public class TestJsonFacetRefinement extends SolrTestCaseHS {
             "}"
         )
         , "facets=={ count:8" +
-            ", ab:{ buckets:[  {val:A, count:4, xy:{buckets:[ {val:X,count:3}]}    ,qq:{count:4}, ww:4.0 }]  }" +  // make sure qq and ww are included for _m buckets
+            ", ab:{ buckets:[  {val:A, count:4, xy:{buckets:[ {val:X,count:3}]}    ,qq:{count:4}, ww:4.0 }]  }" +  // make sure qq and ww are included for _p buckets
             ", allf:{ buckets:[ {count:8, val:all, cat:{buckets:[{val:A,count:4}]} ,qq:{count:8}, ww:2.0 }]  }" +  // make sure qq and ww are excluded (not calculated again in another phase) for _s buckets
-            ", ab2:{ buckets:[  {val:A, count:4, xy:{buckets:[ {val:X,count:3}]}    ,qq:{count:4}, ww:4.0 }]  }" +  // make sure qq and ww are included for _m buckets
+            ", ab2:{ buckets:[  {val:A, count:4, xy:{buckets:[ {val:X,count:3}]}    ,qq:{count:4}, ww:4.0 }]  }" +  // make sure qq and ww are included for _p buckets
             ", allf2:{ buckets:[ {count:8, val:all, cat:{buckets:[{val:A,count:4}]} ,qq:{count:8}, ww:2.0 }]  }" +  // make sure qq and ww are excluded (not calculated again in another phase) for _s buckets
             "}"
     );


[20/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ar.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ar.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ar.txt
deleted file mode 100644
index 046829d..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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 \u0623 and \u0627
-\u0645\u0646
-\u0648\u0645\u0646
-\u0645\u0646\u0647\u0627
-\u0645\u0646\u0647
-\u0641\u064a
-\u0648\u0641\u064a
-\u0641\u064a\u0647\u0627
-\u0641\u064a\u0647
-\u0648
-\u0641
-\u062b\u0645
-\u0627\u0648
-\u0623\u0648
-\u0628
-\u0628\u0647\u0627
-\u0628\u0647
-\u0627
-\u0623
-\u0627\u0649
-\u0627\u064a
-\u0623\u064a
-\u0623\u0649
-\u0644\u0627
-\u0648\u0644\u0627
-\u0627\u0644\u0627
-\u0623\u0644\u0627
-\u0625\u0644\u0627
-\u0644\u0643\u0646
-\u0645\u0627
-\u0648\u0645\u0627
-\u0643\u0645\u0627
-\u0641\u0645\u0627
-\u0639\u0646
-\u0645\u0639
-\u0627\u0630\u0627
-\u0625\u0630\u0627
-\u0627\u0646
-\u0623\u0646
-\u0625\u0646
-\u0627\u0646\u0647\u0627
-\u0623\u0646\u0647\u0627
-\u0625\u0646\u0647\u0627
-\u0627\u0646\u0647
-\u0623\u0646\u0647
-\u0625\u0646\u0647
-\u0628\u0627\u0646
-\u0628\u0623\u0646
-\u0641\u0627\u0646
-\u0641\u0623\u0646
-\u0648\u0627\u0646
-\u0648\u0623\u0646
-\u0648\u0625\u0646
-\u0627\u0644\u062a\u0649
-\u0627\u0644\u062a\u064a
-\u0627\u0644\u0630\u0649
-\u0627\u0644\u0630\u064a
-\u0627\u0644\u0630\u064a\u0646
-\u0627\u0644\u0649
-\u0627\u0644\u064a
-\u0625\u0644\u0649
-\u0625\u0644\u064a
-\u0639\u0644\u0649
-\u0639\u0644\u064a\u0647\u0627
-\u0639\u0644\u064a\u0647
-\u0627\u0645\u0627
-\u0623\u0645\u0627
-\u0625\u0645\u0627
-\u0627\u064a\u0636\u0627
-\u0623\u064a\u0636\u0627
-\u0643\u0644
-\u0648\u0643\u0644
-\u0644\u0645
-\u0648\u0644\u0645
-\u0644\u0646
-\u0648\u0644\u0646
-\u0647\u0649
-\u0647\u064a
-\u0647\u0648
-\u0648\u0647\u0649
-\u0648\u0647\u064a
-\u0648\u0647\u0648
-\u0641\u0647\u0649
-\u0641\u0647\u064a
-\u0641\u0647\u0648
-\u0627\u0646\u062a
-\u0623\u0646\u062a
-\u0644\u0643
-\u0644\u0647\u0627
-\u0644\u0647
-\u0647\u0630\u0647
-\u0647\u0630\u0627
-\u062a\u0644\u0643
-\u0630\u0644\u0643
-\u0647\u0646\u0627\u0643
-\u0643\u0627\u0646\u062a
-\u0643\u0627\u0646
-\u064a\u0643\u0648\u0646
-\u062a\u0643\u0648\u0646
-\u0648\u0643\u0627\u0646\u062a
-\u0648\u0643\u0627\u0646
-\u063a\u064a\u0631
-\u0628\u0639\u0636
-\u0642\u062f
-\u0646\u062d\u0648
-\u0628\u064a\u0646
-\u0628\u064a\u0646\u0645\u0627
-\u0645\u0646\u0630
-\u0636\u0645\u0646
-\u062d\u064a\u062b
-\u0627\u0644\u0627\u0646
-\u0627\u0644\u0622\u0646
-\u062e\u0644\u0627\u0644
-\u0628\u0639\u062f
-\u0642\u0628\u0644
-\u062d\u062a\u0649
-\u0639\u0646\u062f
-\u0639\u0646\u062f\u0645\u0627
-\u0644\u062f\u0649
-\u062c\u0645\u064a\u0639

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_bg.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_bg.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_bg.txt
deleted file mode 100644
index 1ae4ba2..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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
-\u0430
-\u0430\u0437
-\u0430\u043a\u043e
-\u0430\u043b\u0430
-\u0431\u0435
-\u0431\u0435\u0437
-\u0431\u0435\u0448\u0435
-\u0431\u0438
-\u0431\u0438\u043b
-\u0431\u0438\u043b\u0430
-\u0431\u0438\u043b\u0438
-\u0431\u0438\u043b\u043e
-\u0431\u043b\u0438\u0437\u043e
-\u0431\u044a\u0434\u0430\u0442
-\u0431\u044a\u0434\u0435
-\u0431\u044f\u0445\u0430
-\u0432
-\u0432\u0430\u0441
-\u0432\u0430\u0448
-\u0432\u0430\u0448\u0430
-\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e
-\u0432\u0435\u0447\u0435
-\u0432\u0437\u0435\u043c\u0430
-\u0432\u0438
-\u0432\u0438\u0435
-\u0432\u0438\u043d\u0430\u0433\u0438
-\u0432\u0441\u0435
-\u0432\u0441\u0435\u043a\u0438
-\u0432\u0441\u0438\u0447\u043a\u0438
-\u0432\u0441\u0438\u0447\u043a\u043e
-\u0432\u0441\u044f\u043a\u0430
-\u0432\u044a\u0432
-\u0432\u044a\u043f\u0440\u0435\u043a\u0438
-\u0432\u044a\u0440\u0445\u0443
-\u0433
-\u0433\u0438
-\u0433\u043b\u0430\u0432\u043d\u043e
-\u0433\u043e
-\u0434
-\u0434\u0430
-\u0434\u0430\u043b\u0438
-\u0434\u043e
-\u0434\u043e\u043a\u0430\u0442\u043e
-\u0434\u043e\u043a\u043e\u0433\u0430
-\u0434\u043e\u0440\u0438
-\u0434\u043e\u0441\u0435\u0433\u0430
-\u0434\u043e\u0441\u0442\u0430
-\u0435
-\u0435\u0434\u0432\u0430
-\u0435\u0434\u0438\u043d
-\u0435\u0442\u043e
-\u0437\u0430
-\u0437\u0430\u0434
-\u0437\u0430\u0435\u0434\u043d\u043e
-\u0437\u0430\u0440\u0430\u0434\u0438
-\u0437\u0430\u0441\u0435\u0433\u0430
-\u0437\u0430\u0442\u043e\u0432\u0430
-\u0437\u0430\u0449\u043e
-\u0437\u0430\u0449\u043e\u0442\u043e
-\u0438
-\u0438\u0437
-\u0438\u043b\u0438
-\u0438\u043c
-\u0438\u043c\u0430
-\u0438\u043c\u0430\u0442
-\u0438\u0441\u043a\u0430
-\u0439
-\u043a\u0430\u0437\u0430
-\u043a\u0430\u043a
-\u043a\u0430\u043a\u0432\u0430
-\u043a\u0430\u043a\u0432\u043e
-\u043a\u0430\u043a\u0442\u043e
-\u043a\u0430\u043a\u044a\u0432
-\u043a\u0430\u0442\u043e
-\u043a\u043e\u0433\u0430
-\u043a\u043e\u0433\u0430\u0442\u043e
-\u043a\u043e\u0435\u0442\u043e
-\u043a\u043e\u0438\u0442\u043e
-\u043a\u043e\u0439
-\u043a\u043e\u0439\u0442\u043e
-\u043a\u043e\u043b\u043a\u043e
-\u043a\u043e\u044f\u0442\u043e
-\u043a\u044a\u0434\u0435
-\u043a\u044a\u0434\u0435\u0442\u043e
-\u043a\u044a\u043c
-\u043b\u0438
-\u043c
-\u043c\u0435
-\u043c\u0435\u0436\u0434\u0443
-\u043c\u0435\u043d
-\u043c\u0438
-\u043c\u043d\u043e\u0437\u0438\u043d\u0430
-\u043c\u043e\u0433\u0430
-\u043c\u043e\u0433\u0430\u0442
-\u043c\u043e\u0436\u0435
-\u043c\u043e\u043b\u044f
-\u043c\u043e\u043c\u0435\u043d\u0442\u0430
-\u043c\u0443
-\u043d
-\u043d\u0430
-\u043d\u0430\u0434
-\u043d\u0430\u0437\u0430\u0434
-\u043d\u0430\u0439
-\u043d\u0430\u043f\u0440\u0430\u0432\u0438
-\u043d\u0430\u043f\u0440\u0435\u0434
-\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440
-\u043d\u0430\u0441
-\u043d\u0435
-\u043d\u0435\u0433\u043e
-\u043d\u0435\u044f
-\u043d\u0438
-\u043d\u0438\u0435
-\u043d\u0438\u043a\u043e\u0439
-\u043d\u0438\u0442\u043e
-\u043d\u043e
-\u043d\u044f\u043a\u043e\u0438
-\u043d\u044f\u043a\u043e\u0439
-\u043d\u044f\u043c\u0430
-\u043e\u0431\u0430\u0447\u0435
-\u043e\u043a\u043e\u043b\u043e
-\u043e\u0441\u0432\u0435\u043d
-\u043e\u0441\u043e\u0431\u0435\u043d\u043e
-\u043e\u0442
-\u043e\u0442\u0433\u043e\u0440\u0435
-\u043e\u0442\u043d\u043e\u0432\u043e
-\u043e\u0449\u0435
-\u043f\u0430\u043a
-\u043f\u043e
-\u043f\u043e\u0432\u0435\u0447\u0435
-\u043f\u043e\u0432\u0435\u0447\u0435\u0442\u043e
-\u043f\u043e\u0434
-\u043f\u043e\u043d\u0435
-\u043f\u043e\u0440\u0430\u0434\u0438
-\u043f\u043e\u0441\u043b\u0435
-\u043f\u043e\u0447\u0442\u0438
-\u043f\u0440\u0430\u0432\u0438
-\u043f\u0440\u0435\u0434
-\u043f\u0440\u0435\u0434\u0438
-\u043f\u0440\u0435\u0437
-\u043f\u0440\u0438
-\u043f\u044a\u043a
-\u043f\u044a\u0440\u0432\u043e
-\u0441
-\u0441\u0430
-\u0441\u0430\u043c\u043e
-\u0441\u0435
-\u0441\u0435\u0433\u0430
-\u0441\u0438
-\u0441\u043a\u043e\u0440\u043e
-\u0441\u043b\u0435\u0434
-\u0441\u043c\u0435
-\u0441\u043f\u043e\u0440\u0435\u0434
-\u0441\u0440\u0435\u0434
-\u0441\u0440\u0435\u0449\u0443
-\u0441\u0442\u0435
-\u0441\u044a\u043c
-\u0441\u044a\u0441
-\u0441\u044a\u0449\u043e
-\u0442
-\u0442\u0430\u0437\u0438
-\u0442\u0430\u043a\u0430
-\u0442\u0430\u043a\u0438\u0432\u0430
-\u0442\u0430\u043a\u044a\u0432
-\u0442\u0430\u043c
-\u0442\u0432\u043e\u0439
-\u0442\u0435
-\u0442\u0435\u0437\u0438
-\u0442\u0438
-\u0442\u043d
-\u0442\u043e
-\u0442\u043e\u0432\u0430
-\u0442\u043e\u0433\u0430\u0432\u0430
-\u0442\u043e\u0437\u0438
-\u0442\u043e\u0439
-\u0442\u043e\u043b\u043a\u043e\u0432\u0430
-\u0442\u043e\u0447\u043d\u043e
-\u0442\u0440\u044f\u0431\u0432\u0430
-\u0442\u0443\u043a
-\u0442\u044a\u0439
-\u0442\u044f
-\u0442\u044f\u0445
-\u0443
-\u0445\u0430\u0440\u0435\u0441\u0432\u0430
-\u0447
-\u0447\u0435
-\u0447\u0435\u0441\u0442\u043e
-\u0447\u0440\u0435\u0437
-\u0449\u0435
-\u0449\u043e\u043c
-\u044f

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ca.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ca.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ca.txt
deleted file mode 100644
index 3da65de..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_cz.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_cz.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_cz.txt
deleted file mode 100644
index 53c6097..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_cz.txt
+++ /dev/null
@@ -1,172 +0,0 @@
-a
-s
-k
-o
-i
-u
-v
-z
-dnes
-cz
-t�mto
-bude\u0161
-budem
-byli
-jse\u0161
-m\u016fj
-sv�m
-ta
-tomto
-tohle
-tuto
-tyto
-jej
-zda
-pro\u010d
-m�te
-tato
-kam
-tohoto
-kdo
-kte\u0159�
-mi
-n�m
-tom
-tomuto
-m�t
-nic
-proto
-kterou
-byla
-toho
-proto\u017ee
-asi
-ho
-na\u0161i
-napi\u0161te
-re
-co\u017e
-t�m
-tak\u017ee
-sv�ch
-jej�
-sv�mi
-jste
-aj
-tu
-tedy
-teto
-bylo
-kde
-ke
-prav�
-ji
-nad
-nejsou
-\u010di
-pod
-t�ma
-mezi
-p\u0159es
-ty
-pak
-v�m
-ani
-kdy\u017e
-v\u0161ak
-neg
-jsem
-tento
-\u010dl�nku
-\u010dl�nky
-aby
-jsme
-p\u0159ed
-pta
-jejich
-byl
-je\u0161t\u011b
-a\u017e
-bez
-tak�
-pouze
-prvn�
-va\u0161e
-kter�
-n�s
-nov�
-tipy
-pokud
-m\u016f\u017ee
-strana
-jeho
-sv�
-jin�
-zpr�vy
-nov�
-nen�
-v�s
-jen
-podle
-zde
-u\u017e
-b�t
-v�ce
-bude
-ji\u017e
-ne\u017e
-kter�
-by
-kter�
-co
-nebo
-ten
-tak
-m�
-p\u0159i
-od
-po
-jsou
-jak
-dal\u0161�
-ale
-si
-se
-ve
-to
-jako
-za
-zp\u011bt
-ze
-do
-pro
-je
-na
-atd
-atp
-jakmile
-p\u0159i\u010dem\u017e
-j�
-on
-ona
-ono
-oni
-ony
-my
-vy
-j�
-ji
-m\u011b
-mne
-jemu
-tomu
-t\u011bm
-t\u011bmu
-n\u011bmu
-n\u011bmu\u017e
-jeho\u017e
-j�\u017e
-jeliko\u017e
-je\u017e
-jako\u017e
-na\u010de\u017e

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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_el.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_el.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_el.txt
deleted file mode 100644
index 232681f..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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 '\u03c3' instead of '\u03c2' 
-\u03bf
-\u03b7
-\u03c4\u03bf
-\u03bf\u03b9
-\u03c4\u03b1
-\u03c4\u03bf\u03c5
-\u03c4\u03b7\u03c3
-\u03c4\u03c9\u03bd
-\u03c4\u03bf\u03bd
-\u03c4\u03b7\u03bd
-\u03ba\u03b1\u03b9 
-\u03ba\u03b9
-\u03ba
-\u03b5\u03b9\u03bc\u03b1\u03b9
-\u03b5\u03b9\u03c3\u03b1\u03b9
-\u03b5\u03b9\u03bd\u03b1\u03b9
-\u03b5\u03b9\u03bc\u03b1\u03c3\u03c4\u03b5
-\u03b5\u03b9\u03c3\u03c4\u03b5
-\u03c3\u03c4\u03bf
-\u03c3\u03c4\u03bf\u03bd
-\u03c3\u03c4\u03b7
-\u03c3\u03c4\u03b7\u03bd
-\u03bc\u03b1
-\u03b1\u03bb\u03bb\u03b1
-\u03b1\u03c0\u03bf
-\u03b3\u03b9\u03b1
-\u03c0\u03c1\u03bf\u03c3
-\u03bc\u03b5
-\u03c3\u03b5
-\u03c9\u03c3
-\u03c0\u03b1\u03c1\u03b1
-\u03b1\u03bd\u03c4\u03b9
-\u03ba\u03b1\u03c4\u03b1
-\u03bc\u03b5\u03c4\u03b1
-\u03b8\u03b1
-\u03bd\u03b1
-\u03b4\u03b5
-\u03b4\u03b5\u03bd
-\u03bc\u03b7
-\u03bc\u03b7\u03bd
-\u03b5\u03c0\u03b9
-\u03b5\u03bd\u03c9
-\u03b5\u03b1\u03bd
-\u03b1\u03bd
-\u03c4\u03bf\u03c4\u03b5
-\u03c0\u03bf\u03c5
-\u03c0\u03c9\u03c3
-\u03c0\u03bf\u03b9\u03bf\u03c3
-\u03c0\u03bf\u03b9\u03b1
-\u03c0\u03bf\u03b9\u03bf
-\u03c0\u03bf\u03b9\u03bf\u03b9
-\u03c0\u03bf\u03b9\u03b5\u03c3
-\u03c0\u03bf\u03b9\u03c9\u03bd
-\u03c0\u03bf\u03b9\u03bf\u03c5\u03c3
-\u03b1\u03c5\u03c4\u03bf\u03c3
-\u03b1\u03c5\u03c4\u03b7
-\u03b1\u03c5\u03c4\u03bf
-\u03b1\u03c5\u03c4\u03bf\u03b9
-\u03b1\u03c5\u03c4\u03c9\u03bd
-\u03b1\u03c5\u03c4\u03bf\u03c5\u03c3
-\u03b1\u03c5\u03c4\u03b5\u03c3
-\u03b1\u03c5\u03c4\u03b1
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03c3
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b7
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03b9
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b5\u03c3
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03b1
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03c9\u03bd
-\u03b5\u03ba\u03b5\u03b9\u03bd\u03bf\u03c5\u03c3
-\u03bf\u03c0\u03c9\u03c3
-\u03bf\u03bc\u03c9\u03c3
-\u03b9\u03c3\u03c9\u03c3
-\u03bf\u03c3\u03bf
-\u03bf\u03c4\u03b9

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_en.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_en.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_en.txt
deleted file mode 100644
index 2c164c0..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_eu.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_eu.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_eu.txt
deleted file mode 100644
index 25f1db9..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_fa.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_fa.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_fa.txt
deleted file mode 100644
index 723641c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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 '\u064a' instead of '\u06cc'
-\u0627\u0646\u0627\u0646
-\u0646\u062f\u0627\u0634\u062a\u0647
-\u0633\u0631\u0627\u0633\u0631
-\u062e\u064a\u0627\u0647
-\u0627\u064a\u0634\u0627\u0646
-\u0648\u064a
-\u062a\u0627\u0643\u0646\u0648\u0646
-\u0628\u064a\u0634\u062a\u0631\u064a
-\u062f\u0648\u0645
-\u067e\u0633
-\u0646\u0627\u0634\u064a
-\u0648\u06af\u0648
-\u064a\u0627
-\u062f\u0627\u0634\u062a\u0646\u062f
-\u0633\u067e\u0633
-\u0647\u0646\u06af\u0627\u0645
-\u0647\u0631\u06af\u0632
-\u067e\u0646\u062c
-\u0646\u0634\u0627\u0646
-\u0627\u0645\u0633\u0627\u0644
-\u062f\u064a\u06af\u0631
-\u06af\u0631\u0648\u0647\u064a
-\u0634\u062f\u0646\u062f
-\u0686\u0637\u0648\u0631
-\u062f\u0647
-\u0648
-\u062f\u0648
-\u0646\u062e\u0633\u062a\u064a\u0646
-\u0648\u0644\u064a
-\u0686\u0631\u0627
-\u0686\u0647
-\u0648\u0633\u0637
-\u0647
-\u0643\u062f\u0627\u0645
-\u0642\u0627\u0628\u0644
-\u064a\u0643
-\u0631\u0641\u062a
-\u0647\u0641\u062a
-\u0647\u0645\u0686\u0646\u064a\u0646
-\u062f\u0631
-\u0647\u0632\u0627\u0631
-\u0628\u0644\u0647
-\u0628\u0644\u064a
-\u0634\u0627\u064a\u062f
-\u0627\u0645\u0627
-\u0634\u0646\u0627\u0633\u064a
-\u06af\u0631\u0641\u062a\u0647
-\u062f\u0647\u062f
-\u062f\u0627\u0634\u062a\u0647
-\u062f\u0627\u0646\u0633\u062a
-\u062f\u0627\u0634\u062a\u0646
-\u062e\u0648\u0627\u0647\u064a\u0645
-\u0645\u064a\u0644\u064a\u0627\u0631\u062f
-\u0648\u0642\u062a\u064a\u0643\u0647
-\u0627\u0645\u062f
-\u062e\u0648\u0627\u0647\u062f
-\u062c\u0632
-\u0627\u0648\u0631\u062f\u0647
-\u0634\u062f\u0647
-\u0628\u0644\u0643\u0647
-\u062e\u062f\u0645\u0627\u062a
-\u0634\u062f\u0646
-\u0628\u0631\u062e\u064a
-\u0646\u0628\u0648\u062f
-\u0628\u0633\u064a\u0627\u0631\u064a
-\u062c\u0644\u0648\u06af\u064a\u0631\u064a
-\u062d\u0642
-\u0643\u0631\u062f\u0646\u062f
-\u0646\u0648\u0639\u064a
-\u0628\u0639\u0631\u064a
-\u0646\u0643\u0631\u062f\u0647
-\u0646\u0638\u064a\u0631
-\u0646\u0628\u0627\u064a\u062f
-\u0628\u0648\u062f\u0647
-\u0628\u0648\u062f\u0646
-\u062f\u0627\u062f
-\u0627\u0648\u0631\u062f
-\u0647\u0633\u062a
-\u062c\u0627\u064a\u064a
-\u0634\u0648\u062f
-\u062f\u0646\u0628\u0627\u0644
-\u062f\u0627\u062f\u0647
-\u0628\u0627\u064a\u062f
-\u0633\u0627\u0628\u0642
-\u0647\u064a\u0686
-\u0647\u0645\u0627\u0646
-\u0627\u0646\u062c\u0627
-\u0643\u0645\u062a\u0631
-\u0643\u062c\u0627\u0633\u062a
-\u06af\u0631\u062f\u062f
-\u0643\u0633\u064a
-\u062a\u0631
-\u0645\u0631\u062f\u0645
-\u062a\u0627\u0646
-\u062f\u0627\u062f\u0646
-\u0628\u0648\u062f\u0646\u062f
-\u0633\u0631\u064a
-\u062c\u062f\u0627
-\u0646\u062f\u0627\u0631\u0646\u062f
-\u0645\u06af\u0631
-\u064a\u0643\u062f\u064a\u06af\u0631
-\u062f\u0627\u0631\u062f
-\u062f\u0647\u0646\u062f
-\u0628\u0646\u0627\u0628\u0631\u0627\u064a\u0646
-\u0647\u0646\u06af\u0627\u0645\u064a
-\u0633\u0645\u062a
-\u062c\u0627
-\u0627\u0646\u0686\u0647
-\u062e\u0648\u062f
-\u062f\u0627\u062f\u0646\u062f
-\u0632\u064a\u0627\u062f
-\u062f\u0627\u0631\u0646\u062f
-\u0627\u062b\u0631
-\u0628\u062f\u0648\u0646
-\u0628\u0647\u062a\u0631\u064a\u0646
-\u0628\u064a\u0634\u062a\u0631
-\u0627\u0644\u0628\u062a\u0647
-\u0628\u0647
-\u0628\u0631\u0627\u0633\u0627\u0633
-\u0628\u064a\u0631\u0648\u0646
-\u0643\u0631\u062f
-\u0628\u0639\u0636\u064a
-\u06af\u0631\u0641\u062a
-\u062a\u0648\u064a
-\u0627\u064a
-\u0645\u064a\u0644\u064a\u0648\u0646
-\u0627\u0648
-\u062c\u0631\u064a\u0627\u0646
-\u062a\u0648\u0644
-\u0628\u0631
-\u0645\u0627\u0646\u0646\u062f
-\u0628\u0631\u0627\u0628\u0631
-\u0628\u0627\u0634\u064a\u0645
-\u0645\u062f\u062a\u064a
-\u06af\u0648\u064a\u0646\u062f
-\u0627\u0643\u0646\u0648\u0646
-\u062a\u0627
-\u062a\u0646\u0647\u0627
-\u062c\u062f\u064a\u062f
-\u0686\u0646\u062f
-\u0628\u064a
-\u0646\u0634\u062f\u0647
-\u0643\u0631\u062f\u0646
-\u0643\u0631\u062f\u0645
-\u06af\u0648\u064a\u062f
-\u0643\u0631\u062f\u0647
-\u0643\u0646\u064a\u0645
-\u0646\u0645\u064a
-\u0646\u0632\u062f
-\u0631\u0648\u064a
-\u0642\u0635\u062f
-\u0641\u0642\u0637
-\u0628\u0627\u0644\u0627\u064a
-\u062f\u064a\u06af\u0631\u0627\u0646
-\u0627\u064a\u0646
-\u062f\u064a\u0631\u0648\u0632
-\u062a\u0648\u0633\u0637
-\u0633\u0648\u0645
-\u0627\u064a\u0645
-\u062f\u0627\u0646\u0646\u062f
-\u0633\u0648\u064a
-\u0627\u0633\u062a\u0641\u0627\u062f\u0647
-\u0634\u0645\u0627
-\u0643\u0646\u0627\u0631
-\u062f\u0627\u0631\u064a\u0645
-\u0633\u0627\u062e\u062a\u0647
-\u0637\u0648\u0631
-\u0627\u0645\u062f\u0647
-\u0631\u0641\u062a\u0647
-\u0646\u062e\u0633\u062a
-\u0628\u064a\u0633\u062a
-\u0646\u0632\u062f\u064a\u0643
-\u0637\u064a
-\u0643\u0646\u064a\u062f
-\u0627\u0632
-\u0627\u0646\u0647\u0627
-\u062a\u0645\u0627\u0645\u064a
-\u062f\u0627\u0634\u062a
-\u064a\u0643\u064a
-\u0637\u0631\u064a\u0642
-\u0627\u0634
-\u0686\u064a\u0633\u062a
-\u0631\u0648\u0628
-\u0646\u0645\u0627\u064a\u062f
-\u06af\u0641\u062a
-\u0686\u0646\u062f\u064a\u0646
-\u0686\u064a\u0632\u064a
-\u062a\u0648\u0627\u0646\u062f
-\u0627\u0645
-\u0627\u064a\u0627
-\u0628\u0627
-\u0627\u0646
-\u0627\u064a\u062f
-\u062a\u0631\u064a\u0646
-\u0627\u064a\u0646\u0643\u0647
-\u062f\u064a\u06af\u0631\u064a
-\u0631\u0627\u0647
-\u0647\u0627\u064a\u064a
-\u0628\u0631\u0648\u0632
-\u0647\u0645\u0686\u0646\u0627\u0646
-\u067e\u0627\u0639\u064a\u0646
-\u0643\u0633
-\u062d\u062f\u0648\u062f
-\u0645\u062e\u062a\u0644\u0641
-\u0645\u0642\u0627\u0628\u0644
-\u0686\u064a\u0632
-\u06af\u064a\u0631\u062f
-\u0646\u062f\u0627\u0631\u062f
-\u0636\u062f
-\u0647\u0645\u0686\u0648\u0646
-\u0633\u0627\u0632\u064a
-\u0634\u0627\u0646
-\u0645\u0648\u0631\u062f
-\u0628\u0627\u0631\u0647
-\u0645\u0631\u0633\u064a
-\u062e\u0648\u064a\u0634
-\u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631
-\u0686\u0648\u0646
-\u062e\u0627\u0631\u062c
-\u0634\u0634
-\u0647\u0646\u0648\u0632
-\u062a\u062d\u062a
-\u0636\u0645\u0646
-\u0647\u0633\u062a\u064a\u0645
-\u06af\u0641\u062a\u0647
-\u0641\u0643\u0631
-\u0628\u0633\u064a\u0627\u0631
-\u067e\u064a\u0634
-\u0628\u0631\u0627\u064a
-\u0631\u0648\u0632\u0647\u0627\u064a
-\u0627\u0646\u0643\u0647
-\u0646\u062e\u0648\u0627\u0647\u062f
-\u0628\u0627\u0644\u0627
-\u0643\u0644
-\u0648\u0642\u062a\u064a
-\u0643\u064a
-\u0686\u0646\u064a\u0646
-\u0643\u0647
-\u06af\u064a\u0631\u064a
-\u0646\u064a\u0633\u062a
-\u0627\u0633\u062a
-\u0643\u062c\u0627
-\u0643\u0646\u062f
-\u0646\u064a\u0632
-\u064a\u0627\u0628\u062f
-\u0628\u0646\u062f\u064a
-\u062d\u062a\u064a
-\u062a\u0648\u0627\u0646\u0646\u062f
-\u0639\u0642\u0628
-\u062e\u0648\u0627\u0633\u062a
-\u0643\u0646\u0646\u062f
-\u0628\u064a\u0646
-\u062a\u0645\u0627\u0645
-\u0647\u0645\u0647
-\u0645\u0627
-\u0628\u0627\u0634\u0646\u062f
-\u0645\u062b\u0644
-\u0634\u062f
-\u0627\u0631\u064a
-\u0628\u0627\u0634\u062f
-\u0627\u0631\u0647
-\u0637\u0628\u0642
-\u0628\u0639\u062f
-\u0627\u06af\u0631
-\u0635\u0648\u0631\u062a
-\u063a\u064a\u0631
-\u062c\u0627\u064a
-\u0628\u064a\u0634
-\u0631\u064a\u0632\u064a
-\u0627\u0646\u062f
-\u0632\u064a\u0631\u0627
-\u0686\u06af\u0648\u0646\u0647
-\u0628\u0627\u0631
-\u0644\u0637\u0641\u0627
-\u0645\u064a
-\u062f\u0631\u0628\u0627\u0631\u0647
-\u0645\u0646
-\u062f\u064a\u062f\u0647
-\u0647\u0645\u064a\u0646
-\u06af\u0630\u0627\u0631\u064a
-\u0628\u0631\u062f\u0627\u0631\u064a
-\u0639\u0644\u062a
-\u06af\u0630\u0627\u0634\u062a\u0647
-\u0647\u0645
-\u0641\u0648\u0642
-\u0646\u0647
-\u0647\u0627
-\u0634\u0648\u0646\u062f
-\u0627\u0628\u0627\u062f
-\u0647\u0645\u0648\u0627\u0631\u0647
-\u0647\u0631
-\u0627\u0648\u0644
-\u062e\u0648\u0627\u0647\u0646\u062f
-\u0686\u0647\u0627\u0631
-\u0646\u0627\u0645
-\u0627\u0645\u0631\u0648\u0632
-\u0645\u0627\u0646
-\u0647\u0627\u064a
-\u0642\u0628\u0644
-\u0643\u0646\u0645
-\u0633\u0639\u064a
-\u062a\u0627\u0632\u0647
-\u0631\u0627
-\u0647\u0633\u062a\u0646\u062f
-\u0632\u064a\u0631
-\u062c\u0644\u0648\u064a
-\u0639\u0646\u0648\u0627\u0646
-\u0628\u0648\u062f

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_fr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_fr.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_fr.txt
deleted file mode 100644
index c00837ea..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_fr.txt
+++ /dev/null
@@ -1,183 +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.
-
- | 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
-cel�          |  that
-cet            |  this
-cette          |  this
-ici            |  here
-ils            |  they
-les            |  the (pl)
-leurs          |  their (pl)
-quel           |  which
-quels          |  which
-quelle         |  which
-quelles        |  which
-sans           |  without
-soi            |  oneself
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ga.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ga.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ga.txt
deleted file mode 100644
index 9ff88d7..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_gl.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_gl.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_gl.txt
deleted file mode 100644
index d8760b1..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hi.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hi.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hi.txt
deleted file mode 100644
index 86286bb..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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. 
-\u0905\u0902\u0926\u0930
-\u0905\u0924
-\u0905\u092a\u0928\u093e
-\u0905\u092a\u0928\u0940
-\u0905\u092a\u0928\u0947
-\u0905\u092d\u0940
-\u0906\u0926\u093f
-\u0906\u092a
-\u0907\u0924\u094d\u092f\u093e\u0926\u093f
-\u0907\u0928 
-\u0907\u0928\u0915\u093e
-\u0907\u0928\u094d\u0939\u0940\u0902
-\u0907\u0928\u094d\u0939\u0947\u0902
-\u0907\u0928\u094d\u0939\u094b\u0902
-\u0907\u0938
-\u0907\u0938\u0915\u093e
-\u0907\u0938\u0915\u0940
-\u0907\u0938\u0915\u0947
-\u0907\u0938\u092e\u0947\u0902
-\u0907\u0938\u0940
-\u0907\u0938\u0947
-\u0909\u0928
-\u0909\u0928\u0915\u093e
-\u0909\u0928\u0915\u0940
-\u0909\u0928\u0915\u0947
-\u0909\u0928\u0915\u094b
-\u0909\u0928\u094d\u0939\u0940\u0902
-\u0909\u0928\u094d\u0939\u0947\u0902
-\u0909\u0928\u094d\u0939\u094b\u0902
-\u0909\u0938
-\u0909\u0938\u0915\u0947
-\u0909\u0938\u0940
-\u0909\u0938\u0947
-\u090f\u0915
-\u090f\u0935\u0902
-\u090f\u0938
-\u0910\u0938\u0947
-\u0914\u0930
-\u0915\u0908
-\u0915\u0930
-\u0915\u0930\u0924\u093e
-\u0915\u0930\u0924\u0947
-\u0915\u0930\u0928\u093e
-\u0915\u0930\u0928\u0947
-\u0915\u0930\u0947\u0902
-\u0915\u0939\u0924\u0947
-\u0915\u0939\u093e
-\u0915\u093e
-\u0915\u093e\u095e\u0940
-\u0915\u093f
-\u0915\u093f\u0924\u0928\u093e
-\u0915\u093f\u0928\u094d\u0939\u0947\u0902
-\u0915\u093f\u0928\u094d\u0939\u094b\u0902
-\u0915\u093f\u092f\u093e
-\u0915\u093f\u0930
-\u0915\u093f\u0938
-\u0915\u093f\u0938\u0940
-\u0915\u093f\u0938\u0947
-\u0915\u0940
-\u0915\u0941\u091b
-\u0915\u0941\u0932
-\u0915\u0947
-\u0915\u094b
-\u0915\u094b\u0908
-\u0915\u094c\u0928
-\u0915\u094c\u0928\u0938\u093e
-\u0917\u092f\u093e
-\u0918\u0930
-\u091c\u092c
-\u091c\u0939\u093e\u0901
-\u091c\u093e
-\u091c\u093f\u0924\u0928\u093e
-\u091c\u093f\u0928
-\u091c\u093f\u0928\u094d\u0939\u0947\u0902
-\u091c\u093f\u0928\u094d\u0939\u094b\u0902
-\u091c\u093f\u0938
-\u091c\u093f\u0938\u0947
-\u091c\u0940\u0927\u0930
-\u091c\u0948\u0938\u093e
-\u091c\u0948\u0938\u0947
-\u091c\u094b
-\u0924\u0915
-\u0924\u092c
-\u0924\u0930\u0939
-\u0924\u093f\u0928
-\u0924\u093f\u0928\u094d\u0939\u0947\u0902
-\u0924\u093f\u0928\u094d\u0939\u094b\u0902
-\u0924\u093f\u0938
-\u0924\u093f\u0938\u0947
-\u0924\u094b
-\u0925\u093e
-\u0925\u0940
-\u0925\u0947
-\u0926\u092c\u093e\u0930\u093e
-\u0926\u093f\u092f\u093e
-\u0926\u0941\u0938\u0930\u093e
-\u0926\u0942\u0938\u0930\u0947
-\u0926\u094b
-\u0926\u094d\u0935\u093e\u0930\u093e
-\u0928
-\u0928\u0939\u0940\u0902
-\u0928\u093e
-\u0928\u093f\u0939\u093e\u092f\u0924
-\u0928\u0940\u091a\u0947
-\u0928\u0947
-\u092a\u0930
-\u092a\u0930  
-\u092a\u0939\u0932\u0947
-\u092a\u0942\u0930\u093e
-\u092a\u0947
-\u092b\u093f\u0930
-\u092c\u0928\u0940
-\u092c\u0939\u0940
-\u092c\u0939\u0941\u0924
-\u092c\u093e\u0926
-\u092c\u093e\u0932\u093e
-\u092c\u093f\u0932\u0915\u0941\u0932
-\u092d\u0940
-\u092d\u0940\u0924\u0930
-\u092e\u0917\u0930
-\u092e\u093e\u0928\u094b
-\u092e\u0947
-\u092e\u0947\u0902
-\u092f\u0926\u093f
-\u092f\u0939
-\u092f\u0939\u093e\u0901
-\u092f\u0939\u0940
-\u092f\u093e
-\u092f\u093f\u0939 
-\u092f\u0947
-\u0930\u0916\u0947\u0902
-\u0930\u0939\u093e
-\u0930\u0939\u0947
-\u0931\u094d\u0935\u093e\u0938\u093e
-\u0932\u093f\u090f
-\u0932\u093f\u092f\u0947
-\u0932\u0947\u0915\u093f\u0928
-\u0935
-\u0935\u0930\u094d\u0917
-\u0935\u0939
-\u0935\u0939 
-\u0935\u0939\u093e\u0901
-\u0935\u0939\u0940\u0902
-\u0935\u093e\u0932\u0947
-\u0935\u0941\u0939 
-\u0935\u0947
-\u0935\u095a\u0948\u0930\u0939
-\u0938\u0902\u0917
-\u0938\u0915\u0924\u093e
-\u0938\u0915\u0924\u0947
-\u0938\u092c\u0938\u0947
-\u0938\u092d\u0940
-\u0938\u093e\u0925
-\u0938\u093e\u092c\u0941\u0924
-\u0938\u093e\u092d
-\u0938\u093e\u0930\u093e
-\u0938\u0947
-\u0938\u094b
-\u0939\u0940
-\u0939\u0941\u0906
-\u0939\u0941\u0908
-\u0939\u0941\u090f
-\u0939\u0948
-\u0939\u0948\u0902
-\u0939\u094b
-\u0939\u094b\u0924\u093e
-\u0939\u094b\u0924\u0940
-\u0939\u094b\u0924\u0947
-\u0939\u094b\u0928\u093e
-\u0939\u094b\u0928\u0947
-# additional normalized forms of the above
-\u0905\u092a\u0928\u093f
-\u091c\u0947\u0938\u0947
-\u0939\u094b\u0924\u093f
-\u0938\u092d\u093f
-\u0924\u093f\u0902\u0939\u094b\u0902
-\u0907\u0902\u0939\u094b\u0902
-\u0926\u0935\u093e\u0930\u093e
-\u0907\u0938\u093f
-\u0915\u093f\u0902\u0939\u0947\u0902
-\u0925\u093f
-\u0909\u0902\u0939\u094b\u0902
-\u0913\u0930
-\u091c\u093f\u0902\u0939\u0947\u0902
-\u0935\u0939\u093f\u0902
-\u0905\u092d\u093f
-\u092c\u0928\u093f
-\u0939\u093f
-\u0909\u0902\u0939\u093f\u0902
-\u0909\u0902\u0939\u0947\u0902
-\u0939\u0947\u0902
-\u0935\u0917\u0947\u0930\u0939
-\u090f\u0938\u0947
-\u0930\u0935\u093e\u0938\u093e
-\u0915\u094b\u0928
-\u0928\u093f\u091a\u0947
-\u0915\u093e\u092b\u093f
-\u0909\u0938\u093f
-\u092a\u0941\u0930\u093e
-\u092d\u093f\u0924\u0930
-\u0939\u0947
-\u092c\u0939\u093f
-\u0935\u0939\u093e\u0902
-\u0915\u094b\u0907
-\u092f\u0939\u093e\u0902
-\u091c\u093f\u0902\u0939\u094b\u0902
-\u0924\u093f\u0902\u0939\u0947\u0902
-\u0915\u093f\u0938\u093f
-\u0915\u0907
-\u092f\u0939\u093f
-\u0907\u0902\u0939\u093f\u0902
-\u091c\u093f\u0927\u0930
-\u0907\u0902\u0939\u0947\u0902
-\u0905\u0926\u093f
-\u0907\u0924\u092f\u093e\u0926\u093f
-\u0939\u0941\u0907
-\u0915\u094b\u0928\u0938\u093e
-\u0907\u0938\u0915\u093f
-\u0926\u0941\u0938\u0930\u0947
-\u091c\u0939\u093e\u0902
-\u0905\u092a
-\u0915\u093f\u0902\u0939\u094b\u0902
-\u0909\u0928\u0915\u093f
-\u092d\u093f
-\u0935\u0930\u0917
-\u0939\u0941\u0905
-\u091c\u0947\u0938\u093e
-\u0928\u0939\u093f\u0902

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hu.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hu.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hu.txt
deleted file mode 100644
index 1a96f1d..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hu.txt
+++ /dev/null
@@ -1,209 +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.
- 
-| 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\u0151
-el\u0151sz�r
-el\u0151tt
-els\u0151
-�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
-\u0151
-\u0151k
-\u0151ket
-pedig
-persze
-r�
-s
-saj�t
-sem
-semmi
-sok
-sokat
-sokkal
-sz�m�ra
-szemben
-szerint
-szinte
-tal�n
-teh�t
-teljes
-tov�bb
-tov�bb�
-t�bb
-�gy
-ugyanis
-�j
-�jabb
-�jra
-ut�n
-ut�na
-utols�
-vagy
-vagyis
-valaki
-valami
-valamint
-val�
-vagyok
-van
-vannak
-volt
-voltam
-voltak
-voltunk
-vissza
-vele
-viszont
-volna

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hy.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hy.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hy.txt
deleted file mode 100644
index 60c1c50..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_hy.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-# example set of Armenian stopwords.
-\u0561\u0575\u0564
-\u0561\u0575\u056c
-\u0561\u0575\u0576
-\u0561\u0575\u057d
-\u0564\u0578\u0582
-\u0564\u0578\u0582\u0584
-\u0565\u0574
-\u0565\u0576
-\u0565\u0576\u0584
-\u0565\u057d
-\u0565\u0584
-\u0567
-\u0567\u056b
-\u0567\u056b\u0576
-\u0567\u056b\u0576\u0584
-\u0567\u056b\u0580
-\u0567\u056b\u0584
-\u0567\u0580
-\u0568\u057d\u057f
-\u0569
-\u056b
-\u056b\u0576
-\u056b\u057d\u056f
-\u056b\u0580
-\u056f\u0561\u0574
-\u0570\u0561\u0574\u0561\u0580
-\u0570\u0565\u057f
-\u0570\u0565\u057f\u0578
-\u0574\u0565\u0576\u0584
-\u0574\u0565\u057b
-\u0574\u056b
-\u0576
-\u0576\u0561
-\u0576\u0561\u0587
-\u0576\u0580\u0561
-\u0576\u0580\u0561\u0576\u0584
-\u0578\u0580
-\u0578\u0580\u0568
-\u0578\u0580\u0578\u0576\u0584
-\u0578\u0580\u057a\u0565\u057d
-\u0578\u0582
-\u0578\u0582\u0574
-\u057a\u056b\u057f\u056b
-\u057e\u0580\u0561
-\u0587

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_id.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_id.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_id.txt
deleted file mode 100644
index 4617f83..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ja.txt
deleted file mode 100644
index d4321be..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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.
-#
-\u306e
-\u306b
-\u306f
-\u3092
-\u305f
-\u304c
-\u3067
-\u3066
-\u3068
-\u3057
-\u308c
-\u3055
-\u3042\u308b
-\u3044\u308b
-\u3082
-\u3059\u308b
-\u304b\u3089
-\u306a
-\u3053\u3068
-\u3068\u3057\u3066
-\u3044
-\u3084
-\u308c\u308b
-\u306a\u3069
-\u306a\u3063
-\u306a\u3044
-\u3053\u306e
-\u305f\u3081
-\u305d\u306e
-\u3042\u3063
-\u3088\u3046
-\u307e\u305f
-\u3082\u306e
-\u3068\u3044\u3046
-\u3042\u308a
-\u307e\u3067
-\u3089\u308c
-\u306a\u308b
-\u3078
-\u304b
-\u3060
-\u3053\u308c
-\u306b\u3088\u3063\u3066
-\u306b\u3088\u308a
-\u304a\u308a
-\u3088\u308a
-\u306b\u3088\u308b
-\u305a
-\u306a\u308a
-\u3089\u308c\u308b
-\u306b\u304a\u3044\u3066
-\u3070
-\u306a\u304b\u3063
-\u306a\u304f
-\u3057\u304b\u3057
-\u306b\u3064\u3044\u3066
-\u305b
-\u3060\u3063
-\u305d\u306e\u5f8c
-\u3067\u304d\u308b
-\u305d\u308c
-\u3046
-\u306e\u3067
-\u306a\u304a
-\u306e\u307f
-\u3067\u304d
-\u304d
-\u3064
-\u306b\u304a\u3051\u308b
-\u304a\u3088\u3073
-\u3044\u3046
-\u3055\u3089\u306b
-\u3067\u3082
-\u3089
-\u305f\u308a
-\u305d\u306e\u4ed6
-\u306b\u95a2\u3059\u308b
-\u305f\u3061
-\u307e\u3059
-\u3093
-\u306a\u3089
-\u306b\u5bfe\u3057\u3066
-\u7279\u306b
-\u305b\u308b
-\u53ca\u3073
-\u3053\u308c\u3089
-\u3068\u304d
-\u3067\u306f
-\u306b\u3066
-\u307b\u304b
-\u306a\u304c\u3089
-\u3046\u3061
-\u305d\u3057\u3066
-\u3068\u3068\u3082\u306b
-\u305f\u3060\u3057
-\u304b\u3064\u3066
-\u305d\u308c\u305e\u308c
-\u307e\u305f\u306f
-\u304a
-\u307b\u3069
-\u3082\u306e\u306e
-\u306b\u5bfe\u3059\u308b
-\u307b\u3068\u3093\u3069
-\u3068\u5171\u306b
-\u3068\u3044\u3063\u305f
-\u3067\u3059
-\u3068\u3082
-\u3068\u3053\u308d
-\u3053\u3053
-##### End of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_lv.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_lv.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_lv.txt
deleted file mode 100644
index e21a23c..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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\u0161
-\u0101rpus
-aug\u0161pus
-bez
-caur
-d\u0113\u013c
-gar
-iek\u0161
-iz
-kop\u0161
-labad
-lejpus
-l\u012bdz
-no
-otrpus
-pa
-par
-p\u0101r
-p\u0113c
-pie
-pirms
-pret
-priek\u0161
-starp
-\u0161aipus
-uz
-vi\u0146pus
-virs
-virspus
-zem
-apak\u0161pus
-# Conjunctions
-un
-bet
-jo
-ja
-ka
-lai
-tom\u0113r
-tikko
-turpret\u012b
-ar\u012b
-kaut
-gan
-t\u0101d\u0113\u013c
-t\u0101
-ne
-tikvien
-vien
-k\u0101
-ir
-te
-vai
-kam\u0113r
-# Particles
-ar
-diezin
-dro\u0161i
-diem\u017e\u0113l
-neb\u016bt
-ik
-it
-ta\u010du
-nu
-pat
-tiklab
-iek\u0161pus
-nedz
-tik
-nevis
-turpretim
-jeb
-iekam
-iek\u0101m
-iek\u0101ms
-kol\u012bdz
-l\u012bdzko
-tikl\u012bdz
-jeb\u0161u
-t\u0101lab
-t\u0101p\u0113c
-nek\u0101
-itin
-j\u0101
-jau
-jel
-n\u0113
-nezin
-tad
-tikai
-vis
-tak
-iekams
-vien
-# modal verbs
-b\u016bt  
-biju 
-biji
-bija
-bij\u0101m
-bij\u0101t
-esmu
-esi
-esam
-esat 
-b\u016b\u0161u     
-b\u016bsi
-b\u016bs
-b\u016bsim
-b\u016bsiet
-tikt
-tiku
-tiki
-tika
-tik\u0101m
-tik\u0101t
-tieku
-tiec
-tiek
-tiekam
-tiekat
-tik\u0161u
-tiks
-tiksim
-tiksiet
-tapt
-tapi
-tap\u0101t
-topat
-tap\u0161u
-tapsi
-taps
-tapsim
-tapsiet
-k\u013c\u016bt
-k\u013cuvu
-k\u013cuvi
-k\u013cuva
-k\u013cuv\u0101m
-k\u013cuv\u0101t
-k\u013c\u016bstu
-k\u013c\u016bsti
-k\u013c\u016bst
-k\u013c\u016bstam
-k\u013c\u016bstat
-k\u013c\u016b\u0161u
-k\u013c\u016bsi
-k\u013c\u016bs
-k\u013c\u016bsim
-k\u013c\u016bsiet
-# verbs
-var\u0113t
-var\u0113ju
-var\u0113j\u0101m
-var\u0113\u0161u
-var\u0113sim
-var
-var\u0113ji
-var\u0113j\u0101t
-var\u0113si
-var\u0113siet
-varat
-var\u0113ja
-var\u0113s

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

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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ro.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ro.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ro.txt
deleted file mode 100644
index 4fdee90..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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\u0103
-aceea
-acei
-aceia
-acel
-acela
-acele
-acelea
-acest
-acesta
-aceste
-acestea
-ace\u015fti
-ace\u015ftia
-acolo
-acum
-ai
-aia
-aib\u0103
-aici
-al
-\u0103la
-ale
-alea
-\u0103lea
-altceva
-altcineva
-am
-ar
-are
-a\u015f
-a\u015fadar
-asemenea
-asta
-\u0103sta
-ast\u0103zi
-astea
-\u0103stea
-\u0103\u015ftia
-asupra
-a\u0163i
-au
-avea
-avem
-ave\u0163i
-azi
-bine
-bucur
-bun\u0103
-ca
-c\u0103
-c\u0103ci
-c�nd
-care
-c\u0103rei
-c\u0103ror
-c\u0103rui
-c�t
-c�te
-c�\u0163i
-c\u0103tre
-c�tva
-ce
-cel
-ceva
-chiar
-c�nd
-cine
-cineva
-c�t
-c�te
-c�\u0163i
-c�tva
-contra
-cu
-cum
-cumva
-cur�nd
-cur�nd
-da
-d\u0103
-dac\u0103
-dar
-datorit\u0103
-de
-deci
-deja
-deoarece
-departe
-de\u015fi
-din
-dinaintea
-dintr
-dintre
-drept
-dup\u0103
-ea
-ei
-el
-ele
-eram
-este
-e\u015fti
-eu
-face
-f\u0103r\u0103
-fi
-fie
-fiecare
-fii
-fim
-fi\u0163i
-iar
-ieri
-�i
-�l
-�mi
-�mpotriva
-�n 
-�nainte
-�naintea
-�nc�t
-�nc�t
-�ncotro
-�ntre
-�ntruc�t
-�ntruc�t
-�\u0163i
-la
-l�ng\u0103
-le
-li
-l�ng\u0103
-lor
-lui
-m\u0103
-m�ine
-mea
-mei
-mele
-mereu
-meu
-mi
-mine
-mult
-mult\u0103
-mul\u0163i
-ne
-nic\u0103ieri
-nici
-nimeni
-ni\u015fte
-noastr\u0103
-noastre
-noi
-no\u015ftri
-nostru
-nu
-ori
-oric�nd
-oricare
-oric�t
-orice
-oric�nd
-oricine
-oric�t
-oricum
-oriunde
-p�n\u0103
-pe
-pentru
-peste
-p�n\u0103
-poate
-pot
-prea
-prima
-primul
-prin
-printr
-sa
-s\u0103
-s\u0103i
-sale
-sau
-s\u0103u
-se
-\u015fi
-s�nt
-s�ntem
-s�nte\u0163i
-spre
-sub
-sunt
-suntem
-sunte\u0163i
-ta
-t\u0103i
-tale
-t\u0103u
-te
-\u0163i
-\u0163ie
-tine
-toat\u0103
-toate
-tot
-to\u0163i
-totu\u015fi
-tu
-un
-una
-unde
-undeva
-unei
-unele
-uneori
-unor
-v\u0103
-vi
-voastr\u0103
-voastre
-voi
-vo\u015ftri
-vostru
-vou\u0103
-vreo
-vreun


[58/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10365: Handle a SolrCoreInitializationException while publishing core state during SolrCore creation

Posted by cp...@apache.org.
SOLR-10365: Handle a SolrCoreInitializationException while publishing core state during SolrCore creation


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

Branch: refs/heads/jira/solr-6203
Commit: 0322068ea4648c93405da5b60fcbcc3467f5b009
Parents: aa2b46a
Author: Ishan Chattopadhyaya <is...@apache.org>
Authored: Wed Mar 29 00:26:31 2017 +0530
Committer: Ishan Chattopadhyaya <is...@apache.org>
Committed: Wed Mar 29 00:26:31 2017 +0530

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  3 ++
 .../org/apache/solr/cloud/ZkController.java     |  4 +++
 .../org/apache/solr/core/CoreContainer.java     |  6 ++--
 .../core/SolrCoreInitializationException.java   | 32 ++++++++++++++++++++
 4 files changed, 41 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0322068e/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 2d180a3..8875160 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -158,6 +158,9 @@ Other Changes
 
 * SOLR-10343: Update Solr default/example and test configs to use SynonymGraphFilterFactory. (Steve Rowe)
 
+* SOLR-10365: Handle a SolrCoreInitializationException while publishing core state during SolrCore creation
+  (Ishan Chattopadhyaya)
+
 ==================  6.5.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0322068e/solr/core/src/java/org/apache/solr/cloud/ZkController.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index a3f1fd4..677bf29 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -85,6 +85,7 @@ import org.apache.solr.core.CloudConfig;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.CoreDescriptor;
 import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.SolrCoreInitializationException;
 import org.apache.solr.logging.MDCLoggingContext;
 import org.apache.solr.update.UpdateLog;
 import org.apache.zookeeper.CreateMode;
@@ -1232,6 +1233,9 @@ public class ZkController {
             }
           }
         }
+      } catch (SolrCoreInitializationException ex) {
+        // The core had failed to initialize (in a previous request, not this one), hence nothing to do here.
+        log.info("The core '{}' had failed to initialize before.", cd.getName());
       }
       
       ZkNodeProps m = new ZkNodeProps(props);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0322068e/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index 9e22f91..9db3261 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -1288,7 +1288,7 @@ public class CoreContainer {
    * @see SolrCore#close()
    * @param name the core name
    * @return the core if found, null if a SolrCore by this name does not exist
-   * @exception SolrException if a SolrCore with this name failed to be initialized
+   * @exception SolrCoreInitializationException if a SolrCore with this name failed to be initialized
    */
   public SolrCore getCore(String name) {
 
@@ -1307,9 +1307,7 @@ public class CoreContainer {
       // error with the details for clients attempting to access it.
       CoreLoadFailure loadFailure = getCoreInitFailures().get(name);
       if (null != loadFailure) {
-        throw new SolrException(ErrorCode.SERVER_ERROR, "SolrCore '" + name +
-                                "' is not available due to init failure: " +
-                                loadFailure.exception.getMessage(), loadFailure.exception);
+        throw new SolrCoreInitializationException(name, loadFailure.exception);
       }
       // otherwise the user is simply asking for something that doesn't exist.
       return null;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0322068e/solr/core/src/java/org/apache/solr/core/SolrCoreInitializationException.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCoreInitializationException.java b/solr/core/src/java/org/apache/solr/core/SolrCoreInitializationException.java
new file mode 100644
index 0000000..93b653c
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/core/SolrCoreInitializationException.java
@@ -0,0 +1,32 @@
+/*
+ * 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.core;
+
+import org.apache.solr.common.SolrException;
+
+public class SolrCoreInitializationException extends SolrException {
+
+  public SolrCoreInitializationException(ErrorCode code, String msg) {
+    super(code, msg);
+  }
+  
+  public SolrCoreInitializationException(String coreName, Exception loadException) {
+    super(ErrorCode.SERVER_ERROR, "SolrCore '" + coreName +
+        "' is not available due to init failure: " +
+        loadException.getMessage(), loadException);
+  }
+}
\ No newline at end of file


[44/73] [abbrv] lucene-solr:jira/solr-6203: SLR-10108: bin/solr script recursive copy broken

Posted by cp...@apache.org.
SLR-10108: bin/solr script recursive copy broken


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

Branch: refs/heads/jira/solr-6203
Commit: 0b3ca1bb61cb6768ef99a4ee7f4ac05a71d19f56
Parents: 2ba54a3
Author: Erick Erickson <er...@apache.org>
Authored: Mon Mar 27 12:15:05 2017 -0700
Committer: Erick Erickson <er...@apache.org>
Committed: Mon Mar 27 12:15:05 2017 -0700

----------------------------------------------------------------------
 solr/CHANGES.txt                                |   2 +
 solr/bin/solr                                   |  26 ++--
 solr/bin/solr.cmd                               |  27 +++--
 .../apache/solr/cloud/SolrCLIZkUtilsTest.java   |  87 +++++++++++++-
 .../solr/common/cloud/ZkMaintenanceUtils.java   | 120 +++++++++++++++----
 5 files changed, 214 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0b3ca1bb/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 2cebb9f..0b6faf8 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -135,6 +135,8 @@ Bug Fixes
 * SOLR-10281: ADMIN_PATHS is duplicated in two places and inconsistent. This can cause automatic
   retries to /admin/metrics handler by the CloudSolrClient. (shalin)
 
+* SOLR-10108: bin/solr script recursive copy broken (Erick Erickson)
+
 Other Changes
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0b3ca1bb/solr/bin/solr
----------------------------------------------------------------------
diff --git a/solr/bin/solr b/solr/bin/solr
index 58fdcba..27ec054 100755
--- a/solr/bin/solr
+++ b/solr/bin/solr
@@ -496,17 +496,27 @@ function print_usage() {
     echo "                             NOTE: <src> and <dest> may both be Zookeeper resources prefixed by 'zk:'"
     echo "             When <src> is a zk resource, <dest> may be '.'"
     echo "             If <dest> ends with '/', then <dest> will be a local folder or parent znode and the last"
-    echo "             element of the <src> path will be appended."
-    echo ""
-    echo "             The 'file:' prefix is stripped, thus 'file:/' specifies an absolute local path and"
-    echo "             'file:somewhere' specifies a relative local path. All paths on Zookeeper are absolute"
-    echo "             so the slash is required."
+    echo "             element of the <src> path will be appended unless <src> also ends in a slash. "
+    echo "             <dest> may be zk:, which may be useful when using the cp -r form to backup/restore "
+    echo "             the entire zk state."
+    echo "             You must enclose local paths that end in a wildcard in quotes or just"
+    echo "             end the local path in a slash. That is,"
+    echo "             'bin/solr zk cp -r /some/dir/ zk:/ -z localhost:2181' is equivalent to"
+    echo "             'bin/solr zk cp -r \"/some/dir/*\" zk:/ -z localhost:2181'"
+    echo "             but 'bin/solr zk cp -r /some/dir/* zk:/ -z localhost:2181' will throw an error"
+    echo ""
+    echo "             here's an example of backup/restore for a ZK configuration:"
+    echo "             to copy to local: 'bin/solr zk cp -r zk:/ /some/dir -z localhost:2181'"
+    echo "             to restore to ZK: 'bin/solr zk cp -r /some/dir/ zk:/ -z localhost:2181'"
+    echo ""
+    echo "             The 'file:' prefix is stripped, thus 'file:/wherever' specifies an absolute local path and"
+    echo "             'file:somewhere' specifies a relative local path. All paths on Zookeeper are absolute."
     echo ""
     echo "             Zookeeper nodes CAN have data, so moving a single file to a parent znode"
     echo "             will overlay the data on the parent Znode so specifying the trailing slash"
-    echo "             is important."
+    echo "             can be important."
     echo ""
-    echo "             Wildcards are not supported"
+    echo "             Wildcards are supported when copying from local, trailing only and must be quoted."
     echo ""
     echo "         rm deletes files or folders on Zookeeper"
     echo "             -r�����Recursively delete if <path> is a directory. Command will fail if <path>"
@@ -1093,7 +1103,7 @@ if [[ "$SCRIPT_CMD" == "zk" ]]; then
               if [ -z "$ZK_DST" ]; then
                 ZK_DST=$1
               else
-                print_short_zk_usage "Unrecognized or misplaced command $1"
+                print_short_zk_usage "Unrecognized or misplaced command $1. 'cp' with trailing asterisk requires quoting, see help text."
               fi
             fi
             shift

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0b3ca1bb/solr/bin/solr.cmd
----------------------------------------------------------------------
diff --git a/solr/bin/solr.cmd b/solr/bin/solr.cmd
index 29422f3..ee76a21 100644
--- a/solr/bin/solr.cmd
+++ b/solr/bin/solr.cmd
@@ -479,23 +479,32 @@ echo.
 echo.             ^<src^>, ^<dest^> : [file:][/]path/to/local/file or zk:/path/to/zk/node
 echo                              NOTE: ^<src^> and ^<dest^> may both be Zookeeper resources prefixed by 'zk:'
 echo             When ^<src^> is a zk resource, ^<dest^> may be '.'
-echo             If ^<dest^> ends with '/', then ^<dest^> will be a local folder or parent znode and the last
-echo             element of the ^<src^> path will be appended.
+echo             element of the ^<src^> path will be appended unless ^<src^> also ends in a slash. 
+echo             ^<dest^> may be zk:, which may be useful when using the cp -r form to backup/restore 
+echo              the entire zk state.
+echo              You must enclose local paths that end in a wildcard in quotes or just
+echo              end the local path in a slash. That is,
+echo              'bin/solr zk cp -r /some/dir/ zk:/ -z localhost:2181' is equivalent to
+echo              'bin/solr zk cp -r ^"/some/dir/*^" zk:/ -z localhost:2181'
+echo              but 'bin/solr zk cp -r /some/dir/* zk:/ -z localhost:2181' will throw an error
+echo .
+echo              here's an example of backup/restore for a ZK configuration:
+echo              to copy to local: 'bin/solr zk cp -r zk:/ /some/dir -z localhost:2181'
+echo              to restore to ZK: 'bin/solr zk cp -r /some/dir/ zk:/ -z localhost:2181'
 echo.
-echo             The 'file:' prefix is stripped, thus 'file:/' specifies an absolute local path and
-echo             'file:somewhere' specifies a relative local path. All paths on Zookeeper are absolute
-echo             so the slash is required.
+echo             The 'file:' prefix is stripped, thus 'file:/wherever' specifies an absolute local path and
+echo             'file:somewhere' specifies a relative local path. All paths on Zookeeper are absolute.
 echo.
 echo             Zookeeper nodes CAN have data, so moving a single file to a parent znode
 echo             will overlay the data on the parent Znode so specifying the trailing slash
-echo             is important.
+echo             can be important.
 echo.
-echo             Wildcards are not supported
+echo             Wildcards are supported when copying from local, trailing only and must be quoted.
 echo.
 echo         rm deletes files or folders on Zookeeper
 echo             -r     Recursively delete if ^<path^> is a directory. Command will fail if ^<path^>
 echo                    has children and -r is not specified. Optional
-echo             ^<path^> : [zk:]/path/to/zk/node. ^<path^> may not be the root ('/')"
+echo             ^<path^> : [zk:]/path/to/zk/node. ^<path^> may not be the root ('/')
 echo.
 echo         mv moves (renames) znodes on Zookeeper
 echo             ^<src^>, ^<dest^> : Zookeeper nodes, the 'zk:' prefix is optional.
@@ -512,7 +521,7 @@ echo.
 echo             Only the node names are listed, not data
 echo.
 echo         mkroot makes a znode in Zookeeper with no data. Can be used to make a path of arbitrary
-echo                depth but primarily intended to create a 'chroot'."
+echo                depth but primarily intended to create a 'chroot'.
 echo.
 echo             ^<path^>: The Zookeeper path to create. Leading slash is assumed if not present.
 echo                       Intermediate nodes are created as needed if not present.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0b3ca1bb/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java b/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
index 78be30b..35ba1d4 100644
--- a/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/SolrCLIZkUtilsTest.java
@@ -28,11 +28,14 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.SimpleFileVisitor;
 import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkMaintenanceUtils;
 import org.apache.solr.util.SolrCLI;
 import org.apache.zookeeper.KeeperException;
+import org.apache.zookeeper.data.Stat;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -131,7 +134,7 @@ public class SolrCLIZkUtilsTest extends SolrCloudTestCase {
 
     Path configSet = TEST_PATH().resolve("configsets");
     Path srcPathCheck = configSet.resolve("cloud-subdirs").resolve("conf");
-    
+
     copyConfigUp(configSet, "cloud-subdirs", "cp1");
 
     // Now copy it somewhere else on ZK.
@@ -201,7 +204,6 @@ public class SolrCLIZkUtilsTest extends SolrCloudTestCase {
     assertEquals("Copy should have succeeded.", 0, res);
     verifyZkLocalPathsMatch(srcPathCheck, "/cp4");
 
-
     // try with recurse not specified
     args = new String[]{
         "-src", "file:" + srcPathCheck.toAbsolutePath().toString(),
@@ -306,6 +308,70 @@ public class SolrCLIZkUtilsTest extends SolrCloudTestCase {
     assertEquals("Copy from somewhere in ZK to ZK root should have succeeded.", 0, res);
     assertTrue("Should have found znode /solrconfig.xml: ", zkClient.exists("/solrconfig.xml", true));
 
+    // Check that the form path/ works for copying files up. Should append the last bit of the source path to the dst
+    args = new String[]{
+        "-src", "file:" + srcPathCheck.toAbsolutePath().toString(),
+        "-dst", "zk:/cp7/",
+        "-recurse", "true",
+        "-zkHost", zkAddr,
+    };
+
+    res = cpTool.runTool(SolrCLI.processCommandLineArgs(SolrCLI.joinCommonAndToolOptions(cpTool.getOptions()), args));
+    assertEquals("Copy should have succeeded.", 0, res);
+    verifyZkLocalPathsMatch(srcPathCheck, "/cp7/" + srcPathCheck.getFileName().toString());
+
+    // Check for an intermediate ZNODE having content. You know cp7/stopwords is a parent node.
+    tmp = createTempDir("dirdata");
+    Path file = Paths.get(tmp.toAbsolutePath().toString(), "zknode.data");
+    List<String> lines = new ArrayList<>();
+    lines.add("{Some Arbitrary Data}");
+    Files.write(file, lines, Charset.forName("UTF-8"));
+    // First, just copy the data up the cp7 since it's a directory.
+    args = new String[]{
+        "-src", "file:" + file.toAbsolutePath().toString(),
+        "-dst", "zk:/cp7/conf/stopwords/",
+        "-recurse", "false",
+        "-zkHost", zkAddr,
+    };
+
+    res = cpTool.runTool(SolrCLI.processCommandLineArgs(SolrCLI.joinCommonAndToolOptions(cpTool.getOptions()), args));
+    assertEquals("Copy should have succeeded.", 0, res);
+
+    String content = new String(zkClient.getData("/cp7/conf/stopwords", null, null, true), StandardCharsets.UTF_8);
+    assertTrue("There should be content in the node! ", content.contains("{Some Arbitrary Data}"));
+
+
+    res = cpTool.runTool(SolrCLI.processCommandLineArgs(SolrCLI.joinCommonAndToolOptions(cpTool.getOptions()), args));
+    assertEquals("Copy should have succeeded.", 0, res);
+
+    tmp = createTempDir("cp8");
+    args = new String[]{
+        "-src", "zk:/cp7",
+        "-dst", "file:" + tmp.toAbsolutePath().toString(),
+        "-recurse", "true",
+        "-zkHost", zkAddr,
+    };
+    res = cpTool.runTool(SolrCLI.processCommandLineArgs(SolrCLI.joinCommonAndToolOptions(cpTool.getOptions()), args));
+    assertEquals("Copy should have succeeded.", 0, res);
+
+    // Next, copy cp7 down and verify that zknode.data exists for cp7
+    Path zData = Paths.get(tmp.toAbsolutePath().toString(), "conf/stopwords/zknode.data");
+    assertTrue("znode.data should have been copied down", zData.toFile().exists());
+
+    // Finally, copy up to cp8 and verify that the data is up there.
+    args = new String[]{
+        "-src", "file:" + tmp.toAbsolutePath().toString(),
+        "-dst", "zk:/cp9",
+        "-recurse", "true",
+        "-zkHost", zkAddr,
+    };
+
+    res = cpTool.runTool(SolrCLI.processCommandLineArgs(SolrCLI.joinCommonAndToolOptions(cpTool.getOptions()), args));
+    assertEquals("Copy should have succeeded.", 0, res);
+
+    content = new String(zkClient.getData("/cp9/conf/stopwords", null, null, true), StandardCharsets.UTF_8);
+    assertTrue("There should be content in the node! ", content.contains("{Some Arbitrary Data}"));
+
   }
 
   @Test
@@ -577,13 +643,22 @@ public class SolrCLIZkUtilsTest extends SolrCloudTestCase {
     verifyAllZNodesAreFiles(fileRoot, zkRoot);
   }
 
+  private static boolean isEphemeral(String zkPath) throws KeeperException, InterruptedException {
+    Stat znodeStat = zkClient.exists(zkPath, null, true);
+    return znodeStat.getEphemeralOwner() != 0;
+  }
+
   void verifyAllZNodesAreFiles(Path fileRoot, String zkRoot) throws KeeperException, InterruptedException {
 
-    for (String node : zkClient.getChildren(zkRoot, null, true)) {
-      Path thisPath = Paths.get(fileRoot.toAbsolutePath().toString(), node);
-      assertTrue("Znode " + node + " should have been found on disk at " + fileRoot.toAbsolutePath().toString(),
+    for (String child : zkClient.getChildren(zkRoot, null, true)) {
+      // Skip ephemeral nodes
+      if (zkRoot.endsWith("/") == false) zkRoot += "/";
+      if (isEphemeral(zkRoot + child)) continue;
+      
+      Path thisPath = Paths.get(fileRoot.toAbsolutePath().toString(), child);
+      assertTrue("Znode " + child + " should have been found on disk at " + fileRoot.toAbsolutePath().toString(),
           Files.exists(thisPath));
-      verifyAllZNodesAreFiles(thisPath, zkRoot + "/" + node);
+      verifyAllZNodesAreFiles(thisPath, zkRoot + child);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0b3ca1bb/solr/solrj/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
index b7aa3d2..f569ae3 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
@@ -17,6 +17,7 @@
 
 package org.apache.solr.common.cloud;
 
+import java.io.File;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.nio.file.FileVisitResult;
@@ -31,6 +32,7 @@ import java.util.regex.Pattern;
 
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.zookeeper.KeeperException;
+import org.apache.zookeeper.data.Stat;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,6 +42,7 @@ import org.slf4j.LoggerFactory;
  */
 public class ZkMaintenanceUtils {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+  private static final String ZKNODE_DATA_FILE = "zknode.data";
 
   private ZkMaintenanceUtils() {} // don't let it be instantiated, all methods are static.
   /**
@@ -119,6 +122,9 @@ public class ZkMaintenanceUtils {
     if (srcIsZk == false && dstIsZk == false) {
       throw new SolrServerException("At least one of the source and dest parameters must be prefixed with 'zk:' ");
     }
+    if (dstIsZk && dst.length() == 0) {
+      dst = "/"; // for consistency, one can copy from zk: and send to zk:/
+    }
     dst = normalizeDest(src, dst);
 
     if (srcIsZk && dstIsZk) {
@@ -148,18 +154,26 @@ public class ZkMaintenanceUtils {
     Files.write(filename, data);
   }
 
+  
   private static String normalizeDest(String srcName, String dstName) {
-    // Pull the last element of the src path and add it to the dst.
-    if (dstName.endsWith("/")) {
+    // Special handling for "."
+    if (dstName.equals(".")) {
+      return Paths.get(".").normalize().toAbsolutePath().toString();
+    }
+    // Pull the last element of the src path and add it to the dst if the src does NOT end in a slash 
+
+    // If the source ends in a slash, do not append the last segment to the dest
+    
+    if (dstName.endsWith("/")) { // Dest is a directory.
       int pos = srcName.lastIndexOf("/");
       if (pos < 0) {
         dstName += srcName;
       } else {
         dstName += srcName.substring(pos + 1);
       }
-    } else if (dstName.equals(".")) {
-      dstName = Paths.get(".").normalize().toAbsolutePath().toString();
     }
+    
+    log.info("copying from '{}' to '{}'", srcName, dstName);
     return dstName;
   }
 
@@ -226,10 +240,17 @@ public class ZkMaintenanceUtils {
       }
     });
   }
+  
+  public static void uploadToZK(SolrZkClient zkClient, final Path fromPath, final String zkPath,
+                                final Pattern filenameExclusions) throws IOException {
 
-  public static void uploadToZK(SolrZkClient zkClient, final Path rootPath, final String zkPath,
-                         final Pattern filenameExclusions) throws IOException {
+    String path = fromPath.toString();
+    if (path.endsWith("*")) {
+      path = path.substring(0, path.length() - 1);
+    }
 
+    final Path rootPath = Paths.get(path);
+        
     if (!Files.exists(rootPath))
       throw new IOException("Path " + rootPath + " does not exist");
 
@@ -243,7 +264,12 @@ public class ZkMaintenanceUtils {
         }
         String zkNode = createZkNodeName(zkPath, rootPath, file);
         try {
-          zkClient.makePath(zkNode, file.toFile(), false, true);
+          // if the path exists (and presumably we're uploading data to it) just set its data
+          if (file.toFile().getName().equals(ZKNODE_DATA_FILE) && zkClient.exists(zkNode, true)) {
+            zkClient.setData(zkNode, file.toFile(), true);
+          } else {
+            zkClient.makePath(zkNode, file.toFile(), false, true);
+          }
         } catch (KeeperException | InterruptedException e) {
           throw new IOException("Error uploading file " + file.toString() + " to zookeeper path " + zkNode,
               SolrZkClient.checkInterrupted(e));
@@ -253,28 +279,58 @@ public class ZkMaintenanceUtils {
 
       @Override
       public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
-        return (dir.getFileName().toString().startsWith(".")) ? FileVisitResult.SKIP_SUBTREE : FileVisitResult.CONTINUE;
+        if (dir.getFileName().toString().startsWith(".")) return FileVisitResult.SKIP_SUBTREE;
+
+        return FileVisitResult.CONTINUE;
       }
     });
   }
 
-  public static void downloadFromZK(SolrZkClient zkClient, String zkPath, Path dir) throws IOException {
+  private static boolean isEphemeral(SolrZkClient zkClient, String zkPath) throws KeeperException, InterruptedException {
+    Stat znodeStat = zkClient.exists(zkPath, null, true);
+    return znodeStat.getEphemeralOwner() != 0;
+  }
+
+  private static int copyDataDown(SolrZkClient zkClient, String zkPath, File file) throws IOException, KeeperException, InterruptedException {
+    byte[] data = zkClient.getData(zkPath, null, null, true);
+    if (data != null && data.length > 1) { // There are apparently basically empty ZNodes.
+      log.info("Writing file {}", file.toString());
+      Files.write(file.toPath(), data);
+      return data.length;
+    }
+    return 0;
+  }
+
+  public static void downloadFromZK(SolrZkClient zkClient, String zkPath, Path file) throws IOException {
     try {
-      List<String> files = zkClient.getChildren(zkPath, null, true);
-      Files.createDirectories(dir);
-      for (String file : files) {
-        List<String> children = zkClient.getChildren(zkPath + "/" + file, null, true);
-        if (children.size() == 0) {
-          byte[] data = zkClient.getData(zkPath + "/" + file, null, null, true);
-          Path filename = dir.resolve(file);
-          log.info("Writing file {}", filename);
-          Files.write(filename, data);
-        } else {
-          downloadFromZK(zkClient, zkPath + "/" + file, dir.resolve(file));
+      List<String> children = zkClient.getChildren(zkPath, null, true);
+      // If it has no children, it's a leaf node, write the assoicated data from the ZNode. 
+      // Otherwise, continue recursing, but write the associated data to a special file if any
+      if (children.size() == 0) {
+        // If we didn't copy data down, then we also didn't create the file. But we still need a marker on the local
+        // disk so create a dir.
+        if (copyDataDown(zkClient, zkPath, file.toFile()) == 0) {
+          Files.createDirectories(file);
+        }
+      } else {
+        Files.createDirectories(file); // Make parent dir.
+        // ZK nodes, whether leaf or not can have data. If it's a non-leaf node and
+        // has associated data write it into the special file.
+        copyDataDown(zkClient, zkPath, new File(file.toFile(), ZKNODE_DATA_FILE));
+
+        for (String child : children) {
+          String zkChild = zkPath;
+          if (zkChild.endsWith("/") == false) zkChild += "/";
+          zkChild += child;
+          if (isEphemeral(zkClient, zkChild)) { // Don't copy ephemeral nodes
+            continue;
+          }
+          // Go deeper into the tree now
+          downloadFromZK(zkClient, zkChild, file.resolve(child));
         }
       }
     } catch (KeeperException | InterruptedException e) {
-      throw new IOException("Error downloading files from zookeeper path " + zkPath + " to " + dir.toString(),
+      throw new IOException("Error downloading files from zookeeper path " + zkPath + " to " + file.toString(),
           SolrZkClient.checkInterrupted(e));
     }
   }
@@ -336,10 +392,24 @@ public class ZkMaintenanceUtils {
     if ("\\".equals(separator))
       relativePath = relativePath.replaceAll("\\\\", "/");
     // It's possible that the relative path and file are the same, in which case
-    // adding the bare slash is A Bad Idea
-    if (relativePath.length() == 0) return zkRoot;
-    
-    return zkRoot + "/" + relativePath;
+    // adding the bare slash is A Bad Idea unless it's a non-leaf data node
+    boolean isNonLeafData = file.toFile().getName().equals(ZKNODE_DATA_FILE);
+    if (relativePath.length() == 0 && isNonLeafData == false) return zkRoot;
+
+    // Important to have this check if the source is file:whatever/ and the destination is just zk:/
+    if (zkRoot.endsWith("/") == false) zkRoot += "/";
+
+    String ret = zkRoot + relativePath;
+
+    // Special handling for data associated with non-leaf node.
+    if (isNonLeafData) {
+      // special handling since what we need to do is add the data to the parent.
+      ret = ret.substring(0, ret.indexOf(ZKNODE_DATA_FILE));
+      if (ret.endsWith("/")) {
+        ret = ret.substring(0, ret.length() - 1);
+      }
+    }
+    return ret;
   }
 }
 


[37/73] [abbrv] lucene-solr:jira/solr-6203: Add 6.5.0 back compat test indexes

Posted by cp...@apache.org.
Add 6.5.0 back compat test indexes


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

Branch: refs/heads/jira/solr-6203
Commit: 56d455c4333a4bda71811426cc6f6e9258852617
Parents: 40f4324
Author: Jim Ferenczi <ji...@elastic.co>
Authored: Sat Mar 25 18:37:25 2017 +0100
Committer: Jim Ferenczi <ji...@elastic.co>
Committed: Sat Mar 25 18:37:25 2017 +0100

----------------------------------------------------------------------
 .../lucene/index/TestBackwardsCompatibility.java   |   4 +++-
 .../org/apache/lucene/index/index.6.5.0-cfs.zip    | Bin 0 -> 15832 bytes
 .../org/apache/lucene/index/index.6.5.0-nocfs.zip  | Bin 0 -> 15836 bytes
 3 files changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/56d455c4/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
index 1dda6b6..8e87dcc 100644
--- a/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
+++ b/lucene/backward-codecs/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
@@ -297,7 +297,9 @@ public class TestBackwardsCompatibility extends LuceneTestCase {
     "6.4.1-cfs",
     "6.4.1-nocfs",
     "6.4.2-cfs",
-    "6.4.2-nocfs"
+    "6.4.2-nocfs",
+    "6.5.0-cfs",
+    "6.5.0-nocfs"
   };
   
   final String[] unsupportedNames = {

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

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


[49/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10344: Update Solr default/example and test configs to use WordDelimiterGraphFilterFactory

Posted by cp...@apache.org.
SOLR-10344: Update Solr default/example and test configs to use WordDelimiterGraphFilterFactory


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

Branch: refs/heads/jira/solr-6203
Commit: b46b8278c60102eeaeb45dddf239356746da7de8
Parents: cb20eae
Author: Steve Rowe <sa...@gmail.com>
Authored: Mon Mar 27 23:53:55 2017 -0400
Committer: Steve Rowe <sa...@gmail.com>
Committed: Mon Mar 27 23:53:55 2017 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  2 +
 .../clustering/solr/collection1/conf/schema.xml | 23 +++++--
 .../solr/collection1/conf/synonyms.txt          |  2 +-
 .../conf/dataimport-schema-no-unique-key.xml    |  7 +-
 .../solr/collection1/conf/dataimport-schema.xml | 17 +++--
 .../conf/dataimport-solr_id-schema.xml          | 23 +++++--
 .../extraction/solr/collection1/conf/schema.xml | 40 ++++++++----
 .../solr/collection1/conf/synonyms.txt          |  2 +-
 .../uima/solr/collection1/conf/schema.xml       | 37 +++++++----
 .../uima/solr/collection1/conf/synonyms.txt     |  2 +-
 .../test-files/uima/uima-tokenizers-schema.xml  | 34 +++++++---
 .../conf/schema-HighlighterMaxOffsetTest.xml    |  5 +-
 .../collection1/conf/schema-copyfield-test.xml  | 29 ++++++---
 .../collection1/conf/schema-docValuesJoin.xml   |  5 +-
 .../solr/collection1/conf/schema-folding.xml    |  2 +-
 .../solr/collection1/conf/schema-hash.xml       | 59 ++++++++++++-----
 .../collection1/conf/schema-psuedo-fields.xml   |  5 +-
 .../collection1/conf/schema-required-fields.xml | 18 ++++--
 .../solr/collection1/conf/schema-rest.xml       | 63 ++++++++++++------
 .../conf/schema-single-dynamic-copy-field.xml   | 63 ++++++++++++------
 .../solr/collection1/conf/schema-sql.xml        | 59 ++++++++++++-----
 .../solr/collection1/conf/schema-trie.xml       | 23 +++++--
 .../test-files/solr/collection1/conf/schema.xml | 58 ++++++++++++-----
 .../solr/collection1/conf/schema11.xml          | 27 ++++++--
 .../solr/collection1/conf/schema12.xml          | 63 ++++++++++++------
 .../solr/collection1/conf/schema15.xml          | 63 ++++++++++++------
 .../solr/collection1/conf/schema_latest.xml     | 27 ++++++--
 .../solr/collection1/conf/schemasurround.xml    | 68 +++++++++++++-------
 .../solr/collection1/conf/synonyms.txt          |  2 +-
 .../solr/collection1/conf/wdftypes.txt          |  2 +-
 .../configsets/cloud-dynamic/conf/schema.xml    | 35 +++++++---
 .../solr/configsets/doc-expiry/conf/schema.xml  | 35 +++++++---
 .../org/apache/solr/ConvertedLegacyTest.java    |  2 +-
 .../FieldAnalysisRequestHandlerTest.java        | 14 ++--
 .../solr/rest/schema/TestBulkSchemaAPI.java     | 29 ++++++++-
 .../example-DIH/solr/db/conf/managed-schema     | 26 ++++++--
 .../example-DIH/solr/db/conf/synonyms.txt       |  2 +-
 .../example-DIH/solr/mail/conf/managed-schema   | 26 ++++++--
 .../example-DIH/solr/mail/conf/synonyms.txt     |  2 +-
 .../example-DIH/solr/rss/conf/managed-schema    | 31 ++++++---
 .../example-DIH/solr/rss/conf/synonyms.txt      |  2 +-
 .../example-DIH/solr/solr/conf/managed-schema   | 26 ++++++--
 .../example-DIH/solr/solr/conf/synonyms.txt     |  2 +-
 .../example-DIH/solr/tika/conf/managed-schema   | 23 +++++--
 solr/example/files/conf/managed-schema          | 20 ++++--
 solr/example/files/conf/synonyms.txt            |  2 +-
 .../basic_configs/conf/managed-schema           | 26 ++++++--
 .../configsets/basic_configs/conf/synonyms.txt  |  2 +-
 .../conf/managed-schema                         | 26 ++++++--
 .../conf/synonyms.txt                           |  2 +-
 .../conf/managed-schema                         | 26 ++++++--
 .../conf/synonyms.txt                           |  2 +-
 .../solrj/solr/collection1/conf/schema-sql.xml  | 59 ++++++++++++-----
 .../solrj/solr/collection1/conf/schema.xml      | 59 ++++++++++++-----
 .../solr/configsets/streaming/conf/schema.xml   | 56 +++++++++++-----
 .../solr/client/solrj/request/SchemaTest.java   |  2 +-
 56 files changed, 984 insertions(+), 383 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index b380e6b..3403c90 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -151,6 +151,8 @@ Other Changes
 
 * SOLR-10352: bin/solr script now prints warning when available system entropy is lower than 300 (Esther Quansah via
   Ishan Chattopadhyaya)
+  
+* SOLR-10344: Update Solr default/example and test configs to use WordDelimiterGraphFilterFactory. (Steve Rowe)
 
 ==================  6.5.0 ==================
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml b/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
index 0c06a48..02626a0 100644
--- a/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
+++ b/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
@@ -155,7 +155,7 @@
     </analyzer>
   </fieldType>
 
-  <!-- A text field that uses WordDelimiterFilter to enable splitting and matching of
+  <!-- A text field that uses WordDelimiterGraphFilter to enable splitting and matching of
       words on case-change, alpha numeric boundaries, and non-alphanumeric chars,
       so that a query of "wifi" or "wi fi" could match a document containing "Wi-Fi".
       Synonyms and stopwords are customized by external files, and stemming is enabled.
@@ -174,18 +174,19 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory" />
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -198,11 +199,23 @@
   <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
        but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
   <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+              catenateNumbers="1" catenateAll="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+      <filter class="solr.EnglishMinimalStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory" />
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/synonyms.txt b/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/synonyms.txt
index b0e31cb..26d237a 100644
--- a/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/synonyms.txt
+++ b/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/synonyms.txt
@@ -23,7 +23,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-schema-no-unique-key.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-schema-no-unique-key.xml b/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-schema-no-unique-key.xml
index 068322e..84d0dbe 100644
--- a/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-schema-no-unique-key.xml
+++ b/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-schema-no-unique-key.xml
@@ -158,7 +158,7 @@
     </analyzer>
   </fieldType>
 
-  <!-- A text field that uses WordDelimiterFilter to enable splitting and matching of
+  <!-- A text field that uses WordDelimiterGraphFilter to enable splitting and matching of
       words on case-change, alpha numeric boundaries, and non-alphanumeric chars,
       so that a query of "wifi" or "wi fi" could match a document containing "Wi-Fi".
       Synonyms and stopwords are customized by external files, and stemming is enabled.
@@ -172,18 +172,19 @@
       <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <!--<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>-->
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <!--<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-schema.xml b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-schema.xml
index 8d62c84..86bd231 100644
--- a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-schema.xml
+++ b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-schema.xml
@@ -10,23 +10,32 @@
   <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory" />
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
     </analyzer>
   </fieldType>
   <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+              catenateNumbers="1" catenateAll="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory" />
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solr_id-schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solr_id-schema.xml b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solr_id-schema.xml
index 9a95797..da4bd39 100644
--- a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solr_id-schema.xml
+++ b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solr_id-schema.xml
@@ -156,7 +156,7 @@
     </analyzer>
   </fieldType>
 
-  <!-- A text field that uses WordDelimiterFilter to enable splitting and matching of
+  <!-- A text field that uses WordDelimiterGraphFilter to enable splitting and matching of
       words on case-change, alpha numeric boundaries, and non-alphanumeric chars,
       so that a query of "wifi" or "wi fi" could match a document containing "Wi-Fi".
       Synonyms and stopwords are customized by external files, and stemming is enabled.
@@ -170,18 +170,19 @@
       <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <!--<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>-->
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <!--<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -194,11 +195,23 @@
   <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
        but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
   <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>-->
+      <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+              catenateNumbers="1" catenateAll="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <!--<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+      <filter class="solr.EnglishMinimalStemFilterFactory"/>-->
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>-->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <!--<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/schema.xml b/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/schema.xml
index bd9adbe..b743ed8 100644
--- a/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/schema.xml
+++ b/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/schema.xml
@@ -55,26 +55,41 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <fieldType name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -233,15 +248,16 @@
   <fieldType name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -253,13 +269,14 @@
   <fieldType name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -269,13 +286,14 @@
   <fieldType name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/contrib/ltr/src/test-files/solr/collection1/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test-files/solr/collection1/conf/synonyms.txt b/solr/contrib/ltr/src/test-files/solr/collection1/conf/synonyms.txt
index 0ef0e8d..461ed4d 100644
--- a/solr/contrib/ltr/src/test-files/solr/collection1/conf/synonyms.txt
+++ b/solr/contrib/ltr/src/test-files/solr/collection1/conf/synonyms.txt
@@ -21,7 +21,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/schema.xml b/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/schema.xml
index 5e0273e..89d44e6 100644
--- a/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/schema.xml
+++ b/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/schema.xml
@@ -191,7 +191,7 @@
     </fieldType>
 
     <!--
-      A text field that uses WordDelimiterFilter to enable splitting and
+      A text field that uses WordDelimiterGraphFilter to enable splitting and
       matching of words on case-change, alpha numeric boundaries, and
       non-alphanumeric chars, so that a query of "wifi" or "wi fi" could
       match a document containing "Wi-Fi". Synonyms and stopwords are
@@ -212,11 +212,11 @@
         -->
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />
-        <filter class="solr.WordDelimiterFilterFactory"
+        <filter class="solr.WordDelimiterGraphFilterFactory"
           generateWordParts="1" generateNumberParts="1" catenateWords="1"
           catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
         <filter class="solr.LowerCaseFilterFactory" />
-        
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory" />
@@ -224,7 +224,7 @@
           ignoreCase="true" expand="true" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />
-        <filter class="solr.WordDelimiterFilterFactory"
+        <filter class="solr.WordDelimiterGraphFilterFactory"
           generateWordParts="1" generateNumberParts="1" catenateWords="0"
           catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
         <filter class="solr.LowerCaseFilterFactory" />
@@ -240,23 +240,36 @@
     -->
     <fieldType name="textTight" class="solr.TextField"
       positionIncrementGap="100">
-      <analyzer>
+      <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory" />
         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
           ignoreCase="true" expand="false" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />
-        <filter class="solr.WordDelimiterFilterFactory"
+        <filter class="solr.WordDelimiterGraphFilterFactory"
           generateWordParts="0" generateNumberParts="0" catenateWords="1"
           catenateNumbers="1" catenateAll="0" />
         <filter class="solr.LowerCaseFilterFactory" />
         
         <!--
           this filter can remove any duplicate tokens that appear at the
-          same position - sometimes possible with WordDelimiterFilter in
+          same position - sometimes possible with WordDelimiterGraphFilter in
           conjuncton with stemming.
         -->
         <filter class="solr.RemoveDuplicatesTokenFilterFactory" />
+        <filter class="solr.FlattenGraphFilterFactory" />
+      </analyzer>
+      <analyzer type="query">
+        <tokenizer class="solr.MockTokenizerFactory" />
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
+                ignoreCase="true" expand="false" />
+        <filter class="solr.StopFilterFactory" ignoreCase="true"
+                words="stopwords.txt" />
+        <filter class="solr.WordDelimiterGraphFilterFactory"
+                generateWordParts="0" generateNumberParts="0" catenateWords="1"
+                catenateNumbers="1" catenateAll="0" />
+        <filter class="solr.LowerCaseFilterFactory" />
+        <filter class="solr.RemoveDuplicatesTokenFilterFactory" />
       </analyzer>
     </fieldType>
 
@@ -271,10 +284,11 @@
         <tokenizer class="solr.MockTokenizerFactory" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />
-        <filter class="solr.WordDelimiterFilterFactory"
+        <filter class="solr.WordDelimiterGraphFilterFactory"
           generateWordParts="1" generateNumberParts="1" catenateWords="1"
           catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" />
         <filter class="solr.LowerCaseFilterFactory" />
+        <filter class="solr.FlattenGraphFilterFactory" />
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory" />
@@ -282,7 +296,7 @@
           ignoreCase="true" expand="true" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />
-        <filter class="solr.WordDelimiterFilterFactory"
+        <filter class="solr.WordDelimiterGraphFilterFactory"
           generateWordParts="1" generateNumberParts="1" catenateWords="0"
           catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />
         <filter class="solr.LowerCaseFilterFactory" />
@@ -301,13 +315,14 @@
         <tokenizer class="solr.MockTokenizerFactory" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />
-        <filter class="solr.WordDelimiterFilterFactory"
+        <filter class="solr.WordDelimiterGraphFilterFactory"
           generateWordParts="1" generateNumberParts="1" catenateWords="1"
           catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" />
         <filter class="solr.LowerCaseFilterFactory" />
         <filter class="solr.ReversedWildcardFilterFactory"
           withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2"
           maxFractionAsterisk="0.33" />
+        <filter class="solr.FlattenGraphFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory" />
@@ -315,7 +330,7 @@
           ignoreCase="true" expand="true" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />
-        <filter class="solr.WordDelimiterFilterFactory"
+        <filter class="solr.WordDelimiterGraphFilterFactory"
           generateWordParts="1" generateNumberParts="1" catenateWords="0"
           catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" />
         <filter class="solr.LowerCaseFilterFactory" />

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/synonyms.txt b/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/synonyms.txt
index b0e31cb..26d237a 100644
--- a/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/synonyms.txt
+++ b/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/synonyms.txt
@@ -23,7 +23,7 @@ fooaaa,baraaa,bazaaa
 GB,gib,gigabyte,gigabytes
 MB,mib,megabyte,megabytes
 Television, Televisions, TV, TVs
-#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
+#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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml b/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml
index 0007be7..229d69b 100644
--- a/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml
+++ b/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml
@@ -191,7 +191,7 @@
   </fieldType>
 
   <!--
-    A text field that uses WordDelimiterFilter to enable splitting and
+    A text field that uses WordDelimiterGraphFilter to enable splitting and
     matching of words on case-change, alpha numeric boundaries, and
     non-alphanumeric chars, so that a query of "wifi" or "wi fi" could
     match a document containing "Wi-Fi". Synonyms and stopwords are
@@ -210,16 +210,18 @@
       <!--
         Case insensitive stop word removal. add
       -->
-      <filter class="solr.WordDelimiterFilterFactory"
+      <filter class="solr.WordDelimiterGraphFilterFactory"
               generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
 
+      <filter class="solr.FlattenGraphFilterFactory"/>
+
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
 
-      <filter class="solr.WordDelimiterFilterFactory"
+      <filter class="solr.WordDelimiterGraphFilterFactory"
               generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
@@ -235,19 +237,29 @@
   -->
   <fieldType name="textTight" class="solr.TextField"
              positionIncrementGap="100">
-    <analyzer>
+    <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory"
+      <filter class="solr.WordDelimiterGraphFilterFactory"
               generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
 
       <!--
         this filter can remove any duplicate tokens that appear at the
-        same position - sometimes possible with WordDelimiterFilter in
+        same position - sometimes possible with WordDelimiterGraphFilter in
         conjuncton with stemming.
       -->
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+
+      <filter class="solr.FlattenGraphFilterFactory" />
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory"
+              generateWordParts="0" generateNumberParts="0" catenateWords="1"
+              catenateNumbers="1" catenateAll="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
     </analyzer>
   </fieldType>
 
@@ -277,14 +289,15 @@
              positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory"
+      <filter class="solr.WordDelimiterGraphFilterFactory"
               generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory"
+      <filter class="solr.WordDelimiterGraphFilterFactory"
               generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
@@ -301,17 +314,18 @@
              positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory"
+      <filter class="solr.WordDelimiterGraphFilterFactory"
               generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.ReversedWildcardFilterFactory"
               withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2"
               maxFractionAsterisk="0.33"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory"
+      <filter class="solr.WordDelimiterGraphFilterFactory"
               generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml b/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml
index 808453c..122d4ce 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml
@@ -67,16 +67,17 @@ Test for HighlighterMaxOffsetTest which requires the use of ReversedWildcardFilt
   <fieldType name="text_stx" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
               maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml b/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
index 47ddeb2..a9df7f8 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
@@ -60,17 +60,25 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory" />
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -229,15 +237,16 @@
   <fieldType name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -249,13 +258,14 @@
   <fieldType name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -265,13 +275,14 @@
   <fieldType name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
index 1d559bb..baed872 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
@@ -42,11 +42,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -55,7 +56,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-folding.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-folding.xml b/solr/core/src/test-files/solr/collection1/conf/schema-folding.xml
index cc9cae3..2b0bf32 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-folding.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-folding.xml
@@ -47,7 +47,7 @@
     </analyzer>
     <analyzer type="multiterm">        <!-- Intentionally different to test that these are kept  distinct -->
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.ASCIIFoldingFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-hash.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-hash.xml b/solr/core/src/test-files/solr/collection1/conf/schema-hash.xml
index b132473..6a7987c 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-hash.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-hash.xml
@@ -72,26 +72,41 @@
   <fieldtype name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldtype>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldtype name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldtype>
 
   <fieldtype name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -191,9 +206,16 @@
     </analyzer>
   </fieldtype>
   <fieldtype name="lowerpunctfilt" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+              catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -265,15 +287,16 @@
   <fieldtype name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -285,15 +308,16 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
@@ -304,8 +328,9 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" splitOnNumerics="0" splitOnCaseChange="0" generateWordParts="1"
               generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -318,13 +343,14 @@
   <fieldtype name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -334,13 +360,14 @@
   <fieldtype name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-psuedo-fields.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-psuedo-fields.xml b/solr/core/src/test-files/solr/collection1/conf/schema-psuedo-fields.xml
index 20f2d2d..8491ce8 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-psuedo-fields.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-psuedo-fields.xml
@@ -50,11 +50,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -63,7 +64,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml b/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
index d3a7818..c92b901 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
@@ -60,9 +60,10 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
@@ -219,15 +220,16 @@
   <fieldType name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -239,13 +241,14 @@
   <fieldType name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -255,13 +258,14 @@
   <fieldType name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b46b8278/solr/core/src/test-files/solr/collection1/conf/schema-rest.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-rest.xml b/solr/core/src/test-files/solr/collection1/conf/schema-rest.xml
index 8bd603b..7d9bf02 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-rest.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-rest.xml
@@ -45,26 +45,41 @@
   <fieldType name="failtype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <!-- Demonstrating ignoreCaseChange -->
   <fieldType name="wdf_nocase" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
 
   <fieldType name="wdf_preserve" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+              catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -90,11 +105,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -103,7 +119,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -153,11 +169,12 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -166,7 +183,7 @@
               ignoreCase="true"
               words="stopwords.txt"
       />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -300,15 +317,16 @@
   <fieldType name="subword" class="solr.TextField" multiValued="true" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory"/>
@@ -320,16 +338,17 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1"
               catenateAll="0"/>
       <filter class="solr.StopFilterFactory"/>
@@ -341,9 +360,10 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" splitOnNumerics="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" protected="protwords.txt" splitOnNumerics="0"
               splitOnCaseChange="0" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0"
               catenateAll="0"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
@@ -356,13 +376,14 @@
   <fieldType name="skutype1" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -372,13 +393,14 @@
   <fieldType name="skutype2" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -401,16 +423,17 @@
       <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.PorterStemFilterFactory"/>


[60/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10357: Enable edismax and standard query parsers to handle the option combination sow=false / autoGeneratePhraseQueries=true by setting QueryBuilder.autoGenerateMultiTermSynonymsQuery

Posted by cp...@apache.org.
SOLR-10357: Enable edismax and standard query parsers to handle the option combination sow=false / autoGeneratePhraseQueries=true by setting QueryBuilder.autoGenerateMultiTermSynonymsQuery


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

Branch: refs/heads/jira/solr-6203
Commit: 0a689f4d95e981e99ae0e80741e7cf1fa74ff60f
Parents: 6b0217b
Author: Steve Rowe <sa...@apache.org>
Authored: Tue Mar 28 18:39:28 2017 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Tue Mar 28 18:39:28 2017 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt                                |   3 +
 .../org/apache/solr/parser/QueryParser.java     |  11 +-
 .../java/org/apache/solr/parser/QueryParser.jj  |  11 +-
 .../solr/search/ExtendedDismaxQParser.java      |   8 --
 .../QueryParserConfigurationException.java      |  24 ----
 .../solr/collection1/conf/synonyms.txt          |   1 +
 .../solr/search/TestExtendedDismaxParser.java   | 141 +++++++++++++------
 .../apache/solr/search/TestSolrQueryParser.java |  48 +++++--
 8 files changed, 148 insertions(+), 99 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0a689f4d/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 49300fe..9d14e59 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -164,6 +164,9 @@ Other Changes
 * SOLR-10365: Handle a SolrCoreInitializationException while publishing core state during SolrCore creation
   (Ishan Chattopadhyaya)
 
+* SOLR-10357: Enable edismax and standard query parsers to handle the option combination 
+  sow=false / autoGeneratePhraseQueries="true" by setting QueryBuilder.autoGenerateMultiTermSynonymsQuery.
+
 ==================  6.5.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0a689f4d/solr/core/src/java/org/apache/solr/parser/QueryParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/parser/QueryParser.java b/solr/core/src/java/org/apache/solr/parser/QueryParser.java
index d9a64f4..e846c6e 100644
--- a/solr/core/src/java/org/apache/solr/parser/QueryParser.java
+++ b/solr/core/src/java/org/apache/solr/parser/QueryParser.java
@@ -13,7 +13,6 @@ import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.Query;
 import org.apache.solr.search.SyntaxError;
 import org.apache.solr.search.QParser;
-import org.apache.solr.search.QueryParserConfigurationException;
 
 
 public class QueryParser extends SolrQueryParserBase implements QueryParserConstants {
@@ -54,11 +53,11 @@ public class QueryParser extends SolrQueryParserBase implements QueryParserConst
   @Override
   protected Query newFieldQuery(Analyzer analyzer, String field, String queryText,
                                 boolean quoted, boolean fieldAutoGenPhraseQueries) throws SyntaxError {
-    if ((getAutoGeneratePhraseQueries() || fieldAutoGenPhraseQueries) && splitOnWhitespace == false) {
-      throw new QueryParserConfigurationException
-          ("Field '" + field + "': autoGeneratePhraseQueries == true is disallowed when sow/splitOnWhitespace == false");
-    }
-    return super.newFieldQuery(analyzer, field, queryText, quoted, fieldAutoGenPhraseQueries);
+    setAutoGenerateMultiTermSynonymsPhraseQuery(fieldAutoGenPhraseQueries || getAutoGeneratePhraseQueries());
+    // Don't auto-quote graph-aware field queries 
+    boolean treatAsQuoted = getSplitOnWhitespace()
+        ? (quoted || fieldAutoGenPhraseQueries || getAutoGeneratePhraseQueries()) : quoted;
+    return super.newFieldQuery(analyzer, field, queryText, treatAsQuoted, false);
   }
 
 // *   Query  ::= ( Clause )*

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0a689f4d/solr/core/src/java/org/apache/solr/parser/QueryParser.jj
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/parser/QueryParser.jj b/solr/core/src/java/org/apache/solr/parser/QueryParser.jj
index 5eb4ec7..d4d6539 100644
--- a/solr/core/src/java/org/apache/solr/parser/QueryParser.jj
+++ b/solr/core/src/java/org/apache/solr/parser/QueryParser.jj
@@ -37,7 +37,6 @@ import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.Query;
 import org.apache.solr.search.SyntaxError;
 import org.apache.solr.search.QParser;
-import org.apache.solr.search.QueryParserConfigurationException;
 
 
 public class QueryParser extends SolrQueryParserBase {
@@ -78,11 +77,11 @@ public class QueryParser extends SolrQueryParserBase {
   @Override
   protected Query newFieldQuery(Analyzer analyzer, String field, String queryText,
                                 boolean quoted, boolean fieldAutoGenPhraseQueries) throws SyntaxError {
-    if ((getAutoGeneratePhraseQueries() || fieldAutoGenPhraseQueries) && splitOnWhitespace == false) {
-      throw new QueryParserConfigurationException
-          ("Field '" + field + "': autoGeneratePhraseQueries == true is disallowed when sow/splitOnWhitespace == false");
-    }
-    return super.newFieldQuery(analyzer, field, queryText, quoted, fieldAutoGenPhraseQueries);
+    setAutoGenerateMultiTermSynonymsPhraseQuery(fieldAutoGenPhraseQueries || getAutoGeneratePhraseQueries());
+    // Don't auto-quote graph-aware field queries 
+    boolean treatAsQuoted = getSplitOnWhitespace()
+        ? (quoted || fieldAutoGenPhraseQueries || getAutoGeneratePhraseQueries()) : quoted;
+    return super.newFieldQuery(analyzer, field, queryText, treatAsQuoted, false);
   }
 }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0a689f4d/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
index a4f9312..9825f72 100644
--- a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
@@ -310,8 +310,6 @@ public class ExtendedDismaxQParser extends QParser {
         up.setRemoveStopFilter(true);
         query = up.parse(mainUserQuery);          
       }
-    } catch (QueryParserConfigurationException e) {
-      throw e; // Don't ignore configuration exceptions
     } catch (Exception e) {
       // ignore failure and reparse later after escaping reserved chars
       up.exceptions = false;
@@ -1083,10 +1081,6 @@ public class ExtendedDismaxQParser extends QParser {
     @Override
     protected Query newFieldQuery(Analyzer analyzer, String field, String queryText, 
                                   boolean quoted, boolean fieldAutoGenPhraseQueries) throws SyntaxError {
-      if ((getAutoGeneratePhraseQueries() || fieldAutoGenPhraseQueries) && getSplitOnWhitespace() == false) {
-        throw new QueryParserConfigurationException
-            ("Field '" + field + "': autoGeneratePhraseQueries == true is disallowed when sow/splitOnWhitespace == false");
-      }
       Analyzer actualAnalyzer;
       if (removeStopFilter) {
         if (nonStopFilterAnalyzerPerField == null) {
@@ -1403,8 +1397,6 @@ public class ExtendedDismaxQParser extends QParser {
         }
         return null;
         
-      } catch (QueryParserConfigurationException e) {
-        throw e;  // Don't ignore configuration exceptions
       } catch (Exception e) {
         // an exception here is due to the field query not being compatible with the input text
         // for example, passing a string to a numeric field.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0a689f4d/solr/core/src/java/org/apache/solr/search/QueryParserConfigurationException.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/QueryParserConfigurationException.java b/solr/core/src/java/org/apache/solr/search/QueryParserConfigurationException.java
deleted file mode 100644
index 0dd2a33..0000000
--- a/solr/core/src/java/org/apache/solr/search/QueryParserConfigurationException.java
+++ /dev/null
@@ -1,24 +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.search;
-
-public class QueryParserConfigurationException extends IllegalArgumentException {
-  public QueryParserConfigurationException(String message) {
-    super(message);
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0a689f4d/solr/core/src/test-files/solr/collection1/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/synonyms.txt b/solr/core/src/test-files/solr/collection1/conf/synonyms.txt
index f64cb72..54cf2cc 100644
--- a/solr/core/src/test-files/solr/collection1/conf/synonyms.txt
+++ b/solr/core/src/test-files/solr/collection1/conf/synonyms.txt
@@ -31,3 +31,4 @@ pixima => pixma
 
 # multiword synonyms
 wi fi => wifi
+crow blackbird, grackle
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0a689f4d/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java b/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
index a887fed..c4d8bec 100644
--- a/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
+++ b/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
@@ -21,6 +21,7 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Random;
 import java.util.Set;
+import java.util.stream.Stream;
 
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
@@ -34,7 +35,6 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.schema.TextField;
 import org.apache.solr.util.SolrPluginUtils;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -66,7 +66,7 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
                  "foo_i", "8"
     ));
     assertU(adoc("id", "47", "trait_ss", "Pig",
-            "text_sw", "line up and fly directly at the enemy death cannons, clogging them with wreckage!"));
+            "text", "line up and fly directly at the enemy death cannons, clogging them with wreckage!"));
     assertU(adoc("id", "48", "text_sw", "this has gigabyte potential", "foo_i","100"));
     assertU(adoc("id", "49", "text_sw", "start the big apple end", "foo_i","-100"));
     assertU(adoc("id", "50", "text_sw", "start new big city end"));
@@ -121,22 +121,22 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
       // really just test that exceptions aren't thrown by
       // single + -
 
-      assertJQ(req("defType", "edismax", "q", "-", "df", "text_sw", "sow", sow)
+      assertJQ(req("defType", "edismax", "q", "-", "sow", sow)
           , "/response==");
 
-      assertJQ(req("defType", "edismax", "q", "+", "df", "text_sw", "sow", sow)
+      assertJQ(req("defType", "edismax", "q", "+", "sow", sow)
           , "/response==");
 
-      assertJQ(req("defType", "edismax", "q", "+ - +", "df", "text_sw", "sow", sow)
+      assertJQ(req("defType", "edismax", "q", "+ - +", "sow", sow)
           , "/response==");
 
-      assertJQ(req("defType", "edismax", "q", "- + -", "df", "text_sw", "sow", sow)
+      assertJQ(req("defType", "edismax", "q", "- + -", "sow", sow)
           , "/response==");
 
-      assertJQ(req("defType", "edismax", "q", "id:47 +", "df", "text_sw", "sow", sow)
+      assertJQ(req("defType", "edismax", "q", "id:47 +", "sow", sow)
           , "/response/numFound==1");
 
-      assertJQ(req("defType", "edismax", "q", "id:47 -", "df", "text_sw", "sow", sow)
+      assertJQ(req("defType", "edismax", "q", "id:47 -", "sow", sow)
           , "/response/numFound==1");
 
       Random r = random();
@@ -152,7 +152,7 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
         }
 
         String q = sb.toString();
-        assertJQ(req("defType", "edismax", "q", q, "df", "text_sw", "sow", sow)
+        assertJQ(req("defType", "edismax", "q", q, "sow", sow)
             , "/response==");
       }
     }
@@ -264,7 +264,7 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
            , twor
            );
    
-   assertQ(req("defType", "edismax", "qf", "name title subject text_sw",
+   assertQ(req("defType", "edismax", "qf", "name title subject text",
                "q","op"), twor
     );
    assertQ(req("defType", "edismax", 
@@ -277,29 +277,29 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
                "q.op", "OR",
                "q","Order op"), twor
     );
-   assertQ(req("defType", "edismax", "qf", "name title subject text_sw",
+   assertQ(req("defType", "edismax", "qf", "name title subject text",
                "q","Order AND op"), oner
     );
-   assertQ(req("defType", "edismax", "qf", "name title subject text_sw",
+   assertQ(req("defType", "edismax", "qf", "name title subject text",
                "q","Order and op"), oner
     );
-    assertQ(req("defType", "edismax", "qf", "name title subject text_sw",
+    assertQ(req("defType", "edismax", "qf", "name title subject text",
                "q","+Order op"), oner
     );
-    assertQ(req("defType", "edismax", "qf", "name title subject text_sw",
+    assertQ(req("defType", "edismax", "qf", "name title subject text",
                "q","Order OR op"), twor
     );
-    assertQ(req("defType", "edismax", "qf", "name title subject text_sw",
+    assertQ(req("defType", "edismax", "qf", "name title subject text",
                "q","Order or op"), twor
     );
-    assertQ(req("defType", "edismax", "qf", "name title subject text_sw",
+    assertQ(req("defType", "edismax", "qf", "name title subject text",
                "q","*:*"), allr
     );
 
-    assertQ(req("defType", "edismax", "qf", "name title subject text_sw",
+    assertQ(req("defType", "edismax", "qf", "name title subject text",
            "q","star OR (-star)"), allr
     );
-    assertQ(req("defType", "edismax", "qf", "name title subject text_sw",
+    assertQ(req("defType", "edismax", "qf", "name title subject text",
            "q","id:42 OR (-id:42)"), allr
     );
 
@@ -551,7 +551,7 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
         "//str[@name='parsedquery_toString'][.='+(id:42)^5.0']");
     
     
-    assertQ(req("defType","edismax", "uf","-*", "q","cannons", "qf","text_sw"),
+    assertQ(req("defType","edismax", "uf","-*", "q","cannons", "qf","text"),
         oner);
     
     assertQ(req("defType","edismax", "uf","* -id", "q","42", "qf", "id"), oner);
@@ -885,7 +885,7 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
         "*[count(//doc)=3]");
     assertQ(
         "Might be double-escaping a client-escaped colon", 
-        req("q", "text_sw:(theos OR thistokenhasa\\:preescapedcolon OR theou)", "defType", "edismax", "qf", "text_sw"),
+        req("q", "text_sw:(theos OR thistokenhasa\\:preescapedcolon OR theou)", "defType", "edismax", "qf", "text"),
         "*[count(//doc)=3]");    
     
   }
@@ -1047,56 +1047,56 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
     // "line up and fly directly at the enemy death cannons, clogging them with wreckage!"
     assertQ("test default operator with mm (AND + 0% => 0 hits)",
         req("q", "(line notfound) OR notfound",
-            "qf", "text_sw",
+            "qf", "text",
             "q.op", "AND",
             "mm", "0%",
             "defType", "edismax")
         , "*[count(//doc)=0]");
     assertQ("test default operator with mm (OR + 0% => 1 hit)",
         req("q", "line notfound OR notfound",
-            "qf", "text_sw",
+            "qf", "text",
             "q.op", "OR",
             "mm", "0%",
             "defType", "edismax")
         , "*[count(//doc)=1]");
     assertQ("test default operator with mm (OR + 100% => 0 hits)",
         req("q", "line notfound OR notfound",
-            "qf", "text_sw",
+            "qf", "text",
             "q.op", "OR",
             "mm", "100%",
             "defType", "edismax")
         , "*[count(//doc)=0]");
     assertQ("test default operator with mm (OR + 35% => 1 hit)",
         req("q", "line notfound notfound2 OR notfound",
-            "qf", "text_sw",
+            "qf", "text",
             "q.op", "OR",
             "mm", "35%",
             "defType", "edismax")
         , "*[count(//doc)=1]");
     assertQ("test default operator with mm (OR + 75% => 0 hits)",
         req("q", "line notfound notfound2 OR notfound3",
-            "qf", "text_sw",
+            "qf", "text",
             "q.op", "OR",
             "mm", "75%",
             "defType", "edismax")
         , "*[count(//doc)=0]");
     assertQ("test default operator with mm (AND + 0% => 1 hit)",
         req("q", "(line enemy) OR notfound",
-            "qf", "text_sw",
+            "qf", "text",
             "q.op", "AND",
             "mm", "0%",
             "defType", "edismax")
         , "*[count(//doc)=1]");
     assertQ("test default operator with mm (AND + 50% => 1 hit)",
         req("q", "(line enemy) OR (line notfound) OR (death cannons) OR (death notfound)",
-            "qf", "text_sw",
+            "qf", "text",
             "q.op", "AND",
             "mm", "50%",
             "defType", "edismax")
         , "*[count(//doc)=1]");
     assertQ("test default operator with mm (AND + 75% => 0 hits)",
         req("q", "(line enemy) OR (line notfound) OR (death cannons) OR (death notfound)",
-            "qf", "text_sw",
+            "qf", "text",
             "q.op", "AND",
             "mm", "75%",
             "defType", "edismax")
@@ -1394,16 +1394,6 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
     
   }
 
-  // LUCENE-7533
-  public void testSplitOnWhitespace_with_autoGeneratePhraseQueries() throws Exception {
-    assertTrue(((TextField)h.getCore().getLatestSchema().getField("text").getType()).getAutoGeneratePhraseQueries());
-
-    try (SolrQueryRequest req = req()) {
-      final QParser qparser = QParser.getParser("{!edismax sow=false fq=text}blah blah)", req);
-      expectThrows(IllegalArgumentException.class, qparser::getQuery);
-    }
-  }
-
   @Test
   public void testSplitOnWhitespace_Basic() throws Exception {
     // The "text_sw" field has synonyms loaded from synonyms.txt
@@ -1550,7 +1540,7 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
         , "/response/numFound==0"
     );
     assertJQ(req("qf","text_sw title", "defType","edismax", "q","wi* fi", "sow","false")
-        , "/response/numFound==2"    // matches because wi* matches "wifi" in one doc and "with" in another
+        , "/response/numFound==1"    // matches because wi* matches "wifi"
     );
     assertJQ(req("qf","text_sw title", "defType","edismax", "q","w? fi", "sow","false")
         , "/response/numFound==0"
@@ -1720,7 +1710,7 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
         , "/response/numFound==1"
     );
     assertJQ(req("qf","text_sw title", "defType","edismax", "q","AT* wi fi", "sow","false")
-        , "/response/numFound==2"
+        , "/response/numFound==1"
     );
     assertJQ(req("qf","text_sw title", "defType","edismax", "q","AT? wi fi", "sow","false")
         , "/response/numFound==1"
@@ -1750,7 +1740,7 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
         , "/response/numFound==1"
     );
     assertJQ(req("qf","text_sw title", "defType","edismax", "q","wi fi AT*", "sow","false")
-        , "/response/numFound==2"
+        , "/response/numFound==1"
     );
     assertJQ(req("qf","text_sw title", "defType","edismax", "q","wi fi AT?", "sow","false")
         , "/response/numFound==1"
@@ -1765,11 +1755,74 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
         , "/response/numFound==1"
     );
   }
-  
-  
+
+  public void testAutoGeneratePhraseQueries() throws Exception {
+    ModifiableSolrParams noSowParams = new ModifiableSolrParams();
+    ModifiableSolrParams sowFalseParams = new ModifiableSolrParams();
+    sowFalseParams.add("sow", "false");
+    ModifiableSolrParams sowTrueParams = new ModifiableSolrParams();
+    sowTrueParams.add("sow", "true");
+
+    // From synonyms.txt:
+    //
+    //     crow blackbird, grackle
+
+    try (SolrQueryRequest req = req(sowFalseParams)) {
+      QParser qParser = QParser.getParser("text:grackle", "edismax", req); // "text" has autoGeneratePhraseQueries="true"
+      Query q = qParser.getQuery();
+      assertEquals("+(text:\"crow blackbird\" text:grackl)", q.toString());
+    }
+    for (SolrParams params : Arrays.asList(noSowParams, sowTrueParams)) {
+      try (SolrQueryRequest req = req(params)) {
+        QParser qParser = QParser.getParser("text:grackle", "edismax", req);
+        Query q = qParser.getQuery();
+        assertEquals("+spanOr([spanNear([text:crow, text:blackbird], 0, true), text:grackl])", q.toString());
+      }
+    }
+    for (SolrParams params : Arrays.asList(noSowParams, sowTrueParams, sowFalseParams)) {
+      try (SolrQueryRequest req = req(params)) {
+        QParser qParser = QParser.getParser("text_sw:grackle", "edismax", req); // "text_sw" doesn't specify autoGeneratePhraseQueries => default false
+        Query q = qParser.getQuery();
+        assertEquals("+((+text_sw:crow +text_sw:blackbird) text_sw:grackl)", q.toString());
+      }
+    }
+
+    Stream.of(noSowParams, sowTrueParams, sowFalseParams).forEach(p->p.add("qf", "text text_sw"));
+
+    try (SolrQueryRequest req = req(sowFalseParams)) {
+      QParser qParser = QParser.getParser("grackle", "edismax", req);
+      Query q = qParser.getQuery();
+      assertEquals("+((text:\"crow blackbird\" text:grackl)"
+              + " | ((+text_sw:crow +text_sw:blackbird) text_sw:grackl))",
+          q.toString());
+
+      qParser = QParser.getParser("grackle wi fi", "edismax", req);
+      q = qParser.getQuery();
+      assertEquals("+(((text:\"crow blackbird\" text:grackl) text:wifi)"
+              + " | (((+text_sw:crow +text_sw:blackbird) text_sw:grackl) text_sw:wifi))",
+          q.toString());
+    }
+    
+    for (SolrParams params : Arrays.asList(noSowParams, sowTrueParams)) {
+      try (SolrQueryRequest req = req(params)) {
+        QParser qParser = QParser.getParser("grackle", "edismax", req);
+        Query q = qParser.getQuery();
+        assertEquals("+(spanOr([spanNear([text:crow, text:blackbird], 0, true), text:grackl])"
+                + " | ((+text_sw:crow +text_sw:blackbird) text_sw:grackl))",
+            q.toString());
+
+        qParser = QParser.getParser("grackle wi fi", "edismax", req);
+        q = qParser.getQuery();
+        assertEquals("+((spanOr([spanNear([text:crow, text:blackbird], 0, true), text:grackl])"
+            + " | ((+text_sw:crow +text_sw:blackbird) text_sw:grackl)) (text:wi | text_sw:wi) (text:fi | text_sw:fi))",
+            q.toString());
+      }
+    }
+  }
+
 
   private boolean containsClause(Query query, String field, String value,
-      int boost, boolean fuzzy) {
+                                 int boost, boolean fuzzy) {
 
     float queryBoost = 1f;
     if (query instanceof BoostQuery) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0a689f4d/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java b/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
index 92bd6c0..607f091 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
@@ -34,11 +34,12 @@ import org.apache.lucene.search.TermInSetQuery;
 import org.apache.lucene.search.TermQuery;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.params.MapSolrParams;
+import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.core.SolrInfoMBean;
 import org.apache.solr.parser.QueryParser;
 import org.apache.solr.query.FilterQuery;
 import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.schema.TextField;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.noggit.ObjectBuilder;
@@ -573,16 +574,6 @@ public class TestSolrQueryParser extends SolrTestCaseJ4 {
     req.close();
   }
 
-  // LUCENE-7533
-  public void testSplitOnWhitespace_with_autoGeneratePhraseQueries() throws Exception {
-    assertTrue(((TextField)h.getCore().getLatestSchema().getField("text").getType()).getAutoGeneratePhraseQueries());
-    
-    try (SolrQueryRequest req = req()) {
-      final QParser qparser = QParser.getParser("{!lucene sow=false qf=text}blah blah", req);
-      expectThrows(QueryParserConfigurationException.class, qparser::getQuery);
-    }
-  }
-
   @Test
   public void testSplitOnWhitespace_Basic() throws Exception {
     // The "syn" field has synonyms loaded from synonyms.txt
@@ -969,4 +960,39 @@ public class TestSolrQueryParser extends SolrTestCaseJ4 {
         , "/response/numFound==1"
     );
   }
+
+  @Test
+  public void testAutoGeneratePhraseQueries() throws Exception {
+    ModifiableSolrParams noSowParams = new ModifiableSolrParams();
+    ModifiableSolrParams sowFalseParams = new ModifiableSolrParams();
+    sowFalseParams.add("sow", "false");
+    ModifiableSolrParams sowTrueParams = new ModifiableSolrParams();
+    sowTrueParams.add("sow", "true");
+
+    // From synonyms.txt:
+    //
+    //     crow blackbird, grackle
+    //
+    try (SolrQueryRequest req = req()) {
+
+      QParser qParser = QParser.getParser("text:grackle", req); // "text" has autoGeneratePhraseQueries="true"
+      qParser.setParams(sowFalseParams);
+      Query q = qParser.getQuery();
+      assertEquals("text:\"crow blackbird\" text:grackl", q.toString());
+
+      for (SolrParams params : Arrays.asList(noSowParams, sowTrueParams)) {
+        qParser = QParser.getParser("text:grackle", req);
+        qParser.setParams(params);
+        q = qParser.getQuery();
+        assertEquals("spanOr([spanNear([text:crow, text:blackbird], 0, true), text:grackl])", q.toString());
+      }
+
+      for (SolrParams params : Arrays.asList(noSowParams, sowTrueParams, sowFalseParams)) {
+        qParser = QParser.getParser("text_sw:grackle", req); // "text_sw" doesn't specify autoGeneratePhraseQueries => default false
+        qParser.setParams(params);
+        q = qParser.getQuery();
+        assertEquals("(+text_sw:crow +text_sw:blackbird) text_sw:grackl", q.toString());
+      }
+    }
+  }
 }
\ No newline at end of file


[53/73] [abbrv] lucene-solr:jira/solr-6203: LUCENE-7754: Inner classes should be static whenever possible.

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/lucene/tools/src/java/org/apache/lucene/validation/LibVersionsCheckTask.java
----------------------------------------------------------------------
diff --git a/lucene/tools/src/java/org/apache/lucene/validation/LibVersionsCheckTask.java b/lucene/tools/src/java/org/apache/lucene/validation/LibVersionsCheckTask.java
index 3179c78..d7844b0 100644
--- a/lucene/tools/src/java/org/apache/lucene/validation/LibVersionsCheckTask.java
+++ b/lucene/tools/src/java/org/apache/lucene/validation/LibVersionsCheckTask.java
@@ -150,7 +150,7 @@ public class LibVersionsCheckTask extends Task {
    */
   private Map<String,HashSet<String>> ignoreConflictVersions = new HashMap<>();
 
-  private class Dependency {
+  private static class Dependency {
     String org;
     String name;
     String directVersion;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java b/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java
index 7545eac..d4418da 100644
--- a/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java
+++ b/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java
@@ -728,8 +728,8 @@ public class MailEntityProcessor extends EntityProcessorBase {
       return true;
     }
   }
-  
-  class MailsSinceLastCheckFilter implements CustomFilter {
+
+  static class MailsSinceLastCheckFilter implements CustomFilter {
     
     private Date since;
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/VariableResolver.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/VariableResolver.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/VariableResolver.java
index 51b5841..8fced58 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/VariableResolver.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/VariableResolver.java
@@ -167,7 +167,7 @@ public class VariableResolver {
     return TemplateUpdateProcessorFactory.getVariables(expr, cache);
   }
 
-  class CurrentLevel {
+  static class CurrentLevel {
     final Map<String,Object> map;
     final int level;
     CurrentLevel(int level, Map<String,Object> map) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHCacheTestCase.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHCacheTestCase.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHCacheTestCase.java
index b72f379..2ef5a91 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHCacheTestCase.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHCacheTestCase.java
@@ -73,7 +73,7 @@ public class AbstractDIHCacheTestCase {
 
   //A limitation of this test class is that the primary key needs to be the first one in the list.
   //DIHCaches, however, can handle any field being the primary key.
-  class ControlData implements Comparable<ControlData>, Iterable<Object> {
+  static class ControlData implements Comparable<ControlData>, Iterable<Object> {
     Object[] data;
 
     ControlData(Object[] data) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractSqlEntityProcessorTestCase.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractSqlEntityProcessorTestCase.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractSqlEntityProcessorTestCase.java
index 06b89c3..2774044 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractSqlEntityProcessorTestCase.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractSqlEntityProcessorTestCase.java
@@ -568,8 +568,8 @@ public abstract class AbstractSqlEntityProcessorTestCase extends
     }
     return changeSet.toArray(new String[changeSet.size()]);
   }
-  
-  class IntChanges {
+
+  static class IntChanges {
     public Integer[] changedKeys;
     public Integer[] deletedKeys;
     public Integer[] addedKeys;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java
index 95af5f9..089a133 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java
@@ -109,7 +109,7 @@ public class TestContentStreamDataSource extends AbstractDataImportHandlerTestCa
     fail("Commit should have occured but it did not");
   }
   
-  private class SolrInstance {
+  private static class SolrInstance {
     String name;
     Integer port;
     File homeDir;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/contrib/extraction/src/java/org/apache/solr/handler/extraction/XLSXResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/contrib/extraction/src/java/org/apache/solr/handler/extraction/XLSXResponseWriter.java b/solr/contrib/extraction/src/java/org/apache/solr/handler/extraction/XLSXResponseWriter.java
index 27a30d1..92bd01f 100644
--- a/solr/contrib/extraction/src/java/org/apache/solr/handler/extraction/XLSXResponseWriter.java
+++ b/solr/contrib/extraction/src/java/org/apache/solr/handler/extraction/XLSXResponseWriter.java
@@ -98,7 +98,7 @@ class XLSXWriter extends TextResponseWriter {
   SolrQueryRequest req;
   SolrQueryResponse rsp;
 
-  class SerialWriteWorkbook {
+  static class SerialWriteWorkbook {
     SXSSFWorkbook swb;
     Sheet sh;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
index 37990ea..6ecbb6f 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
@@ -300,7 +300,7 @@ public class LTRScoringQuery extends Query {
     return field;
   }
 
-  public class FeatureInfo {
+  public static class FeatureInfo {
     final private String name;
     private float value;
     private boolean used;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
index a98fc4f..75d3538 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
@@ -80,7 +80,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
     return features;
   }
 
-  private class MockModel extends LTRScoringModel {
+  private static class MockModel extends LTRScoringModel {
 
     public MockModel(String name, List<Feature> features,
         List<Normalizer> norms,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java
----------------------------------------------------------------------
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
index e7cc9b7..133bc63 100644
--- a/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java
+++ b/solr/contrib/velocity/src/java/org/apache/solr/response/VelocityResponseWriter.java
@@ -376,7 +376,7 @@ public class VelocityResponseWriter implements QueryResponseWriter, SolrCoreAwar
   }
 
   // see: http://svn.apache.org/repos/asf/velocity/tools/branches/2.0.x/src/main/java/org/apache/velocity/tools/generic/ResourceTool.java
-  private class SolrVelocityResourceTool extends ResourceTool {
+  private static class SolrVelocityResourceTool extends ResourceTool {
 
     private ClassLoader solrClassLoader;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/cloud/Overseer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/Overseer.java b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
index e0449b4..4d3cee7 100644
--- a/solr/core/src/java/org/apache/solr/cloud/Overseer.java
+++ b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
@@ -431,7 +431,7 @@ public class Overseer implements Closeable {
 
   }
 
-  class OverseerThread extends Thread implements Closeable {
+  static class OverseerThread extends Thread implements Closeable {
 
     protected volatile boolean isClosed;
     private Closeable thread;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
index c7604d6..e031303 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
@@ -108,7 +108,7 @@ public class OverseerTaskQueue extends DistributedQueue {
   /**
    * Watcher that blocks until a WatchedEvent occurs for a znode.
    */
-  private final class LatchWatcher implements Watcher {
+  private static final class LatchWatcher implements Watcher {
 
     private final Object lock;
     private WatchedEvent event;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/cloud/ZkController.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index 69a77f9..a3f1fd4 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -239,7 +239,7 @@ public class ZkController {
   }
 
   // notifies registered listeners after the ZK reconnect in the background
-  private class OnReconnectNotifyAsync implements Callable {
+  private static class OnReconnectNotifyAsync implements Callable {
 
     private final OnReconnect listener;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java
index 08a8a4e..e710063 100644
--- a/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java
@@ -48,7 +48,7 @@ import org.slf4j.LoggerFactory;
  * 
  */
 public abstract class CachingDirectoryFactory extends DirectoryFactory {
-  protected class CacheValue {
+  protected static class CacheValue {
     final public String path;
     final public Directory directory;
     // for debug

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/handler/CdcrReplicator.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrReplicator.java b/solr/core/src/java/org/apache/solr/handler/CdcrReplicator.java
index 75a787b..a151a43 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrReplicator.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrReplicator.java
@@ -207,7 +207,7 @@ public class CdcrReplicator implements Runnable {
   /**
    * Exception to catch update request issues with the target cluster.
    */
-  public class CdcrReplicatorException extends Exception {
+  public static class CdcrReplicatorException extends Exception {
 
     private final UpdateRequest req;
     private final UpdateResponse rsp;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorState.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorState.java b/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorState.java
index 2ca0d80..bf80608 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorState.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorState.java
@@ -197,7 +197,7 @@ class CdcrReplicatorState {
 
   }
 
-  class BenchmarkTimer {
+  static class BenchmarkTimer {
 
     private long startTime;
     private long runTime = 0;
@@ -266,7 +266,7 @@ class CdcrReplicatorState {
 
   }
 
-  private class ErrorQueueEntry {
+  private static class ErrorQueueEntry {
 
     private ErrorType type;
     private Date timestamp;
@@ -277,7 +277,7 @@ class CdcrReplicatorState {
     }
   }
 
-  private class FixedQueue<E> extends LinkedList<E> {
+  private static class FixedQueue<E> extends LinkedList<E> {
 
     private int maxSize;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/handler/ExportWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/ExportWriter.java b/solr/core/src/java/org/apache/solr/handler/ExportWriter.java
index 7602d9e..bd43d5f 100644
--- a/solr/core/src/java/org/apache/solr/handler/ExportWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/ExportWriter.java
@@ -939,7 +939,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     public int resetValue();
   }
 
-  class IntDesc implements IntComp {
+  static class IntDesc implements IntComp {
 
     public int resetValue() {
       return Integer.MIN_VALUE;
@@ -956,7 +956,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     }
   }
 
-  class IntAsc implements IntComp {
+  static class IntAsc implements IntComp {
 
     public int resetValue() {
       return Integer.MAX_VALUE;
@@ -1032,7 +1032,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     public long resetValue();
   }
 
-  class LongDesc implements LongComp {
+  static class LongDesc implements LongComp {
 
     public long resetValue() {
       return Long.MIN_VALUE;
@@ -1049,7 +1049,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     }
   }
 
-  class LongAsc implements LongComp {
+  static class LongAsc implements LongComp {
 
     public long resetValue() {
       return Long.MAX_VALUE;
@@ -1125,7 +1125,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     public float resetValue();
   }
 
-  public class FloatDesc implements FloatComp {
+  public static class FloatDesc implements FloatComp {
     public float resetValue() {
       return -Float.MAX_VALUE;
     }
@@ -1141,7 +1141,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     }
   }
 
-  public class FloatAsc implements FloatComp {
+  public static class FloatAsc implements FloatComp {
     public float resetValue() {
       return Float.MAX_VALUE;
     }
@@ -1219,7 +1219,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     public double resetValue();
   }
 
-  public class DoubleDesc implements DoubleComp {
+  public static class DoubleDesc implements DoubleComp {
     public double resetValue() {
       return -Double.MAX_VALUE;
     }
@@ -1235,7 +1235,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     }
   }
 
-  public class DoubleAsc implements DoubleComp {
+  public static class DoubleAsc implements DoubleComp {
     public double resetValue() {
       return Double.MAX_VALUE;
     }
@@ -1712,7 +1712,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     }
   }
 
-  public class IgnoreException extends IOException {
+  public static class IgnoreException extends IOException {
     public void printStackTrace(PrintWriter pw) {
       pw.print("Early Client Disconnect");
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
index 5efb6c5..d79effd 100644
--- a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
+++ b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
@@ -1690,7 +1690,7 @@ public class IndexFetcher {
     }
   }
 
-  private class DirectoryFile implements FileInterface {
+  private static class DirectoryFile implements FileInterface {
     private final String saveAs;
     private Directory copy2Dir;
     private IndexOutput outStream;
@@ -1725,7 +1725,7 @@ public class IndexFetcher {
     }
   }
 
-  private class LocalFsFile implements FileInterface {
+  private static class LocalFsFile implements FileInterface {
     private File copy2Dir;
 
     FileChannel fileChannel;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/SQLHandler.java b/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
index 7563fe8..f307baa 100644
--- a/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SQLHandler.java
@@ -141,7 +141,7 @@ public class SQLHandler extends RequestHandlerBase implements SolrCoreAware, Per
   /*
    * Only necessary for SolrJ JDBC driver since metadata has to be passed back
    */
-  private class SqlHandlerStream extends JDBCStream {
+  private static class SqlHandlerStream extends JDBCStream {
     private final boolean includeMetadata;
     private boolean firstTuple = true;
     List<String> metadataFields = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java b/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
index 8078bdc..f6ecd8d 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
@@ -521,7 +521,7 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
     rb.rsp.add("expanded", expanded);
   }
 
-  private class GroupExpandCollector implements Collector, GroupCollector {
+  private static class GroupExpandCollector implements Collector, GroupCollector {
     private SortedDocValues docValues;
     private MultiDocValues.OrdinalMap ordinalMap;
     private SortedDocValues segmentValues;
@@ -614,7 +614,7 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
     }
   }
 
-  private class NumericGroupExpandCollector implements Collector, GroupCollector {
+  private static class NumericGroupExpandCollector implements Collector, GroupCollector {
     private NumericDocValues docValues;
 
     private String field;
@@ -763,7 +763,7 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
 
   // this reader alters the content of the given reader so it should not
   // delegate the caching stuff
-  private class ReaderWrapper extends FilterLeafReader {
+  private static class ReaderWrapper extends FilterLeafReader {
 
     private String field;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
index 83a2d60..1c016c7 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
@@ -283,7 +283,7 @@ public class HttpShardHandlerFactory extends ShardHandlerFactory implements org.
    * If all nodes prefer local-cores then a bad/heavily-loaded node will receive less requests from healthy nodes.
    * This will help prevent a distributed deadlock or timeouts in all the healthy nodes due to one bad node.
    */
-  private class IsOnPreferredHostComparator implements Comparator<Object> {
+  private static class IsOnPreferredHostComparator implements Comparator<Object> {
     final private String preferredHostAddress;
     public IsOnPreferredHostComparator(String preferredHostAddress) {
       this.preferredHostAddress = preferredHostAddress;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/handler/component/PivotFacetFieldValueCollection.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/PivotFacetFieldValueCollection.java b/solr/core/src/java/org/apache/solr/handler/component/PivotFacetFieldValueCollection.java
index 6aae231..5c2b07f 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/PivotFacetFieldValueCollection.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/PivotFacetFieldValueCollection.java
@@ -301,7 +301,7 @@ public class PivotFacetFieldValueCollection implements Iterable<PivotFacetValue>
   }
     
   /** Sorts {@link PivotFacetValue} instances by their count */
-  public class PivotFacetCountComparator implements Comparator<PivotFacetValue> {    
+  public static class PivotFacetCountComparator implements Comparator<PivotFacetValue> {
     public int compare(PivotFacetValue left, PivotFacetValue right) {
       int countCmp = right.getCount() - left.getCount();
       return (0 != countCmp) ? countCmp : 
@@ -310,7 +310,7 @@ public class PivotFacetFieldValueCollection implements Iterable<PivotFacetValue>
   }
   
   /** Sorts {@link PivotFacetValue} instances by their value */
-  public class PivotFacetValueComparator implements Comparator<PivotFacetValue> {
+  public static class PivotFacetValueComparator implements Comparator<PivotFacetValue> {
     public int compare(PivotFacetValue left, PivotFacetValue right) {
       return compareWithNullLast(left.getValue(), right.getValue());
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
index b76537a..e00120c 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
@@ -353,7 +353,7 @@ public class TermsComponent extends SearchComponent {
     return sreq;
   }
 
-  public class TermsHelper {
+  public static class TermsHelper {
     // map to store returned terms
     private HashMap<String, HashMap<String, TermsResponse.Term>> fieldmap;
     private SolrParams params;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java b/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
index e4ada59..098e1f7 100644
--- a/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
+++ b/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
@@ -750,7 +750,7 @@ public class DefaultSolrHighlighter extends SolrHighlighter implements PluginInf
   }
 
   // Wraps FVH to allow pass-by-reference. Public access to allow use in 3rd party subclasses
-  public class FvhContainer {
+  public static class FvhContainer {
     FastVectorHighlighter fvh;
     FieldQuery fieldQuery;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
index b22feab..9bc888d 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
@@ -368,13 +368,13 @@ public final class ManagedIndexSchema extends IndexSchema {
   }
 
 
-  public class FieldExistsException extends SolrException {
+  public static class FieldExistsException extends SolrException {
     public FieldExistsException(ErrorCode code, String msg) {
       super(code, msg);
     }
   }
 
-  public class SchemaChangedInZkException extends SolrException {
+  public static class SchemaChangedInZkException extends SolrException {
     public SchemaChangedInZkException(ErrorCode code, String msg) {
       super(code, msg);
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/schema/RandomSortField.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/schema/RandomSortField.java b/solr/core/src/java/org/apache/solr/schema/RandomSortField.java
index 0ecb195..44bb420 100644
--- a/solr/core/src/java/org/apache/solr/schema/RandomSortField.java
+++ b/solr/core/src/java/org/apache/solr/schema/RandomSortField.java
@@ -160,7 +160,7 @@ public class RandomSortField extends FieldType {
 
 
 
-  public class RandomValueSource extends ValueSource {
+  public static class RandomValueSource extends ValueSource {
     private final String field;
 
     public RandomValueSource(String field) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/search/ComplexPhraseQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/ComplexPhraseQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/ComplexPhraseQParserPlugin.java
index 22702dc..2a00a09 100644
--- a/solr/core/src/java/org/apache/solr/search/ComplexPhraseQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/ComplexPhraseQParserPlugin.java
@@ -59,9 +59,9 @@ public class ComplexPhraseQParserPlugin extends QParserPlugin {
   /**
    * Modified from {@link org.apache.solr.search.LuceneQParser} and {@link org.apache.solr.search.SurroundQParserPlugin.SurroundQParser}
    */
-  class ComplexPhraseQParser extends QParser {
+  static class ComplexPhraseQParser extends QParser {
 
-    final class SolrQueryParserDelegate extends SolrQueryParser {
+    static final class SolrQueryParserDelegate extends SolrQueryParser {
       private SolrQueryParserDelegate(QParser parser, String defaultField) {
         super(parser, defaultField);
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java
index 38bb74f..6c1714c 100644
--- a/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java
@@ -121,7 +121,7 @@ public class ExportQParserPlugin extends QParserPlugin {
     }
   }
   
-  private class ExportCollector extends TopDocsCollector  {
+  private static class ExportCollector extends TopDocsCollector  {
 
     private FixedBitSet[] sets;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
index c0aee88..a4f9312 100644
--- a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
@@ -956,7 +956,7 @@ public class ExtendedDismaxQParser extends QParser {
     
     /** A simple container for storing alias info
      */
-    protected class Alias {
+    protected static class Alias {
       public float tie;
       public Map<String,Float> fields;
     }
@@ -1597,7 +1597,7 @@ public class ExtendedDismaxQParser extends QParser {
   /**
    * Simple container for configuration information used when parsing queries
    */
-  public class ExtendedDismaxConfiguration {
+  public static class ExtendedDismaxConfiguration {
     
     /**
      * The field names specified by 'qf' that (most) clauses will 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java
index 3e0fc22..dc75289 100644
--- a/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/HashQParserPlugin.java
@@ -59,7 +59,7 @@ public class HashQParserPlugin extends QParserPlugin {
     return new HashQParser(query, localParams, params, request);
   }
 
-  private class HashQParser extends QParser {
+  private static class HashQParser extends QParser {
 
     public HashQParser(String query, SolrParams localParams, SolrParams params, SolrQueryRequest request) {
       super(query, localParams, params, request);
@@ -74,7 +74,7 @@ public class HashQParserPlugin extends QParserPlugin {
     }
   }
 
-  private class HashQuery extends ExtendedQueryBase implements PostFilter {
+  private static class HashQuery extends ExtendedQueryBase implements PostFilter {
 
     private String keysParam;
     private int workers;
@@ -135,7 +135,7 @@ public class HashQParserPlugin extends QParserPlugin {
       return searcher.rewrite(constantScoreQuery).createWeight(searcher, false, boost);
     }
 
-    public class BitsFilter extends Filter {
+    public static class BitsFilter extends Filter {
       private FixedBitSet[] bitSets;
       public BitsFilter(FixedBitSet[] bitSets) {
         this.bitSets = bitSets;
@@ -166,7 +166,7 @@ public class HashQParserPlugin extends QParserPlugin {
     }
 
 
-    class SegmentPartitioner implements Runnable {
+    static class SegmentPartitioner implements Runnable {
 
       public LeafReaderContext context;
       private int worker;
@@ -238,7 +238,7 @@ public class HashQParserPlugin extends QParserPlugin {
     }
   }
 
-  private class HashCollector extends DelegatingCollector {
+  private static class HashCollector extends DelegatingCollector {
     private int worker;
     private int workers;
     private HashKey hashKey;
@@ -271,7 +271,7 @@ public class HashQParserPlugin extends QParserPlugin {
     public long hashCode(int doc) throws IOException;
   }
 
-  private class BytesHash implements HashKey {
+  private static class BytesHash implements HashKey {
 
     private SortedDocValues values;
     private String field;
@@ -303,7 +303,7 @@ public class HashQParserPlugin extends QParserPlugin {
     }
   }
 
-  private class NumericHash implements HashKey {
+  private static class NumericHash implements HashKey {
 
     private NumericDocValues values;
     private String field;
@@ -331,7 +331,7 @@ public class HashQParserPlugin extends QParserPlugin {
     }
   }
 
-  private class ZeroHash implements HashKey {
+  private static class ZeroHash implements HashKey {
 
     public long hashCode(int doc) {
       return 0;
@@ -342,7 +342,7 @@ public class HashQParserPlugin extends QParserPlugin {
     }
   }
 
-  private class CompositeHash implements HashKey {
+  private static class CompositeHash implements HashKey {
 
     private HashKey key1;
     private HashKey key2;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/search/ReRankCollector.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/ReRankCollector.java b/solr/core/src/java/org/apache/solr/search/ReRankCollector.java
index 1ac1eaf..8f6bb76 100644
--- a/solr/core/src/java/org/apache/solr/search/ReRankCollector.java
+++ b/solr/core/src/java/org/apache/solr/search/ReRankCollector.java
@@ -139,7 +139,7 @@ public class ReRankCollector extends TopDocsCollector {
     }
   }
 
-  public class BoostedComp implements Comparator {
+  public static class BoostedComp implements Comparator {
     IntFloatHashMap boostedMap;
 
     public BoostedComp(IntIntHashMap boostedDocs, ScoreDoc[] scoreDocs, float maxScore) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
index 3e8bf86..1190cdb 100644
--- a/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
@@ -71,7 +71,7 @@ public class ReRankQParserPlugin extends QParserPlugin {
     }
   }
 
-  private final class ReRankQueryRescorer extends QueryRescorer {
+  private static final class ReRankQueryRescorer extends QueryRescorer {
 
     final double reRankWeight;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/search/facet/FacetFieldMerger.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldMerger.java b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldMerger.java
index 9f99919..63e8743 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldMerger.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldMerger.java
@@ -169,7 +169,7 @@ public class FacetFieldMerger extends FacetRequestSortedMerger<FacetField> {
 
 
 
-  private class FacetNumBucketsMerger extends FacetMerger {
+  private static class FacetNumBucketsMerger extends FacetMerger {
     long sumBuckets;
     long shardsMissingSum;
     long shardsTruncatedSum;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/search/facet/UniqueAgg.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/UniqueAgg.java b/solr/core/src/java/org/apache/solr/search/facet/UniqueAgg.java
index 5e1e97c..4cdfe02 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/UniqueAgg.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/UniqueAgg.java
@@ -187,7 +187,7 @@ public class UniqueAgg extends StrAggValueSource {
   }
 
 
-  class NumericAcc extends SlotAcc {
+  static class NumericAcc extends SlotAcc {
     SchemaField sf;
     LongSet[] sets;
     NumericDocValues values;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/search/function/CollapseScoreFunction.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/function/CollapseScoreFunction.java b/solr/core/src/java/org/apache/solr/search/function/CollapseScoreFunction.java
index 5378ea0..3932f56 100644
--- a/solr/core/src/java/org/apache/solr/search/function/CollapseScoreFunction.java
+++ b/solr/core/src/java/org/apache/solr/search/function/CollapseScoreFunction.java
@@ -45,7 +45,7 @@ public class CollapseScoreFunction extends ValueSource {
     return new CollapseScoreFunctionValues(context);
   }
 
-  public class CollapseScoreFunctionValues extends FunctionValues {
+  public static class CollapseScoreFunctionValues extends FunctionValues {
 
     private CollapseScore cscore;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java b/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
index 3f762e3..db41651 100644
--- a/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
+++ b/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
@@ -315,7 +315,7 @@ public class GraphQuery extends Query {
     
   }
   
-  private class GraphScorer extends Scorer {
+  private static class GraphScorer extends Scorer {
     
     final DocIdSetIterator iter;
     final float score;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/spelling/PossibilityIterator.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/spelling/PossibilityIterator.java b/solr/core/src/java/org/apache/solr/spelling/PossibilityIterator.java
index c4a7503..0203f18 100644
--- a/solr/core/src/java/org/apache/solr/spelling/PossibilityIterator.java
+++ b/solr/core/src/java/org/apache/solr/spelling/PossibilityIterator.java
@@ -360,7 +360,7 @@ public class PossibilityIterator implements
     throw new UnsupportedOperationException();
   }
   
-  public class RankedSpellPossibility {
+  public static class RankedSpellPossibility {
     public List<SpellCheckCorrection> corrections;
     public int rank;
     public int index;
@@ -406,7 +406,7 @@ public class PossibilityIterator implements
     }
   }
   
-  private class StartOffsetComparator implements
+  private static class StartOffsetComparator implements
       Comparator<SpellCheckCorrection> {
     @Override
     public int compare(SpellCheckCorrection o1, SpellCheckCorrection o2) {
@@ -414,7 +414,7 @@ public class PossibilityIterator implements
     }
   }
   
-  private class RankComparator implements Comparator<RankedSpellPossibility> {
+  private static class RankComparator implements Comparator<RankedSpellPossibility> {
     // Rank poorer suggestions ahead of better ones for use with a PriorityQueue
     @Override
     public int compare(RankedSpellPossibility r1, RankedSpellPossibility r2) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/update/UpdateLog.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateLog.java b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
index daa50a9..84a2005 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateLog.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
@@ -204,7 +204,7 @@ public static final int VERSION_IDX = 1;
     }
   };
 
-  public class DBQ {
+  public static class DBQ {
     public String q;     // the query string
     public long version; // positive version of the DBQ
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/util/RTimer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/RTimer.java b/solr/core/src/java/org/apache/solr/util/RTimer.java
index 7bf075c..1962460 100644
--- a/solr/core/src/java/org/apache/solr/util/RTimer.java
+++ b/solr/core/src/java/org/apache/solr/util/RTimer.java
@@ -41,7 +41,7 @@ public class RTimer {
     double elapsed();
   }
 
-  private class NanoTimeTimerImpl implements TimerImpl {
+  private static class NanoTimeTimerImpl implements TimerImpl {
     private long start;
     public void start() {
       start = System.nanoTime();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SimplePostTool.java b/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
index a8ef372..e642089 100644
--- a/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
+++ b/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
@@ -1065,7 +1065,7 @@ public class SimplePostTool {
   /**
    * Inner class to filter files based on glob wildcards
    */
-  class GlobFileFilter implements FileFilter
+  static class GlobFileFilter implements FileFilter
   {
     private String _pattern;
     private Pattern p;
@@ -1258,7 +1258,7 @@ public class SimplePostTool {
   /**
    * Utility class to hold the result form a page fetch
    */
-  public class PageFetcherResult {
+  public static class PageFetcherResult {
     int httpStatus = 200;
     String contentType = "text/html";
     URL redirectUrl = null;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/cloud/BaseCdcrDistributedZkTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/BaseCdcrDistributedZkTest.java b/solr/core/src/test/org/apache/solr/cloud/BaseCdcrDistributedZkTest.java
index 35cc444..8a88959 100644
--- a/solr/core/src/test/org/apache/solr/cloud/BaseCdcrDistributedZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/BaseCdcrDistributedZkTest.java
@@ -816,7 +816,7 @@ public class BaseCdcrDistributedZkTest extends AbstractDistribZkTestBase {
     return info;
   }
 
-  protected class CollectionInfo {
+  protected static class CollectionInfo {
 
     List<CoreInfo> coreInfos = new ArrayList<>();
 
@@ -869,7 +869,7 @@ public class BaseCdcrDistributedZkTest extends AbstractDistribZkTestBase {
       this.coreInfos.add(info);
     }
 
-    public class CoreInfo {
+    public static class CoreInfo {
       String collectionName;
       String shard;
       boolean isLeader;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyNothingIsSafeTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyNothingIsSafeTest.java b/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyNothingIsSafeTest.java
index 628884c..ffc5262 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyNothingIsSafeTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ChaosMonkeyNothingIsSafeTest.java
@@ -400,8 +400,8 @@ public class ChaosMonkeyNothingIsSafeTest extends AbstractFullDistribZkTestBase
     SolrInputDocument doc = getDoc(fields);
     indexDoc(doc);
   }
-  
-  class ErrorLoggingConcurrentUpdateSolrClient extends ConcurrentUpdateSolrClient {
+
+  static class ErrorLoggingConcurrentUpdateSolrClient extends ConcurrentUpdateSolrClient {
     public ErrorLoggingConcurrentUpdateSolrClient(String serverUrl, HttpClient httpClient, int queueSize, int threadCount) {
       super(serverUrl, httpClient, queueSize, threadCount, null, false);
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/cloud/ConnectionManagerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ConnectionManagerTest.java b/solr/core/src/test/org/apache/solr/cloud/ConnectionManagerTest.java
index 17d4c54..90d9cc1 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ConnectionManagerTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ConnectionManagerTest.java
@@ -153,7 +153,7 @@ public class ConnectionManagerTest extends SolrTestCaseJ4 {
     }
   }
   
-  private class MockZkClientConnectionStrategy extends DefaultConnectionStrategy {
+  private static class MockZkClientConnectionStrategy extends DefaultConnectionStrategy {
     int called = 0;
     boolean exceptionThrown = false;
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/cloud/DistributedQueueTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/DistributedQueueTest.java b/solr/core/src/test/org/apache/solr/cloud/DistributedQueueTest.java
index d1192a1..b6754c7 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DistributedQueueTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DistributedQueueTest.java
@@ -202,7 +202,7 @@ public class DistributedQueueTest extends SolrTestCaseJ4 {
     return new DistributedQueue(zkClient, setupNewDistributedQueueZNode(dqZNode));
   }
 
-  private class QueueChangerThread extends Thread {
+  private static class QueueChangerThread extends Thread {
 
     DistributedQueue dq;
     long waitBeforeOfferMs;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/cloud/LeaderElectionTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderElectionTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderElectionTest.java
index 2582872..cab5ee3 100644
--- a/solr/core/src/test/org/apache/solr/cloud/LeaderElectionTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/LeaderElectionTest.java
@@ -83,8 +83,8 @@ public class LeaderElectionTest extends SolrTestCaseJ4 {
     zkClient.makePath("/collections/collection1", true);
     zkClient.makePath("/collections/collection2", true);
   }
-  
-  class TestLeaderElectionContext extends ShardLeaderElectionContextBase {
+
+  static class TestLeaderElectionContext extends ShardLeaderElectionContextBase {
     private long runLeaderDelay = 0;
 
     public TestLeaderElectionContext(LeaderElector leaderElector,

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/cloud/OverriddenZkACLAndCredentialsProvidersTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/OverriddenZkACLAndCredentialsProvidersTest.java b/solr/core/src/test/org/apache/solr/cloud/OverriddenZkACLAndCredentialsProvidersTest.java
index 56c0df9..f4cbc77 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OverriddenZkACLAndCredentialsProvidersTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OverriddenZkACLAndCredentialsProvidersTest.java
@@ -214,7 +214,7 @@ public class OverriddenZkACLAndCredentialsProvidersTest extends SolrTestCaseJ4 {
     }
   }
   
-  private class SolrZkClientFactoryUsingCompletelyNewProviders {
+  private static class SolrZkClientFactoryUsingCompletelyNewProviders {
     
     final String digestUsername;
     final String digestPassword;
@@ -274,7 +274,7 @@ public class OverriddenZkACLAndCredentialsProvidersTest extends SolrTestCaseJ4 {
     
   }
   
-  private class SolrZkClientUsingVMParamsProvidersButWithDifferentVMParamsNames extends SolrZkClient {
+  private static class SolrZkClientUsingVMParamsProvidersButWithDifferentVMParamsNames extends SolrZkClient {
     
     public SolrZkClientUsingVMParamsProvidersButWithDifferentVMParamsNames(String zkServerAddress, int zkClientTimeout) {
       super(zkServerAddress, zkClientTimeout);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
index 635292a..48ac91f 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java
@@ -78,7 +78,7 @@ public class OverseerCollectionConfigSetProcessorTest extends SolrTestCaseJ4 {
   private Thread thread;
   private Queue<QueueEvent> queue = new ArrayBlockingQueue<>(10);
 
-  private class OverseerCollectionConfigSetProcessorToBeTested extends
+  private static class OverseerCollectionConfigSetProcessorToBeTested extends
       OverseerCollectionConfigSetProcessor {
     
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/cloud/ZkSolrClientTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ZkSolrClientTest.java b/solr/core/src/test/org/apache/solr/cloud/ZkSolrClientTest.java
index faa2ba7..b3a3d7e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ZkSolrClientTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ZkSolrClientTest.java
@@ -40,7 +40,7 @@ public class ZkSolrClientTest extends AbstractSolrTestCase {
     initCore("solrconfig.xml", "schema.xml");
   }
 
-  class ZkConnection implements AutoCloseable {
+  static class ZkConnection implements AutoCloseable {
 
     private ZkTestServer server = null;
     private SolrZkClient zkClient = null;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/core/CachingDirectoryFactoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/CachingDirectoryFactoryTest.java b/solr/core/src/test/org/apache/solr/core/CachingDirectoryFactoryTest.java
index 7a7fb9c..8714054 100644
--- a/solr/core/src/test/org/apache/solr/core/CachingDirectoryFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/core/CachingDirectoryFactoryTest.java
@@ -41,7 +41,7 @@ public class CachingDirectoryFactoryTest extends SolrTestCaseJ4 {
   private Map<String,Tracker> dirs = new HashMap<>();
   private volatile boolean stop = false;
   
-  private class Tracker {
+  private static class Tracker {
     String path;
     AtomicInteger refCnt = new AtomicInteger(0);
     Directory dir;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/handler/AnalysisRequestHandlerTestBase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/AnalysisRequestHandlerTestBase.java b/solr/core/src/test/org/apache/solr/handler/AnalysisRequestHandlerTestBase.java
index d5f8492..2b52720 100644
--- a/solr/core/src/test/org/apache/solr/handler/AnalysisRequestHandlerTestBase.java
+++ b/solr/core/src/test/org/apache/solr/handler/AnalysisRequestHandlerTestBase.java
@@ -49,7 +49,7 @@ public abstract class AnalysisRequestHandlerTestBase extends SolrTestCaseJ4 {
 
   //================================================= Inner Classes ==================================================
 
-  protected class TokenInfo {
+  protected static class TokenInfo {
 
     private String text;
     private String rawText;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/handler/PingRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/PingRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/PingRequestHandlerTest.java
index 96a01c3..b9ab2c1 100644
--- a/solr/core/src/test/org/apache/solr/handler/PingRequestHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/PingRequestHandlerTest.java
@@ -231,7 +231,7 @@ public class PingRequestHandlerTest extends SolrTestCaseJ4 {
     return rsp;
   }
 
-  class SolrPingWithDistrib extends SolrPing {
+  static class SolrPingWithDistrib extends SolrPing {
     public SolrPing setDistrib(boolean distrib) {   
       getParams().add("distrib", distrib ? "true" : "false");
       return this;    

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/handler/XmlUpdateRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/XmlUpdateRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/XmlUpdateRequestHandlerTest.java
index 6d46722..961bb25 100644
--- a/solr/core/src/test/org/apache/solr/handler/XmlUpdateRequestHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/XmlUpdateRequestHandlerTest.java
@@ -194,7 +194,7 @@ public class XmlUpdateRequestHandlerTest extends SolrTestCaseJ4 {
       p.assertNoCommandsPending();
     }
 
-    private class MockUpdateRequestProcessor extends UpdateRequestProcessor {
+    private static class MockUpdateRequestProcessor extends UpdateRequestProcessor {
 
       private Queue<DeleteUpdateCommand> deleteCommands = new LinkedList<>();
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/handler/admin/CoreMergeIndexesAdminHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/CoreMergeIndexesAdminHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/CoreMergeIndexesAdminHandlerTest.java
index d026ecd..890ef4a 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/CoreMergeIndexesAdminHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/CoreMergeIndexesAdminHandlerTest.java
@@ -50,7 +50,7 @@ public class CoreMergeIndexesAdminHandlerTest extends SolrTestCaseJ4 {
 
   private static String FAILING_MSG = "Creating a directory using FailingDirectoryFactoryException always fails";
   public static class FailingDirectoryFactory extends MockFSDirectoryFactory {
-    public class FailingDirectoryFactoryException extends RuntimeException {
+    public static class FailingDirectoryFactoryException extends RuntimeException {
       public FailingDirectoryFactoryException() {
         super(FAILING_MSG);
       }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/internal/csv/CSVParserTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/internal/csv/CSVParserTest.java b/solr/core/src/test/org/apache/solr/internal/csv/CSVParserTest.java
index 0688c52..ba604f8 100644
--- a/solr/core/src/test/org/apache/solr/internal/csv/CSVParserTest.java
+++ b/solr/core/src/test/org/apache/solr/internal/csv/CSVParserTest.java
@@ -37,7 +37,7 @@ public class CSVParserTest extends TestCase {
   /**
    * TestCSVParser.
    */
-  class TestCSVParser extends CSVParser {
+  static class TestCSVParser extends CSVParser {
     /**
      * Test parser to investigate the type of the internal Token.
      * @param in a Reader

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/metrics/reporters/SolrGraphiteReporterTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/reporters/SolrGraphiteReporterTest.java b/solr/core/src/test/org/apache/solr/metrics/reporters/SolrGraphiteReporterTest.java
index e58c9dd..f45b193 100644
--- a/solr/core/src/test/org/apache/solr/metrics/reporters/SolrGraphiteReporterTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/reporters/SolrGraphiteReporterTest.java
@@ -78,7 +78,7 @@ public class SolrGraphiteReporterTest extends SolrTestCaseJ4 {
     }
   }
 
-  private class MockGraphite extends Thread {
+  private static class MockGraphite extends Thread {
     private List<String> lines = new ArrayList<>();
     private ServerSocket server = null;
     private int port;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/response/TestGraphMLResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/response/TestGraphMLResponseWriter.java b/solr/core/src/test/org/apache/solr/response/TestGraphMLResponseWriter.java
index e974b42..72af04b 100644
--- a/solr/core/src/test/org/apache/solr/response/TestGraphMLResponseWriter.java
+++ b/solr/core/src/test/org/apache/solr/response/TestGraphMLResponseWriter.java
@@ -84,7 +84,7 @@ public class TestGraphMLResponseWriter extends SolrTestCaseJ4 {
 
   }
 
-  private class TestStream extends TupleStream {
+  private static class TestStream extends TupleStream {
 
     private Iterator<Tuple> tuples;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/rest/TestManagedResource.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/rest/TestManagedResource.java b/solr/core/src/test/org/apache/solr/rest/TestManagedResource.java
index cce2109..c06abf0 100644
--- a/solr/core/src/test/org/apache/solr/rest/TestManagedResource.java
+++ b/solr/core/src/test/org/apache/solr/rest/TestManagedResource.java
@@ -49,7 +49,7 @@ public class TestManagedResource extends SolrTestCaseJ4 {
    * Mock class that acts like an analysis component that depends on
    * data managed by a ManagedResource
    */
-  private class MockAnalysisComponent implements ManagedResourceObserver {
+  private static class MockAnalysisComponent implements ManagedResourceObserver {
     
     private boolean wasNotified = false;
 
@@ -121,7 +121,7 @@ public class TestManagedResource extends SolrTestCaseJ4 {
   /**
    * Implements a Java serialization based storage format.
    */
-  private class SerializableStorage extends ManagedResourceStorage {
+  private static class SerializableStorage extends ManagedResourceStorage {
     
     SerializableStorage(StorageIO storageIO, SolrResourceLoader loader) {
       super(storageIO, loader);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/rest/TestRestManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/rest/TestRestManager.java b/solr/core/src/test/org/apache/solr/rest/TestRestManager.java
index ab2c45b..cc6c58a 100644
--- a/solr/core/src/test/org/apache/solr/rest/TestRestManager.java
+++ b/solr/core/src/test/org/apache/solr/rest/TestRestManager.java
@@ -62,7 +62,7 @@ public class TestRestManager extends SolrRestletTestBase {
     
   }
   
-  private class MockAnalysisComponent implements ManagedResourceObserver {
+  private static class MockAnalysisComponent implements ManagedResourceObserver {
 
     @Override
     public void onManagedResourceInitialized(NamedList<?> args, ManagedResource res)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java b/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java
index e724da9..e6e4da1 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java
@@ -248,7 +248,7 @@ public class TestCloudManagedSchemaConcurrent extends AbstractFullDistribZkTestB
     schemaLockTest();
   }
   
-  private class Info {
+  private static class Info {
     int numAddFieldPuts = 0;
     int numAddFieldPosts = 0;
     int numAddDynamicFieldPuts = 0;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/search/AnalyticsTestQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/AnalyticsTestQParserPlugin.java b/solr/core/src/test/org/apache/solr/search/AnalyticsTestQParserPlugin.java
index 392fb82..158df17 100644
--- a/solr/core/src/test/org/apache/solr/search/AnalyticsTestQParserPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/AnalyticsTestQParserPlugin.java
@@ -42,7 +42,7 @@ public class AnalyticsTestQParserPlugin extends QParserPlugin {
     return new TestAnalyticsQueryParser(query, localParams, params, req);
   }
 
-  class TestAnalyticsQueryParser extends QParser {
+  static class TestAnalyticsQueryParser extends QParser {
 
     public TestAnalyticsQueryParser(String query, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
       super(query, localParams, params, req);
@@ -58,7 +58,7 @@ public class AnalyticsTestQParserPlugin extends QParserPlugin {
     }
   }
 
-  class TestAnalyticsQuery extends AnalyticsQuery {
+  static class TestAnalyticsQuery extends AnalyticsQuery {
 
     private int base;
 
@@ -72,7 +72,7 @@ public class AnalyticsTestQParserPlugin extends QParserPlugin {
     }
   }
 
-  class TestAnalyticsCollector extends DelegatingCollector {
+  static class TestAnalyticsCollector extends DelegatingCollector {
     ResponseBuilder rb;
     int count;
     int base;
@@ -97,7 +97,7 @@ public class AnalyticsTestQParserPlugin extends QParserPlugin {
     }
   }
 
-  class TestAnalyticsMergeStrategy implements MergeStrategy {
+  static class TestAnalyticsMergeStrategy implements MergeStrategy {
 
     public boolean mergesIds() {
       return false;
@@ -130,7 +130,7 @@ public class AnalyticsTestQParserPlugin extends QParserPlugin {
     }
   }
 
-  class TestIterative extends IterativeMergeStrategy  {
+  static class TestIterative extends IterativeMergeStrategy  {
 
     public void process(ResponseBuilder rb, ShardRequest sreq) throws Exception {
       int count = 0;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java b/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
index 27bf40f..a887fed 100644
--- a/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
+++ b/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
@@ -1830,7 +1830,7 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
     return false;
   }
 
-  class MultilanguageQueryParser extends ExtendedDismaxQParser {
+  static class MultilanguageQueryParser extends ExtendedDismaxQParser {
 
     public MultilanguageQueryParser(String qstr, SolrParams localParams,
         SolrParams params, SolrQueryRequest req) {
@@ -1857,10 +1857,10 @@ public class TestExtendedDismaxParser extends SolrTestCaseJ4 {
     }
     
   }
-  
-  
-  
-  class FuzzyDismaxQParser extends ExtendedDismaxQParser {
+
+
+
+  static class FuzzyDismaxQParser extends ExtendedDismaxQParser {
 
     public FuzzyDismaxQParser(String qstr, SolrParams localParams,
         SolrParams params, SolrQueryRequest req) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/search/TestFiltering.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestFiltering.java b/solr/core/src/test/org/apache/solr/search/TestFiltering.java
index 9f9a51a..c718283 100644
--- a/solr/core/src/test/org/apache/solr/search/TestFiltering.java
+++ b/solr/core/src/test/org/apache/solr/search/TestFiltering.java
@@ -174,7 +174,7 @@ public class TestFiltering extends SolrTestCaseJ4 {
   }
 
 
-  class Model {
+  static class Model {
     int indexSize;
     FixedBitSet answer;
     FixedBitSet multiSelect;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java b/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java
index b42861a..a526621 100644
--- a/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java
+++ b/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java
@@ -75,7 +75,7 @@ public class TestRankQueryPlugin extends QParserPlugin {
     return new TestRankQueryParser(query, localParams, params, req);
   }
 
-  class TestRankQueryParser extends QParser {
+  static class TestRankQueryParser extends QParser {
 
     public TestRankQueryParser(String query, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
       super(query, localParams, params, req);
@@ -89,7 +89,7 @@ public class TestRankQueryPlugin extends QParserPlugin {
     }
   }
 
-  class TestRankQuery extends RankQuery {
+  static class TestRankQuery extends RankQuery {
 
     private int mergeStrategy;
     private int collector;
@@ -143,7 +143,7 @@ public class TestRankQueryPlugin extends QParserPlugin {
     }
   }
 
-  class TestMergeStrategy implements MergeStrategy {
+  static class TestMergeStrategy implements MergeStrategy {
 
     public int getCost() {
       return 1;
@@ -314,7 +314,7 @@ public class TestRankQueryPlugin extends QParserPlugin {
     }
   }
 
-  class TestMergeStrategy1 implements MergeStrategy {
+  static class TestMergeStrategy1 implements MergeStrategy {
 
     public int getCost() {
       return 1;
@@ -435,7 +435,7 @@ public class TestRankQueryPlugin extends QParserPlugin {
       }
     }
 
-    private class FakeScorer extends Scorer {
+    private static class FakeScorer extends Scorer {
 
       final int docid;
       final float score;
@@ -674,7 +674,7 @@ public class TestRankQueryPlugin extends QParserPlugin {
   }
 
 
-  class TestCollector extends TopDocsCollector {
+  static class TestCollector extends TopDocsCollector {
 
     private List<ScoreDoc> list = new ArrayList();
 
@@ -743,7 +743,7 @@ public class TestRankQueryPlugin extends QParserPlugin {
     }
   }
 
-  class TestCollector1 extends TopDocsCollector {
+  static class TestCollector1 extends TopDocsCollector {
 
     private List<ScoreDoc> list = new ArrayList();
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/spelling/ConjunctionSolrSpellCheckerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/ConjunctionSolrSpellCheckerTest.java b/solr/core/src/test/org/apache/solr/spelling/ConjunctionSolrSpellCheckerTest.java
index 2a7daa9..31f20fb 100644
--- a/solr/core/src/test/org/apache/solr/spelling/ConjunctionSolrSpellCheckerTest.java
+++ b/solr/core/src/test/org/apache/solr/spelling/ConjunctionSolrSpellCheckerTest.java
@@ -44,8 +44,8 @@ public class ConjunctionSolrSpellCheckerTest extends LuceneTestCase {
       // correct behavior
     }
   }
-  
-  class MockSolrSpellChecker extends SolrSpellChecker {
+
+  static class MockSolrSpellChecker extends SolrSpellChecker {
     
     final StringDistance sd;
     

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java b/solr/core/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java
index 75de4db..b221044 100644
--- a/solr/core/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java
+++ b/solr/core/src/test/org/apache/solr/spelling/IndexBasedSpellCheckerTest.java
@@ -230,7 +230,7 @@ public class IndexBasedSpellCheckerTest extends SolrTestCaseJ4 {
     }
   }
 
-  private class TestSpellChecker extends IndexBasedSpellChecker{
+  private static class TestSpellChecker extends IndexBasedSpellChecker{
     @Override
     public SpellChecker getSpellChecker(){
       return spellChecker;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/store/blockcache/BlockDirectoryTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/store/blockcache/BlockDirectoryTest.java b/solr/core/src/test/org/apache/solr/store/blockcache/BlockDirectoryTest.java
index 4272c24..99f7ce6 100644
--- a/solr/core/src/test/org/apache/solr/store/blockcache/BlockDirectoryTest.java
+++ b/solr/core/src/test/org/apache/solr/store/blockcache/BlockDirectoryTest.java
@@ -37,7 +37,7 @@ import org.junit.Test;
 
 public class BlockDirectoryTest extends SolrTestCaseJ4 {
 
-  private class MapperCache implements Cache {
+  private static class MapperCache implements Cache {
     public Map<String, byte[]> map = Caffeine.newBuilder()
         .maximumSize(8)
         .<String, byte[]>build()

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java b/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java
index 7f70024..c9f8fc5 100644
--- a/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java
+++ b/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java
@@ -225,7 +225,7 @@ public class SimplePostToolTest extends SolrTestCaseJ4 {
     
     @Override
     public PageFetcherResult readPageFromUrl(URL u) {
-      PageFetcherResult res = (new SimplePostTool()).new PageFetcherResult();
+      PageFetcherResult res = new PageFetcherResult();
       if (isDisallowedByRobots(u)) {
         res.httpStatus = 403;
         return res;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java b/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
index e41484f..af85ad6 100644
--- a/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
+++ b/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
@@ -400,7 +400,7 @@ public class SolrPluginUtilsTest extends SolrTestCaseJ4 {
     assertEquals(3, q.build().getMinimumNumberShouldMatch());
   }
 
-  private class InvokeSettersTestClass {
+  private static class InvokeSettersTestClass {
     private float aFloat = random().nextFloat();
     public float getAFloat() {
       return aFloat;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/core/src/test/org/apache/solr/util/TestSolrCLIRunExample.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/TestSolrCLIRunExample.java b/solr/core/src/test/org/apache/solr/util/TestSolrCLIRunExample.java
index 28a58ff..7980560 100644
--- a/solr/core/src/test/org/apache/solr/util/TestSolrCLIRunExample.java
+++ b/solr/core/src/test/org/apache/solr/util/TestSolrCLIRunExample.java
@@ -72,7 +72,7 @@ public class TestSolrCLIRunExample extends SolrTestCaseJ4 {
    * Overrides the call to exec bin/solr to start Solr nodes to start them using the Solr test-framework
    * instead of the script, since the script depends on a full build.
    */
-  private class RunExampleExecutor extends DefaultExecutor implements Closeable {
+  private static class RunExampleExecutor extends DefaultExecutor implements Closeable {
 
     private PrintStream stdout;
     private List<org.apache.commons.exec.CommandLine> commandsExecuted = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
index 4eac2a5..fa93503 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClient.java
@@ -460,7 +460,7 @@ public class ConcurrentUpdateSolrClient extends SolrClient {
   /**
    * Class representing an UpdateRequest and an optional collection.
    */
-  class Update {
+  static class Update {
     UpdateRequest request;
     String collection;
     /**

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/java/org/apache/solr/client/solrj/io/ModelCache.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/ModelCache.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/ModelCache.java
index 4676594..1d7e46f 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/ModelCache.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/ModelCache.java
@@ -110,7 +110,7 @@ public class ModelCache {
     }
   }
 
-  private class Model {
+  private static class Model {
     private Tuple tuple;
     private long lastChecked;
 
@@ -128,7 +128,7 @@ public class ModelCache {
     }
   }
 
-  private class LRU extends LinkedHashMap<String, Model> {
+  private static class LRU extends LinkedHashMap<String, Model> {
 
     private int maxSize;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/java/org/apache/solr/client/solrj/io/graph/GatherNodesStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/graph/GatherNodesStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/graph/GatherNodesStream.java
index 8059677..bbd7669 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/graph/GatherNodesStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/graph/GatherNodesStream.java
@@ -624,7 +624,7 @@ public class GatherNodesStream extends TupleStream implements Expressible {
     return null;
   }
 
-  class NodeStream extends TupleStream {
+  static class NodeStream extends TupleStream {
 
     private List<String> ids;
     private Iterator<String> it;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/java/org/apache/solr/client/solrj/io/graph/ShortestPathStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/graph/ShortestPathStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/graph/ShortestPathStream.java
index aa546ae..5075330 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/graph/ShortestPathStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/graph/ShortestPathStream.java
@@ -492,7 +492,7 @@ public class ShortestPathStream extends TupleStream implements Expressible {
     }
   }
 
-  private class Edge {
+  private static class Edge {
 
     private String from;
     private String to;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/java/org/apache/solr/client/solrj/io/ops/GroupOperation.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/ops/GroupOperation.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/ops/GroupOperation.java
index 4a28cc1..a2bd8c9 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/ops/GroupOperation.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/ops/GroupOperation.java
@@ -133,7 +133,7 @@ public class GroupOperation implements ReduceOperation {
     }
   }
 
-  class ReverseComp implements Comparator<Tuple>, Serializable {
+  static class ReverseComp implements Comparator<Tuple>, Serializable {
     private StreamComparator comp;
 
     public ReverseComp(StreamComparator comp) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/RankStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/RankStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/RankStream.java
index a9fb1af..e301081 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/RankStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/RankStream.java
@@ -213,7 +213,7 @@ public class RankStream extends TupleStream implements Expressible {
     return 0;
   }
 
-  class ReverseComp implements Comparator<Tuple>, Serializable {
+  static class ReverseComp implements Comparator<Tuple>, Serializable {
 
     private static final long serialVersionUID = 1L;
     private StreamComparator comp;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SignificantTermsStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SignificantTermsStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SignificantTermsStream.java
index b4decd5..45cd272 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SignificantTermsStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SignificantTermsStream.java
@@ -339,7 +339,7 @@ public class SignificantTermsStream extends TupleStream implements Expressible{
     }
   }
 
-  private class ScoreComp implements Comparator<Map> {
+  private static class ScoreComp implements Comparator<Map> {
     public int compare(Map a, Map b) {
       Float scorea = (Float)a.get("score");
       Float scoreb = (Float)b.get("score");

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/TextLogitStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/TextLogitStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/TextLogitStream.java
index 5a70ced..a6ba9d9 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/TextLogitStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/TextLogitStream.java
@@ -532,7 +532,7 @@ public class TextLogitStream extends TupleStream implements Expressible {
     return buf.toString();
   }
 
-  protected class TermsStream extends TupleStream {
+  protected static class TermsStream extends TupleStream {
 
     private List<String> terms;
     private Iterator<String> it;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/java/org/apache/solr/client/solrj/response/SpellCheckResponse.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/SpellCheckResponse.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/SpellCheckResponse.java
index 946225d..89ef351 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/SpellCheckResponse.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/SpellCheckResponse.java
@@ -211,7 +211,7 @@ public class SpellCheckResponse {
 
   }
 
-  public class Collation {
+  public static class Collation {
     private String collationQueryString;
     private List<Correction> misspellingsAndCorrections = new ArrayList<>();
     private long numberOfHits;
@@ -244,7 +244,7 @@ public class SpellCheckResponse {
 
   }
 
-  public class Correction {
+  public static class Correction {
     private String original;
     private String correction;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
index 80531cb..7cefbee 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
@@ -145,7 +145,7 @@ public class ZkStateReader implements Closeable {
 
   private final ExecutorService notifications = ExecutorUtil.newMDCAwareCachedThreadPool("watches");
 
-  private class CollectionWatch {
+  private static class CollectionWatch {
 
     int coreRefCount = 0;
     Set<CollectionStateWatcher> stateWatchers = ConcurrentHashMap.newKeySet();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java b/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java
index 964ea26..3c1c45f 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java
@@ -247,7 +247,7 @@ public class TestLBHttpSolrClient extends SolrTestCaseJ4 {
     }
   }
   
-  private class SolrInstance {
+  private static class SolrInstance {
     String name;
     File homeDir;
     File dataDir;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
index 093238d..02ed7be 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
@@ -104,8 +104,8 @@ public class SolrExampleStreamingTest extends SolrExampleTests {
                    null, failures.get(0));
     }
   }
-  
-  class FailureRecordingConcurrentUpdateSolrClient extends ConcurrentUpdateSolrClient {
+
+  static class FailureRecordingConcurrentUpdateSolrClient extends ConcurrentUpdateSolrClient {
     private final List<Throwable> failures = new ArrayList<>();
     
     public FailureRecordingConcurrentUpdateSolrClient(String serverUrl, int queueSize, int numThreads) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTest.java
index de728bd..24f08d2 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTest.java
@@ -252,7 +252,7 @@ public class ConcurrentUpdateSolrClientTest extends SolrJettyTestBase {
 
   }
 
-  class SendDocsRunnable implements Runnable {
+  static class SendDocsRunnable implements Runnable {
     
     private String id;
     private int numDocs;
@@ -289,8 +289,8 @@ public class ConcurrentUpdateSolrClientTest extends SolrJettyTestBase {
       }      
     }    
   }
-  
-  class OutcomeCountingConcurrentUpdateSolrClient extends ConcurrentUpdateSolrClient {
+
+  static class OutcomeCountingConcurrentUpdateSolrClient extends ConcurrentUpdateSolrClient {
     private final AtomicInteger successCounter;
     private final AtomicInteger failureCounter;
     private final StringBuilder errors;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53064e46/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
index 04fc3ff..f82ccc6 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -1627,7 +1627,7 @@ public abstract class SolrTestCaseJ4 extends LuceneTestCase {
     }
   }
 
-  protected class FldType {
+  protected static class FldType {
     public String fname;
     public IVals numValues;
     public Vals vals;


[04/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jaxb-impl-LICENSE-CDDL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/jaxb-impl-LICENSE-CDDL.txt b/solr/licenses/jaxb-impl-LICENSE-CDDL.txt
deleted file mode 100644
index d6e03ec..0000000
--- a/solr/licenses/jaxb-impl-LICENSE-CDDL.txt
+++ /dev/null
@@ -1,135 +0,0 @@
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
-
-1. Definitions.
-
-1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications.
-
-1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
-
-1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
-
-1.4. "Executable" means the Covered Software in any form other than Source Code.
-
-1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License.
-
-1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
-
-1.7. "License" means this document.
-
-1.8. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
-
-1.9. "Modifications" means the Source Code and Executable form of any of the following:
-
-  A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
-  
-  B. Any new file that contains any part of the Original Software or previous Modification; or
-  
-  C. Any new file that is contributed or otherwise made available under the terms of this License.
-
-1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License.
-
-1.11. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
-
-1.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
-
-1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
-
-2. License Grants.
-
-2.1. The Initial Developer Grant.
-
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
-
-(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
-
-(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
-
-(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
-
-(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
-
-2.2. Contributor Grant.
-
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
-
-(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
-
-(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
-
-(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
-
-(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
-
-3. Distribution Obligations.
-
-3.1. Availability of Source Code.
-
-Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
-
-3.2. Modifications.
-
-The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
-
-3.3. Required Notices.
-
-You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
-
-3.4. Application of Additional Terms.
-
-You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
-
-3.5. Distribution of Executable Versions.
-
-You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
-
-3.6. Larger Works.
-
-You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
-
-4. Versions of the License.
-
-4.1. New Versions.
-
-Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
-
-4.2. Effect of New Versions.
-
-You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
-
-4.3. Modified Versions.
-
-When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
-
-5. DISCLAIMER OF WARRANTY.
-
-COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-6. TERMINATION.
-
-6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
-
-6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agre
 ement with Participant.
-
-6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
-
-6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
-
-7. LIMITATION OF LIABILITY.
-
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-8. U.S. GOVERNMENT END USERS.
-
-The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) and "commercial computer software documentation" as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
-
-9. MISCELLANEOUS.
-
-This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall 
 be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
-
-10. RESPONSIBILITY FOR CLAIMS.
-
-As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
-
-NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
-
-The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jersey-bundle-1.9.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/jersey-bundle-1.9.jar.sha1 b/solr/licenses/jersey-bundle-1.9.jar.sha1
deleted file mode 100644
index a5946ca..0000000
--- a/solr/licenses/jersey-bundle-1.9.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4dc55ffd69faa3cea5279f606909efe845a38e8f

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jersey-bundle-LICENSE-CDDL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/jersey-bundle-LICENSE-CDDL.txt b/solr/licenses/jersey-bundle-LICENSE-CDDL.txt
deleted file mode 100644
index 64df8d5..0000000
--- a/solr/licenses/jersey-bundle-LICENSE-CDDL.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1
-
-1. Definitions.
-
-1.1. \u201cContributor\u201d means each individual or entity that creates or contributes to the creation of Modifications.
-1.2. \u201cContributor Version\u201d means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
-1.3. \u201cCovered Software\u201d means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
-1.4. \u201cExecutable\u201d means the Covered Software in any form other than Source Code.
-1.5. \u201cInitial Developer\u201d means the individual or entity that first makes Original Software available under this License.
-1.6. \u201cLarger Work\u201d means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
-1.7. \u201cLicense\u201d means this document.
-1.8. \u201cLicensable\u201d means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
-1.9. \u201cModifications\u201d means the Source Code and Executable form of any of the following:
-A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
-B. Any new file that contains any part of the Original Software or previous Modification; or
-C. Any new file that is contributed or otherwise made available under the terms of this License.
-1.10. \u201cOriginal Software\u201d means the Source Code and Executable form of computer software code that is originally released under this License.
-1.11. \u201cPatent Claims\u201d means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
-1.12. \u201cSource Code\u201d means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
-1.13. \u201cYou\u201d (or \u201cYour\u201d) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, \u201cYou\u201d includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, \u201ccontrol\u201d means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
-2. License Grants.
-
-2.1. The Initial Developer Grant.
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
-(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
-(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
-(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
-(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
-2.2. Contributor Grant.
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
-(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
-(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
-(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
-(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
-3. Distribution Obligations.
-
-3.1. Availability of Source Code.
-Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
-3.2. Modifications.
-The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
-3.3. Required Notices.
-You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
-3.4. Application of Additional Terms.
-You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
-3.5. Distribution of Executable Versions.
-You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
-3.6. Larger Works.
-You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
-4. Versions of the License.
-
-4.1. New Versions.
-Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
-4.2. Effect of New Versions.
-You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
-4.3. Modified Versions.
-When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
-5. DISCLAIMER OF WARRANTY.
-
-COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN \u201cAS IS\u201d BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-6. TERMINATION.
-
-6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
-6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as \u201cParticipant\u201d) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written 
 agreement with Participant.
-6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
-6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
-7. LIMITATION OF LIABILITY.
-
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-8. U.S. GOVERNMENT END USERS.
-
-The Covered Software is a \u201ccommercial item,\u201d as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of \u201ccommercial computer software\u201d (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) and \u201ccommercial computer software documentation\u201d as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
-
-9. MISCELLANEOUS.
-
-This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall 
 be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
-
-10. RESPONSIBILITY FOR CLAIMS.
-
-As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
-
-NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
-
-The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jersey-guice-1.9.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/jersey-guice-1.9.jar.sha1 b/solr/licenses/jersey-guice-1.9.jar.sha1
deleted file mode 100644
index b52c97e..0000000
--- a/solr/licenses/jersey-guice-1.9.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5963c28c47df7e5d6ad34cec80c071c368777f7b

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jersey-guice-LICENSE-CDDL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/jersey-guice-LICENSE-CDDL.txt b/solr/licenses/jersey-guice-LICENSE-CDDL.txt
deleted file mode 100644
index 64df8d5..0000000
--- a/solr/licenses/jersey-guice-LICENSE-CDDL.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1
-
-1. Definitions.
-
-1.1. \u201cContributor\u201d means each individual or entity that creates or contributes to the creation of Modifications.
-1.2. \u201cContributor Version\u201d means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
-1.3. \u201cCovered Software\u201d means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
-1.4. \u201cExecutable\u201d means the Covered Software in any form other than Source Code.
-1.5. \u201cInitial Developer\u201d means the individual or entity that first makes Original Software available under this License.
-1.6. \u201cLarger Work\u201d means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
-1.7. \u201cLicense\u201d means this document.
-1.8. \u201cLicensable\u201d means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
-1.9. \u201cModifications\u201d means the Source Code and Executable form of any of the following:
-A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
-B. Any new file that contains any part of the Original Software or previous Modification; or
-C. Any new file that is contributed or otherwise made available under the terms of this License.
-1.10. \u201cOriginal Software\u201d means the Source Code and Executable form of computer software code that is originally released under this License.
-1.11. \u201cPatent Claims\u201d means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
-1.12. \u201cSource Code\u201d means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
-1.13. \u201cYou\u201d (or \u201cYour\u201d) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, \u201cYou\u201d includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, \u201ccontrol\u201d means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
-2. License Grants.
-
-2.1. The Initial Developer Grant.
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
-(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
-(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
-(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
-(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
-2.2. Contributor Grant.
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
-(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
-(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
-(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
-(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
-3. Distribution Obligations.
-
-3.1. Availability of Source Code.
-Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
-3.2. Modifications.
-The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
-3.3. Required Notices.
-You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
-3.4. Application of Additional Terms.
-You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
-3.5. Distribution of Executable Versions.
-You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
-3.6. Larger Works.
-You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
-4. Versions of the License.
-
-4.1. New Versions.
-Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
-4.2. Effect of New Versions.
-You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
-4.3. Modified Versions.
-When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
-5. DISCLAIMER OF WARRANTY.
-
-COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN \u201cAS IS\u201d BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-6. TERMINATION.
-
-6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
-6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as \u201cParticipant\u201d) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written 
 agreement with Participant.
-6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
-6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
-7. LIMITATION OF LIABILITY.
-
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-8. U.S. GOVERNMENT END USERS.
-
-The Covered Software is a \u201ccommercial item,\u201d as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of \u201ccommercial computer software\u201d (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) and \u201ccommercial computer software documentation\u201d as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
-
-9. MISCELLANEOUS.
-
-This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall 
 be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
-
-10. RESPONSIBILITY FOR CLAIMS.
-
-As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
-
-NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
-
-The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jersey-json-1.9.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/jersey-json-1.9.jar.sha1 b/solr/licenses/jersey-json-1.9.jar.sha1
deleted file mode 100644
index d6fe94a..0000000
--- a/solr/licenses/jersey-json-1.9.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-1aa73e1896bcc7013fed247157d7f676226eb432

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jersey-json-LICENSE-CDDL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/jersey-json-LICENSE-CDDL.txt b/solr/licenses/jersey-json-LICENSE-CDDL.txt
deleted file mode 100644
index 64df8d5..0000000
--- a/solr/licenses/jersey-json-LICENSE-CDDL.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)Version 1.1
-
-1. Definitions.
-
-1.1. \u201cContributor\u201d means each individual or entity that creates or contributes to the creation of Modifications.
-1.2. \u201cContributor Version\u201d means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
-1.3. \u201cCovered Software\u201d means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
-1.4. \u201cExecutable\u201d means the Covered Software in any form other than Source Code.
-1.5. \u201cInitial Developer\u201d means the individual or entity that first makes Original Software available under this License.
-1.6. \u201cLarger Work\u201d means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
-1.7. \u201cLicense\u201d means this document.
-1.8. \u201cLicensable\u201d means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
-1.9. \u201cModifications\u201d means the Source Code and Executable form of any of the following:
-A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
-B. Any new file that contains any part of the Original Software or previous Modification; or
-C. Any new file that is contributed or otherwise made available under the terms of this License.
-1.10. \u201cOriginal Software\u201d means the Source Code and Executable form of computer software code that is originally released under this License.
-1.11. \u201cPatent Claims\u201d means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
-1.12. \u201cSource Code\u201d means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
-1.13. \u201cYou\u201d (or \u201cYour\u201d) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, \u201cYou\u201d includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, \u201ccontrol\u201d means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
-2. License Grants.
-
-2.1. The Initial Developer Grant.
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
-(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
-(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
-(c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
-(d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
-2.2. Contributor Grant.
-Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
-(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
-(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
-(c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
-(d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
-3. Distribution Obligations.
-
-3.1. Availability of Source Code.
-Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
-3.2. Modifications.
-The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
-3.3. Required Notices.
-You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
-3.4. Application of Additional Terms.
-You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
-3.5. Distribution of Executable Versions.
-You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
-3.6. Larger Works.
-You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
-4. Versions of the License.
-
-4.1. New Versions.
-Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
-4.2. Effect of New Versions.
-You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
-4.3. Modified Versions.
-When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
-5. DISCLAIMER OF WARRANTY.
-
-COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN \u201cAS IS\u201d BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-6. TERMINATION.
-
-6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
-6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as \u201cParticipant\u201d) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written 
 agreement with Participant.
-6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
-6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
-7. LIMITATION OF LIABILITY.
-
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-8. U.S. GOVERNMENT END USERS.
-
-The Covered Software is a \u201ccommercial item,\u201d as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of \u201ccommercial computer software\u201d (as that term is defined at 48 C.F.R. � 252.227-7014(a)(1)) and \u201ccommercial computer software documentation\u201d as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
-
-9. MISCELLANEOUS.
-
-This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall 
 be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
-
-10. RESPONSIBILITY FOR CLAIMS.
-
-As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
-
-NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
-
-The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-avro-1.1.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-avro-1.1.0.jar.sha1 b/solr/licenses/kite-morphlines-avro-1.1.0.jar.sha1
deleted file mode 100644
index fb596dd..0000000
--- a/solr/licenses/kite-morphlines-avro-1.1.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e097a18ce6ccf3fc208fc6194dbe64ee38bbcb4c

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-avro-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-avro-LICENSE-ASL.txt b/solr/licenses/kite-morphlines-avro-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/kite-morphlines-avro-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-avro-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-avro-NOTICE.txt b/solr/licenses/kite-morphlines-avro-NOTICE.txt
deleted file mode 100644
index e66f597..0000000
--- a/solr/licenses/kite-morphlines-avro-NOTICE.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This product includes software developed by Cloudera, Inc.
-(http://www.cloudera.com/).
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-Saxonica (http://www.saxonica.com/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-core-1.1.0-tests.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-core-1.1.0-tests.jar.sha1 b/solr/licenses/kite-morphlines-core-1.1.0-tests.jar.sha1
deleted file mode 100644
index 3c7baae..0000000
--- a/solr/licenses/kite-morphlines-core-1.1.0-tests.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4110e16503a3bde44406ca9969055320b169c041

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-core-1.1.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-core-1.1.0.jar.sha1 b/solr/licenses/kite-morphlines-core-1.1.0.jar.sha1
deleted file mode 100644
index b98e853..0000000
--- a/solr/licenses/kite-morphlines-core-1.1.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0a73f6cbbb0cde8dfd2c1924c7b66224f1b0ab64


[11/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcloud/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcloud/conf/solrconfig.xml b/solr/contrib/morphlines-core/src/test-files/solr/solrcloud/conf/solrconfig.xml
deleted file mode 100644
index 42ab056..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcloud/conf/solrconfig.xml
+++ /dev/null
@@ -1,1437 +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>${tests.luceneMatchVersion:LATEST}</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.
-
-       The examples below can be used to load some solr-contribs along 
-       with their external dependencies.
-    -->
-  <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />
-
-  <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />
-
-  <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />
-
-  <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />
-
-  <!-- If a 'dir' option (with or without a regex) is used and nothing
-       is found that matches, a warning will be logged.
-    -->
-  <lib dir="/non/existent/dir/yields/warning" /> 
-
-  <!-- an exact 'path' can be used instead of a 'dir' to specify a 
-       specific jar file.  This will cause a serious error to be logged 
-       if it can't be loaded.
-    -->
-  <!--
-     <lib path="../a-jar-that-does-not-exist.jar" /> 
-  -->
-  
-  <!-- Data Directory
-
-       Used to specify an alternate directory to hold all index data
-       other than the default ./data under the Solr home.  If
-       replication is in use, this should match the replication
-       configuration.
-    -->
-  <dataDir>${solr.data.dir:}</dataDir>
-
-
-  <!-- The DirectoryFactory to use for indexes.
-       
-       solr.StandardDirectoryFactory is filesystem
-       based and tries to pick the best implementation for the current
-       JVM and platform.  solr.NRTCachingDirectoryFactory, the default,
-       wraps solr.StandardDirectoryFactory and caches small files in memory
-       for better NRT performance.
-
-       One can force a particular implementation via solr.MMapDirectoryFactory,
-       solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.
-
-       solr.RAMDirectoryFactory is memory based, not
-       persistent, and doesn't work with replication.
-    -->
-  <directoryFactory name="DirectoryFactory" class="org.apache.solr.core.HdfsDirectoryFactory">
-    <str name="solr.hdfs.home">${solr.hdfs.home:}</str>
-    <str name="solr.hdfs.confdir">${solr.hdfs.confdir:}</str>
-    <str name="solr.hdfs.security.kerberos.enabled">${solr.hdfs.security.kerberos.enabled:false}</str>
-    <str name="solr.hdfs.security.kerberos.keytabfile">${solr.hdfs.security.kerberos.keytabfile:}</str>
-    <str name="solr.hdfs.security.kerberos.principal">${solr.hdfs.security.kerberos.principal:}</str>
-    <bool name="solr.hdfs.blockcache.enabled">${solr.hdfs.blockcache.enabled:true}</bool>
-    <int name="solr.hdfs.blockcache.slab.count">${solr.hdfs.blockcache.slab.count:1}</int>
-    <bool name="solr.hdfs.blockcache.direct.memory.allocation">${solr.hdfs.blockcache.direct.memory.allocation:true}</bool>
-    <int name="solr.hdfs.blockcache.blocksperbank">${solr.hdfs.blockcache.blocksperbank:16384}</int> 
-    <bool name="solr.hdfs.blockcache.read.enabled">${solr.hdfs.blockcache.read.enabled:true}</bool>
-    <bool name="solr.hdfs.nrtcachingdirectory.enable">${solr.hdfs.nrtcachingdirectory.enable:true}</bool>
-    <int name="solr.hdfs.nrtcachingdirectory.maxmergesizemb">${solr.hdfs.nrtcachingdirectory.maxmergesizemb:16}</int>
-    <int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">${solr.hdfs.nrtcachingdirectory.maxcachedmb:192}</int>
-    <str name="solr.hdfs.blockcache.global">${solr.hdfs.blockcache.global:false}</str>
-  </directoryFactory>
-
-  <schemaFactory class="ClassicIndexSchemaFactory"/>
-
-  <!-- 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>128</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:hdfs}</lockType>
-
-    <!-- If true, IndexReaders will be reopened (often more efficient)
-         instead of closed and then opened. Default: true
-      -->
-    <!-- 
-    <reopenReaders>true</reopenReaders>
-      -->
-
-    <!-- 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>${solr.autoCommit.maxTime:60000}</maxTime> 
-       <openSearcher>false</openSearcher> 
-     </autoCommit>
-
-    <!-- softAutoCommit is like autoCommit except it causes a
-         'soft' commit which only ensures that changes are visible
-         but does not ensure that data is synced to disk.  This is
-         faster and more near-realtime friendly than a hard commit.
-      -->   
-     <autoSoftCommit> 
-       <maxTime>${solr.autoSoftCommit.maxTime: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
-      -->
-    <!-- The RunExecutableListener executes an external command from a
-         hook such as postCommit or postOptimize.
-         
-         exe - the name of the executable to run
-         dir - dir to use as the current working directory. (default=".")
-         wait - the calling thread waits until the executable returns. 
-                (default="true")
-         args - the arguments to pass to the program.  (default is none)
-         env - environment variables to set.  (default is none)
-      -->
-    <!-- This example shows how RunExecutableListener could be used
-         with the script based replication...
-         http://wiki.apache.org/solr/CollectionDistribution
-      -->
-    <!--
-       <listener event="postCommit" class="solr.RunExecutableListener">
-         <str name="exe">solr/bin/snapshooter</str>
-         <str name="dir">.</str>
-         <bool name="wait">true</bool>
-         <arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
-         <arr name="env"> <str>MYVAR=val1</str> </arr>
-       </listener>
-      -->
-
-  </updateHandler>
-  
-  <!-- IndexReaderFactory
-
-       Use the following format to specify a custom IndexReaderFactory,
-       which allows for alternate IndexReader implementations.
-
-       ** Experimental Feature **
-
-       Please note - Using a custom IndexReaderFactory may prevent
-       certain other features from working. The API to
-       IndexReaderFactory may change without warning or may even be
-       removed from future releases if the problems cannot be
-       resolved.
-
-
-       ** Features that may not work with custom IndexReaderFactory **
-
-       The ReplicationHandler assumes a disk-resident index. Using a
-       custom IndexReader implementation may cause incompatibility
-       with ReplicationHandler and may cause replication to not work
-       correctly. See SOLR-1366 for details.
-
-    -->
-  <!--
-  <indexReaderFactory name="IndexReaderFactory" class="package.class">
-    <str name="someArg">Some Value</str>
-  </indexReaderFactory >
-  -->
-  <!-- By explicitly declaring the Factory, the termIndexDivisor can
-       be specified.
-    -->
-  <!--
-     <indexReaderFactory name="IndexReaderFactory" 
-                         class="solr.StandardIndexReaderFactory">
-       <int name="setTermIndexDivisor">12</int>
-     </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>1024</maxBooleanClauses>
-
-
-    <!-- Solr Internal Query Caches
-
-         There are two implementations of cache available for Solr,
-         LRUCache, based on a synchronized LinkedHashMap, and
-         FastLRUCache, based on a ConcurrentHashMap.  
-
-         FastLRUCache has faster gets and slower puts in single
-         threaded operation and thus is generally faster than LRUCache
-         when the hit ratio of the cache is high (> 75%), and may be
-         faster under other scenarios on multi-cpu systems.
-    -->
-
-    <!-- Filter Cache
-
-         Cache used by SolrIndexSearcher for filters (DocSets),
-         unordered sets of *all* documents that match a query.  When a
-         new searcher is opened, its caches may be prepopulated or
-         "autowarmed" using data from caches in the old searcher.
-         autowarmCount is the number of items to prepopulate.  For
-         LRUCache, the autowarmed items will be the most recently
-         accessed items.
-
-         Parameters:
-           class - the SolrCache implementation LRUCache or
-               (LRUCache or FastLRUCache)
-           size - the maximum number of entries in the cache
-           initialSize - the initial capacity (number of entries) of
-               the cache.  (see java.util.HashMap)
-           autowarmCount - the number of entries to prepopulate from
-               and old cache.  
-      -->
-    <filterCache class="solr.FastLRUCache"
-                 size="512"
-                 initialSize="512"
-                 autowarmCount="0"/>
-
-    <!-- Query Result Cache
-         
-         Caches results of searches - ordered lists of document ids
-         (DocList) based on a query, a sort, and the range of documents requested.  
-      -->
-    <queryResultCache class="solr.LRUCache"
-                     size="512"
-                     initialSize="512"
-                     autowarmCount="0"/>
-   
-    <!-- Document Cache
-
-         Caches Lucene Document objects (the stored fields for each
-         document).  Since Lucene internal document ids are transient,
-         this cache will not be autowarmed.  
-      -->
-    <documentCache class="solr.LRUCache"
-                   size="512"
-                   initialSize="512"
-                   autowarmCount="0"/>
-    
-    <!-- Field Value Cache
-         
-         Cache used to hold field values that are quickly accessible
-         by document id.  The fieldValueCache is created by default
-         even if not configured here.
-      -->
-    <!--
-       <fieldValueCache class="solr.FastLRUCache"
-                        size="512"
-                        autowarmCount="128"
-                        showItems="32" />
-      -->
-
-    <!-- Custom Cache
-
-         Example of a generic cache.  These caches may be accessed by
-         name through SolrIndexSearcher.getCache(),cacheLookup(), and
-         cacheInsert().  The purpose is to enable easy caching of
-         user/application level data.  The regenerator argument should
-         be specified as an implementation of solr.CacheRegenerator 
-         if autowarming is desired.  
-      -->
-    <!--
-       <cache name="myUserCache"
-              class="solr.LRUCache"
-              size="4096"
-              initialSize="1024"
-              autowarmCount="1024"
-              regenerator="com.mycompany.MyRegenerator"
-              />
-      -->
-
-
-    <!-- Lazy Field Loading
-
-         If true, stored fields that are not requested will be loaded
-         lazily.  This can result in a significant speed improvement
-         if the usual case is to not load all stored fields,
-         especially if the skipped fields are large compressed text
-         fields.
-    -->
-    <enableLazyFieldLoading>true</enableLazyFieldLoading>
-
-   <!-- Use Filter For Sorted Query
-
-        A possible optimization that attempts to use a filter to
-        satisfy a search.  If the requested sort does not include
-        score, then the filterCache will be checked for a filter
-        matching the query. If found, the filter will be used as the
-        source of document ids, and then the sort will be applied to
-        that.
-
-        For most situations, this will not be useful unless you
-        frequently get the same search repeatedly with different sort
-        options, and none of them ever use "score"
-     -->
-   <!--
-      <useFilterForSortedQuery>true</useFilterForSortedQuery>
-     -->
-
-   <!-- Result Window Size
-
-        An optimization for use with the queryResultCache.  When a search
-        is requested, a superset of the requested number of document ids
-        are collected.  For example, if a search for a particular query
-        requests matching documents 10 through 19, and queryWindowSize is 50,
-        then documents 0 through 49 will be collected and cached.  Any further
-        requests in that range can be satisfied via the cache.  
-     -->
-   <queryResultWindowSize>20</queryResultWindowSize>
-
-   <!-- Maximum number of documents to cache for any entry in the
-        queryResultCache. 
-     -->
-   <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
-
-   <!-- Query Related Event Listeners
-
-        Various IndexSearcher related events can trigger Listeners to
-        take actions.
-
-        newSearcher - fired whenever a new searcher is being prepared
-        and there is a current searcher handling requests (aka
-        registered).  It can be used to prime certain caches to
-        prevent long request times for certain requests.
-
-        firstSearcher - fired whenever a new searcher is being
-        prepared but there is no current registered searcher to handle
-        requests or to gain autowarming data from.
-
-        
-     -->
-    <!-- QuerySenderListener takes an array of NamedList and executes a
-         local query request for each NamedList in sequence. 
-      -->
-    <listener event="newSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <!--
-           <lst><str name="q">solr</str><str name="sort">price asc</str></lst>
-           <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
-          -->
-      </arr>
-    </listener>
-    <listener event="firstSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <lst>
-          <str name="q">static firstSearcher warming in solrconfig.xml</str>
-        </lst>
-      </arr>
-    </listener>
-
-    <!-- Use Cold Searcher
-
-         If a search request comes in and there is no current
-         registered searcher, then immediately register the still
-         warming searcher and use it.  If "false" then all requests
-         will block until the first searcher is done warming.
-      -->
-    <useColdSearcher>false</useColdSearcher>
-
-  </query>
-
-
-  <!-- Request Dispatcher
-
-       This section contains instructions for how the SolrDispatchFilter
-       should behave when processing requests for this SolrCore.
-
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the 
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
-    -->
-  <requestDispatcher handleSelect="false" >
-    <!-- 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.
-         
-         *** WARNING ***
-         The settings below authorize Solr to fetch remote files, You
-         should make sure your system has some authentication before
-         using enableRemoteStreaming="true"
-
-      --> 
-    <requestParsers enableRemoteStreaming="true" 
-                    multipartUploadLimitInKB="2048000"
-                    formdataUploadLimitInKB="2048"/>
-
-    <!-- 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.
-
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-
-       If a Request Handler is declared with startup="lazy", then it will
-       not be initialized until the first request that uses it.
-
-    -->
-  <!-- SearchHandler
-
-       http://wiki.apache.org/solr/SearchHandler
-
-       For processing Search Queries, the primary Request Handler
-       provided with Solr is "SearchHandler" It delegates to a sequent
-       of SearchComponents (see below) and supports distributed
-       queries across multiple shards
-    -->
-  <requestHandler name="/select" class="solr.SearchHandler">
-    <!-- default values for query parameters can be specified, these
-         will be overridden by parameters in the request
-      -->
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <int name="rows">10</int>
-       <str name="df">text</str>
-     </lst>
-    <!-- In addition to defaults, "appends" params can be specified
-         to identify values which should be appended to the list of
-         multi-val params from the query (or the existing "defaults").
-      -->
-    <!-- In this example, the param "fq=instock:true" would be appended to
-         any query time fq params the user may specify, as a mechanism for
-         partitioning the index, independent of any user selected filtering
-         that may also be desired (perhaps as a result of faceted searching).
-
-         NOTE: there is *absolutely* nothing a client can do to prevent these
-         "appends" values from being used, so don't use this mechanism
-         unless you are sure you always want it.
-      -->
-    <!--
-       <lst name="appends">
-         <str name="fq">inStock:true</str>
-       </lst>
-      -->
-    <!-- "invariants" are a way of letting the Solr maintainer lock down
-         the options available to Solr clients.  Any params values
-         specified here are used regardless of what values may be specified
-         in either the query, the "defaults", or the "appends" params.
-
-         In this example, the facet.field and facet.query params would
-         be fixed, limiting the facets clients can use.  Faceting is
-         not turned on by default - but if the client does specify
-         facet=true in the request, these are the only facets they
-         will be able to see counts for; regardless of what other
-         facet.field or facet.query params they may specify.
-
-         NOTE: there is *absolutely* nothing a client can do to prevent these
-         "invariants" values from being used, so don't use this mechanism
-         unless you are sure you always want it.
-      -->
-    <!--
-       <lst name="invariants">
-         <str name="facet.field">cat</str>
-         <str name="facet.field">manu_exact</str>
-         <str name="facet.query">price:[* TO 500]</str>
-         <str name="facet.query">price:[500 TO *]</str>
-       </lst>
-      -->
-    <!-- If the default list of SearchComponents is not desired, that
-         list can either be overridden completely, or components can be
-         prepended or appended to the default list.  (see below)
-      -->
-    <!--
-       <arr name="components">
-         <str>nameOfCustomComponent1</str>
-         <str>nameOfCustomComponent2</str>
-       </arr>
-      -->
-    </requestHandler>
-
-  <!-- A request handler that returns indented JSON by default -->
-  <requestHandler name="/query" class="solr.SearchHandler">
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <str name="wt">json</str>
-       <str name="indent">true</str>
-       <str name="df">text</str>
-     </lst>
-  </requestHandler>
-  <!-- Search Components
-
-       Search components are registered to SolrCore and used by 
-       instances of SearchHandler (which can access them by name)
-       
-       By default, the following components are available:
-       
-       <searchComponent name="query"     class="solr.QueryComponent" />
-       <searchComponent name="facet"     class="solr.FacetComponent" />
-       <searchComponent name="mlt"       class="solr.MoreLikeThisComponent" />
-       <searchComponent name="highlight" class="solr.HighlightComponent" />
-       <searchComponent name="stats"     class="solr.StatsComponent" />
-       <searchComponent name="debug"     class="solr.DebugComponent" />
-   
-       Default configuration in a requestHandler would look like:
-
-       <arr name="components">
-         <str>query</str>
-         <str>facet</str>
-         <str>mlt</str>
-         <str>highlight</str>
-         <str>stats</str>
-         <str>debug</str>
-       </arr>
-
-       If you register a searchComponent to one of the standard names, 
-       that will be used instead of the default.
-
-       To insert components before or after the 'standard' components, use:
-    
-       <arr name="first-components">
-         <str>myFirstComponentName</str>
-       </arr>
-    
-       <arr name="last-components">
-         <str>myLastComponentName</str>
-       </arr>
-
-       NOTE: The component registered with the name "debug" will
-       always be executed after the "last-components" 
-       
-     -->
-  
-   <!-- Spell Check
-
-        The spell check component can return a list of alternative spelling
-        suggestions.  
-
-        http://wiki.apache.org/solr/SpellCheckComponent
-     -->
-  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
-
-    <str name="queryAnalyzerFieldType">text_general</str>
-
-    <!-- Multiple "Spell Checkers" can be declared and used by this
-         component
-      -->
-
-    <!-- a spellchecker built from a field of the main index -->
-    <lst name="spellchecker">
-      <str name="name">default</str>
-      <str name="field">text</str>
-      <str name="classname">solr.DirectSolrSpellChecker</str>
-      <!-- the spellcheck distance measure used, the default is the internal levenshtein -->
-      <str name="distanceMeasure">internal</str>
-      <!-- minimum accuracy needed to be considered a valid spellcheck suggestion -->
-      <float name="accuracy">0.5</float>
-      <!-- the maximum #edits we consider when enumerating terms: can be 1 or 2 -->
-      <int name="maxEdits">2</int>
-      <!-- the minimum shared prefix when enumerating terms -->
-      <int name="minPrefix">1</int>
-      <!-- maximum number of inspections per result. -->
-      <int name="maxInspections">5</int>
-      <!-- minimum length of a query term to be considered for correction -->
-      <int name="minQueryLength">4</int>
-      <!-- maximum threshold of documents a query term can appear to be considered for correction -->
-      <float name="maxQueryFrequency">0.01</float>
-      <!-- uncomment this to require suggestions to occur in 1% of the documents
-        <float name="thresholdTokenFrequency">.01</float>
-      -->
-    </lst>
-    
-    <!-- a spellchecker that can break or combine words.  See "/spell" handler below for usage -->
-    <lst name="spellchecker">
-      <str name="name">wordbreak</str>
-      <str name="classname">solr.WordBreakSolrSpellChecker</str>      
-      <str name="field">name</str>
-      <str name="combineWords">true</str>
-      <str name="breakWords">true</str>
-      <int name="maxChanges">10</int>
-    </lst>
-
-    <!-- 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">
-      <str name="df">text</str>
-      <!-- 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">
-      <str name="df">text</str>
-      <bool name="tv">true</bool>
-    </lst>
-    <arr name="last-components">
-      <str>tvComponent</str>
-    </arr>
-  </requestHandler>
-
-  <!-- Clustering Component
-
-       http://wiki.apache.org/solr/ClusteringComponent
-
-       You'll need to set the solr.clustering.enabled system property
-       when running solr to run with clustering enabled:
-
-            java -Dsolr.clustering.enabled=true -jar start.jar
-
-    -->
-  <searchComponent name="clustering"
-                   enable="${solr.clustering.enabled:false}"
-                   class="solr.clustering.ClusteringComponent" >
-    <!-- Declare an engine -->
-    <lst name="engine">
-      <!-- The name, only one can be named "default" -->
-      <str name="name">default</str>
-
-      <!-- Class name of Carrot2 clustering algorithm.
-
-           Currently available algorithms are:
-           
-           * org.carrot2.clustering.lingo.LingoClusteringAlgorithm
-           * org.carrot2.clustering.stc.STCClusteringAlgorithm
-           * org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm
-           
-           See http://project.carrot2.org/algorithms.html for the
-           algorithm's characteristics.
-        -->
-      <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>
-
-      <!-- Overriding values for Carrot2 default algorithm attributes.
-
-           For a description of all available attributes, see:
-           http://download.carrot2.org/stable/manual/#chapter.components.
-           Use attribute key as name attribute of str elements
-           below. These can be further overridden for individual
-           requests by specifying attribute key as request parameter
-           name and attribute value as parameter value.
-        -->
-      <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>
-
-      <!-- Location of Carrot2 lexical resources.
-
-           A directory from which to load Carrot2-specific stop words
-           and stop labels. Absolute or relative to Solr config directory.
-           If a specific resource (e.g. stopwords.en) is present in the
-           specified dir, it will completely override the corresponding
-           default one that ships with Carrot2.
-
-           For an overview of Carrot2 lexical resources, see:
-           http://download.carrot2.org/head/manual/#chapter.lexical-resources
-        -->
-      <str name="carrot.lexicalResourcesDir">clustering/carrot2</str>
-
-      <!-- The language to assume for the documents.
-
-           For a list of allowed values, see:
-           http://download.carrot2.org/stable/manual/#section.attribute.lingo.MultilingualClustering.defaultLanguage
-       -->
-      <str name="MultilingualClustering.defaultLanguage">ENGLISH</str>
-    </lst>
-    <lst name="engine">
-      <str name="name">stc</str>
-      <str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>
-    </lst>
-  </searchComponent>
-
-  <!-- A request handler for demonstrating the clustering 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="/clustering"
-                  startup="lazy"
-                  enable="${solr.clustering.enabled:false}"
-                  class="solr.SearchHandler">
-    <lst name="defaults">
-      <bool name="clustering">true</bool>
-      <str name="clustering.engine">default</str>
-      <bool name="clustering.results">true</bool>
-      <!-- The title field -->
-      <str name="carrot.title">name</str>
-      <str name="carrot.url">id</str>
-      <!-- The field to cluster on -->
-       <str name="carrot.snippet">features</str>
-       <!-- produce summaries -->
-       <bool name="carrot.produceSummary">true</bool>
-       <!-- the maximum number of labels per cluster -->
-       <!--<int name="carrot.numDescriptions">5</int>-->
-       <!-- produce sub clusters -->
-       <bool name="carrot.outputSubClusters">false</bool>
-       
-       <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
-       </str>
-       <str name="q.alt">*:*</str>
-       <str name="rows">10</str>
-       <str name="fl">*,score</str>
-    </lst>     
-    <arr name="last-components">
-      <str>clustering</str>
-    </arr>
-  </requestHandler>
-  
-  <!-- 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>
-      <str name="df">text</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
-
-    --> 
-  <!-- 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"/>
-  
-
-  <!-- XSLT response writer transforms the XML output by any xslt file found
-       in Solr's conf/xslt directory.  Changes to xslt files are checked for
-       every xsltCacheLifetimeSeconds.  
-    -->
-  <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
-    <int name="xsltCacheLifetimeSeconds">5</int>
-  </queryResponseWriter>
-
-  <!-- Query Parsers
-
-       https://cwiki.apache.org/confluence/display/solr/Query+Syntax+and+Parsing
-
-       Multiple QParserPlugins can be registered by name, and then
-       used in either the "defType" param for the QueryComponent (used
-       by SearchHandler) or in LocalParams
-    -->
-  <!-- example of registering a query parser -->
-  <!--
-     <queryParser name="myparser" class="com.mycompany.MyQParserPlugin"/>
-    -->
-
-  <!-- Function Parsers
-
-       http://wiki.apache.org/solr/FunctionQuery
-
-       Multiple ValueSourceParsers can be registered by name, and then
-       used as function names when using the "func" QParser.
-    -->
-  <!-- example of registering a custom function parser  -->
-  <!--
-     <valueSourceParser name="myfunc" 
-                        class="com.mycompany.MyValueSourceParser" />
-    -->
-    
-  
-  <!-- Document Transformers
-       http://wiki.apache.org/solr/DocTransformers
-    -->
-  <!--
-     Could be something like:
-     <transformer name="db" class="com.mycompany.LoadFromDatabaseTransformer" >
-       <int name="connection">jdbc://....</int>
-     </transformer>
-     
-     To add a constant value to all docs, use:
-     <transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
-       <int name="value">5</int>
-     </transformer>
-     
-     If you want the user to still be able to change it with _value:something_ use this:
-     <transformer name="mytrans3" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
-       <double name="defaultValue">5</double>
-     </transformer>
-
-      If you are using the QueryElevationComponent, you may wish to mark documents that get boosted.  The
-      EditorialMarkerFactory will do exactly that:
-     <transformer name="qecBooster" class="org.apache.solr.response.transform.EditorialMarkerFactory" />
-    -->
-
-</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/NullHeader.docx
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/NullHeader.docx b/solr/contrib/morphlines-core/src/test-files/test-documents/NullHeader.docx
deleted file mode 100644
index cc62b8d..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/NullHeader.docx and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/boilerplate.html
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/boilerplate.html b/solr/contrib/morphlines-core/src/test-files/test-documents/boilerplate.html
deleted file mode 100644
index 615f84e..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/boilerplate.html
+++ /dev/null
@@ -1,58 +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.
--->
-
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-  <title>Title</title>
-</head>
-<body>
-
-<table>
-  <tr>
-    <td>
-      <table>
-        <tr>
-          <td ><a href="Main.php">boilerplate</a></td>
-          <td ><a href="Main.php">text</a></td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-
-<p>This is the real meat of the page, 
-and represents the text we want. 
-It has lots of juicy content.
-
-We assume that it won't get filtered out.
-And that all of the lines will be in the
-output.
-</p>
-
-<p>
-Here's another paragraph of text.
-This is the end of the text.
-</p>
-
-<p><a href="Footer.html">footer</a></p>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/cars.csv
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/cars.csv b/solr/contrib/morphlines-core/src/test-files/test-documents/cars.csv
deleted file mode 100644
index 8f1f9e1..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/cars.csv
+++ /dev/null
@@ -1,6 +0,0 @@
-Age,Color,Extras,Type,Used
-2,blue,GPS,"Gas, with electric",""
-10,green,"Labeled ""Vintage, 1913""",,yes
-100,red,"Labeled ""Vintage 1913""",yes
-5,orange,none,"This is a
-multi, line text",no
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/cars.csv.gz
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/cars.csv.gz b/solr/contrib/morphlines-core/src/test-files/test-documents/cars.csv.gz
deleted file mode 100644
index ee2a951..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/cars.csv.gz and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/cars.tar.gz
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/cars.tar.gz b/solr/contrib/morphlines-core/src/test-files/test-documents/cars.tar.gz
deleted file mode 100644
index 5ca3cf1..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/cars.tar.gz and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/complex.mbox
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/complex.mbox b/solr/contrib/morphlines-core/src/test-files/test-documents/complex.mbox
deleted file mode 100644
index 27f7017..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/complex.mbox
+++ /dev/null
@@ -1,291 +0,0 @@
-From core-user-return-14700-apmail-hadoop-core-user-archive=hadoop.apache.org@hadoop.apache.org Mon Jun 01 04:28:28 2009
-Return-Path: <co...@hadoop.apache.org>
-Delivered-To: apmail-hadoop-core-user-archive@www.apache.org
-Received: (qmail 19921 invoked from network); 1 Jun 2009 04:28:28 -0000
-Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3)
-  by minotaur.apache.org with SMTP; 1 Jun 2009 04:28:28 -0000
-Received: (qmail 84995 invoked by uid 500); 1 Jun 2009 04:28:38 -0000
-Delivered-To: apmail-hadoop-core-user-archive@hadoop.apache.org
-Received: (qmail 84895 invoked by uid 500); 1 Jun 2009 04:28:38 -0000
-Mailing-List: contact core-user-help@hadoop.apache.org; run by ezmlm
-Precedence: bulk
-List-Help: <ma...@hadoop.apache.org>
-List-Unsubscribe: <ma...@hadoop.apache.org>
-List-Post: <ma...@hadoop.apache.org>
-List-Id: <core-user.hadoop.apache.org>
-Reply-To: core-user@hadoop.apache.org
-Delivered-To: mailing list core-user@hadoop.apache.org
-Received: (qmail 84885 invoked by uid 99); 1 Jun 2009 04:28:38 -0000
-Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136)
-    by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Jun 2009 04:28:38 +0000
-X-ASF-Spam-Status: No, hits=1.2 required=10.0
-	tests=SPF_NEUTRAL
-X-Spam-Check-By: apache.org
-Received-SPF: neutral (athena.apache.org: local policy)
-Received: from [69.147.107.21] (HELO mrout2-b.corp.re1.wahoo.com) (69.147.107.21)
-    by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Jun 2009 04:28:26 +0000
-Received: from SNV-EXPF01.ds.corp.wahoo.com (snv-expf01.ds.corp.wahoo.com [207.126.227.250])
-	by mrout2-b.corp.re1.wahoo.com (8.13.8/8.13.8/y.out) with ESMTP id n514QYA6099963
-	for <co...@hadoop.apache.org>; Sun, 31 May 2009 21:26:35 -0700 (PDT)
-DomainKey-Signature: a=rsa-sha1; s=serpent; d=wahoo-inc.com; c=nofws; q=dns;
-	h=received:user-agent:date:subject:from:to:message-id:
-	thread-topic:thread-index:in-reply-to:mime-version:content-type:
-	content-transfer-encoding:x-originalarrivaltime;
-	b=YVtSNdgjeeSBS1yY3XDolul49i+HrgNG7QszMo9LzGnrwejjgsl5+iUM6EiQgEpV
-Received: from SNV-EXVS08.ds.corp.wahoo.com ([207.126.227.9]) by SNV-EXPF01.ds.corp.wahoo.com with Microsoft SMTPSVC(6.0.3790.3959);
-	 Sun, 31 May 2009 21:26:34 -0700
-Received: from 10.66.92.213 ([10.66.92.213]) by SNV-EXVS08.ds.corp.wahoo.com ([207.126.227.58]) with Microsoft Exchange Server HTTP-DAV ;
- Mon,  1 Jun 2009 04:26:33 +0000
-User-Agent: Microsoft-Entourage/12.17.0.090302
-Date: Mon, 01 Jun 2009 09:56:31 +0530
-Subject: Re: question about when shuffle/sort start working
-From: Sam Judgement <Sa...@wahoo-inc.com>
-To: <co...@hadoop.apache.org>
-Message-ID: <C6...@wahoo-inc.com>
-Thread-Topic: question about when shuffle/sort start working
-Thread-Index: AcnicSNoBw19cMU8UEaXwAdZ1YYhuw==
-In-Reply-To: <44...@web111005.mail.gq1.wahoo.com>
-Mime-version: 1.0
-Content-type: text/plain;
-	charset="US-ASCII"
-Content-transfer-encoding: 7bit
-X-OriginalArrivalTime: 01 Jun 2009 04:26:34.0501 (UTC) FILETIME=[257EAB50:01C9E271]
-X-Virus-Checked: Checked by ClamAV on apache.org
-
-When a Mapper completes, MapCompletionEvents are generated. Reducers try to
-fetch map outputs for a given map only on the receipt of such events.
-
-Sam
-
-
-On 5/30/09 10:00 AM, "Jianmin Foo" <ji...@wahoo.com> wrote:
-
-> Hi, 
-> I am being confused by the protocol between mapper and reducer. When mapper
-> emitting the (key,value) pair done, is there any signal the mapper send out to
-> hadoop framework in protocol to indicate that map is done and the shuffle/sort
-> can begin for reducer? If there is no this signal in protocol, when the
-> framework begin the shuffle/sort?
-> 
-> Thanks,
-> Jianmin
-> 
-> 
-> 
->       
-
-
-From core-user-return-14701-apmail-hadoop-core-user-archive=hadoop.apache.org@hadoop.apache.org Mon Jun 01 05:31:14 2009
-Return-Path: <co...@hadoop.apache.org>
-Delivered-To: apmail-hadoop-core-user-archive@www.apache.org
-Received: (qmail 38243 invoked from network); 1 Jun 2009 05:31:14 -0000
-Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3)
-  by minotaur.apache.org with SMTP; 1 Jun 2009 05:31:14 -0000
-Received: (qmail 15621 invoked by uid 500); 1 Jun 2009 05:31:24 -0000
-Delivered-To: apmail-hadoop-core-user-archive@hadoop.apache.org
-Received: (qmail 15557 invoked by uid 500); 1 Jun 2009 05:31:24 -0000
-Mailing-List: contact core-user-help@hadoop.apache.org; run by ezmlm
-Precedence: bulk
-List-Help: <ma...@hadoop.apache.org>
-List-Unsubscribe: <ma...@hadoop.apache.org>
-List-Post: <ma...@hadoop.apache.org>
-List-Id: <core-user.hadoop.apache.org>
-Reply-To: core-user@hadoop.apache.org
-Delivered-To: mailing list core-user@hadoop.apache.org
-Received: (qmail 15547 invoked by uid 99); 1 Jun 2009 05:31:24 -0000
-Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230)
-    by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Jun 2009 05:31:24 +0000
-X-ASF-Spam-Status: No, hits=2.2 required=10.0
-	tests=HTML_MESSAGE,SPF_PASS
-X-Spam-Check-By: apache.org
-Received-SPF: pass (nike.apache.org: local policy)
-Received: from [68.142.237.94] (HELO n9.bullet.re3.wahoo.com) (68.142.237.94)
-    by apache.org (qpsmtpd/0.29) with SMTP; Mon, 01 Jun 2009 05:31:11 +0000
-Received: from [68.142.237.88] by n9.bullet.re3.wahoo.com with NNFMP; 01 Jun 2009 05:30:50 -0000
-Received: from [67.195.9.82] by t4.bullet.re3.wahoo.com with NNFMP; 01 Jun 2009 05:30:49 -0000
-Received: from [67.195.9.99] by t2.bullet.mail.gq1.wahoo.com with NNFMP; 01 Jun 2009 05:30:49 -0000
-Received: from [127.0.0.1] by omp103.mail.gq1.wahoo.com with NNFMP; 01 Jun 2009 05:28:01 -0000
-X-wahoo-Newman-Property: ymail-3
-X-wahoo-Newman-Id: 796121.97519.bm@omp103.mail.gq1.wahoo.com
-Received: (qmail 35264 invoked by uid 60001); 1 Jun 2009 05:30:49 -0000
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wahoo.com; s=s1024; t=1243834249; bh=R8qzdi/IbLyO8UwpnaujDpT9E+6bJ7nkmZN2803EmRk=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:In-Reply-To:MIME-Version:Content-Type; b=vq4c6RIDbkuLPYd8mirusIXf6DqTb/IeT55In7W00Y5Sxx1ZiXBb78yE9+TDfXJ0elsEZvqv4ocyvolGE0eGtyYeJA0mZikpRNu6pidxPNpCplOcLHBRz7YQ7iERwv3TagRlWy2Xd3oD9ZeV0A05P7WUOiNNX1PUUJD1IVdrEZo=
-DomainKey-Signature:a=rsa-sha1; q=dns; c=nofws;
-  s=s1024; d=wahoo.com;
-  h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Subject:To:In-Reply-To:MIME-Version:Content-Type;
-  b=6HXZV98ON5vBwmE/xS8stVD0D2F4dkMY7a0suX5KVTb736JdR8G59mqBq/dWcpbFTLiCLtxi18LMb/dU1RKRGOEdn3l3j/jKXhBrhIgfg3qtNskPedXDKBvn7JGXiSkqpA/tUtPjvc0Uuk8/LaA01SQTz40Engg7nD8/EJdIAhA=;
-Message-ID: <59...@web111010.mail.gq1.wahoo.com>
-X-YMail-OSG: KzhhrJYVM1m.MCS6vRpRP2ZZO2PrfnbngosELDCIa91ZqvhJph4RdmzfUW0jw9W04RCSch1K730bPohwNpNBIk2QR_zt4_mfbhfq7YEPkSoz9LSXG90P9vIo5Fc8qyZN0U6vA9gtdyGQTpN5ahvillUH9nAF0TMWv2SvZJLjPlQ0Z0p8oK8ltBwGTgLrM8Jtdn9D29yoRyi3_EpVOfdD9OP.EK50Vr1XwSUYMbnpZ0WGHMwd.Yig7A6Elwadm3YVbfOdx2mfrG.jQsUAxQjRBNvbrOM57.FaE11kHTe9aoBWSeihNg--
-Received: from [216.145.54.7] by web111010.mail.gq1.wahoo.com via HTTP; Sun, 31 May 2009 22:30:49 PDT
-X-Mailer: wahooMailRC/1277.43 wahooMailWebService/0.7.289.10
-References: <C6...@wahoo-inc.com>
-Date: Sun, 31 May 2009 22:30:49 -0700 (PDT)
-From: Jianmin Foo <ji...@wahoo.com>
-Subject: Re: question about when shuffle/sort start working
-To: core-user@hadoop.apache.org
-In-Reply-To: <C6...@wahoo-inc.com>
-MIME-Version: 1.0
-Content-Type: multipart/alternative; boundary="0-1193839393-1243834249=:35091"
-X-Virus-Checked: Checked by ClamAV on apache.org
-
---0-1193839393-1243834249=:35091
-Content-Type: text/plain; charset=us-ascii
-
-Thanks a lot for your explanation, Sam. 
-
-So is this event generated by hadoop framework? Is there any API in mapper to fire this event? Actually, I am thinking to implement a mapper that will emit some <key, value> pairs, then fire this event to let the reducer works, the same mapper task then emit some other <key, value> pairs and repeat. Do you think is this logic feasible by current API?
-
-Thanks,
-Jianmin
-
-
-
-
-
-________________________________
-From: Sam Judgement <Sa...@wahoo-inc.com>
-To: core-user@hadoop.apache.org
-Sent: Monday, June 1, 2009 12:26:31 PM
-Subject: Re: question about when shuffle/sort start working
-
-When a Mapper completes, MapCompletionEvents are generated. Reducers try to
-fetch map outputs for a given map only on the receipt of such events.
-
-Sam
-
-
-On 5/30/09 10:00 AM, "Jianmin Foo" <ji...@wahoo.com> wrote:
-
-> Hi, 
-> I am being confused by the protocol between mapper and reducer. When mapper
-> emitting the (key,value) pair done, is there any signal the mapper send out to
-> hadoop framework in protocol to indicate that map is done and the shuffle/sort
-> can begin for reducer? If there is no this signal in protocol, when the
-> framework begin the shuffle/sort?
-> 
-> Thanks,
-> Jianmin
-> 
-> 
-> 
->      
-
-
-      
---0-1193839393-1243834249=:35091--
-
-
-From core-user-return-14702-apmail-hadoop-core-user-archive=hadoop.apache.org@hadoop.apache.org Mon Jun 01 06:04:30 2009
-Return-Path: <co...@hadoop.apache.org>
-Delivered-To: apmail-hadoop-core-user-archive@www.apache.org
-Received: (qmail 53387 invoked from network); 1 Jun 2009 06:04:29 -0000
-Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3)
-  by minotaur.apache.org with SMTP; 1 Jun 2009 06:04:29 -0000
-Received: (qmail 39066 invoked by uid 500); 1 Jun 2009 06:04:39 -0000
-Delivered-To: apmail-hadoop-core-user-archive@hadoop.apache.org
-Received: (qmail 38970 invoked by uid 500); 1 Jun 2009 06:04:39 -0000
-Mailing-List: contact core-user-help@hadoop.apache.org; run by ezmlm
-Precedence: bulk
-List-Help: <ma...@hadoop.apache.org>
-List-Unsubscribe: <ma...@hadoop.apache.org>
-List-Post: <ma...@hadoop.apache.org>
-List-Id: <core-user.hadoop.apache.org>
-Reply-To: core-user@hadoop.apache.org
-Delivered-To: mailing list core-user@hadoop.apache.org
-Received: (qmail 38955 invoked by uid 99); 1 Jun 2009 06:04:39 -0000
-Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136)
-    by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Jun 2009 06:04:39 +0000
-X-ASF-Spam-Status: No, hits=1.2 required=10.0
-	tests=SPF_NEUTRAL
-X-Spam-Check-By: apache.org
-Received-SPF: neutral (athena.apache.org: local policy)
-Received: from [216.145.54.172] (HELO mrout2.wahoo.com) (216.145.54.172)
-    by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Jun 2009 06:04:28 +0000
-Received: from SNV-EXBH01.ds.corp.wahoo.com (snv-exbh01.ds.corp.wahoo.com [207.126.227.249])
-	by mrout2.wahoo.com (8.13.6/8.13.6/y.out) with ESMTP id n5163FGq038852
-	for <co...@hadoop.apache.org>; Sun, 31 May 2009 23:03:15 -0700 (PDT)
-DomainKey-Signature: a=rsa-sha1; s=serpent; d=wahoo-inc.com; c=nofws; q=dns;
-	h=received:user-agent:date:subject:from:to:message-id:
-	thread-topic:thread-index:in-reply-to:mime-version:content-type:
-	content-transfer-encoding:x-originalarrivaltime;
-	b=rChE4SCnwtWaZpjhovkiXDKfDiVNdRRvsadSGG9S9bgvOexn/9/5JjEQx1pOR7Nb
-Received: from SNV-EXVS08.ds.corp.wahoo.com ([207.126.227.9]) by SNV-EXBH01.ds.corp.wahoo.com with Microsoft SMTPSVC(6.0.3790.3959);
-	 Sun, 31 May 2009 23:03:15 -0700
-Received: from 10.66.92.213 ([10.66.92.213]) by SNV-EXVS08.ds.corp.wahoo.com ([207.126.227.58]) with Microsoft Exchange Server HTTP-DAV ;
- Mon,  1 Jun 2009 06:03:15 +0000
-User-Agent: Microsoft-Entourage/12.17.0.090302
-Date: Mon, 01 Jun 2009 11:33:13 +0530
-Subject: Re: question about when shuffle/sort start working
-From: Sam Judgement <Sa...@wahoo-inc.com>
-To: <co...@hadoop.apache.org>
-Message-ID: <C6...@wahoo-inc.com>
-Thread-Topic: question about when shuffle/sort start working
-Thread-Index: AcnifqWrLG6N7GAk7kqy9QalVWfegQ==
-In-Reply-To: <59...@web111010.mail.gq1.wahoo.com>
-Mime-version: 1.0
-Content-type: text/plain;
-	charset="US-ASCII"
-Content-transfer-encoding: 7bit
-X-OriginalArrivalTime: 01 Jun 2009 06:03:15.0462 (UTC) FILETIME=[A7231260:01C9E27E]
-X-Virus-Checked: Checked by ClamAV on apache.org
-
-
-No you cannot raise this event yourself, this event is generated internally
-by the framework. 
-
-I am guessing that what you probably want is to have a chain of MapReduce
-Jobs where the output of one is automatically fed as input to another.  You
-can look at these classes: JobControl and ChainMapper/ChainReducer.
-
-Sam
-
-On 6/1/09 11:00 AM, "Jianmin Foo" <ji...@wahoo.com> wrote:
-
-> Thanks a lot for your explanation, Sam.
-> 
-> So is this event generated by hadoop framework? Is there any API in mapper to
-> fire this event? Actually, I am thinking to implement a mapper that will emit
-> some <key, value> pairs, then fire this event to let the reducer works, the
-> same mapper task then emit some other <key, value> pairs and repeat. Do you
-> think is this logic feasible by current API?
-> 
-> Thanks,
-> Jianmin
-> 
-> 
-> 
-> 
-> 
-> ________________________________
-> From: Sam Judgement <Sa...@wahoo-inc.com>
-> To: core-user@hadoop.apache.org
-> Sent: Monday, June 1, 2009 12:26:31 PM
-> Subject: Re: question about when shuffle/sort start working
-> 
-> When a Mapper completes, MapCompletionEvents are generated. Reducers try to
-> fetch map outputs for a given map only on the receipt of such events.
-> 
-> Sam
-> 
-> 
-> On 5/30/09 10:00 AM, "Jianmin Foo" <ji...@wahoo.com> wrote:
-> 
->> Hi, 
->> I am being confused by the protocol between mapper and reducer. When mapper
->> emitting the (key,value) pair done, is there any signal the mapper send out
->> to
->> hadoop framework in protocol to indicate that map is done and the
->> shuffle/sort
->> can begin for reducer? If there is no this signal in protocol, when the
->> framework begin the shuffle/sort?
->> 
->> Thanks,
->> Jianmin
->> 
->> 
->> 
->>      
-> 
-> 
->       
-
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/email.eml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/email.eml b/solr/contrib/morphlines-core/src/test-files/test-documents/email.eml
deleted file mode 100644
index d45f430..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/email.eml
+++ /dev/null
@@ -1,40 +0,0 @@
-MIME-Version: 1.0
-Received: by 10.216.199.5 with HTTP; Wed, 27 Nov 2013 12:01:23 -0800
-(PST)
-Date: Wed, 27 Nov 2013 13:01:23 -0700
-Delivered-To: foo@cloudera.com
-Message-ID:
-<CA...@mail.gmail.com>
-Subject: Test EML
-From: Patrick Foo <fo...@cloudera.com>
-To: Patrick Foo <fo...@cloudera.com>
-Content-Type: multipart/alternative;
-boundary=001a11c3815cb55dda04ec2e0f3b
-
---001a11c3815cb55dda04ec2e0f3b
-Content-Type: text/plain; charset=ISO-8859-1
-
-This is a test
-
--- 
-Patrick Foo
-Customer Operations Engineer
-
-<http://www.cloudera.com>
-
---001a11c3815cb55dda04ec2e0f3b
-Content-Type: text/html; charset=ISO-8859-1
-Content-Transfer-Encoding: quoted-printable
-
-<div dir=3D"ltr">This is a test<br clear=3D"all"><div><br></div>--
-<br><div=
- dir=3D"ltr">Patrick Foo<div>Customer Operations
-Engineer</div><div><br>=
-</div><div><a href=3D"http://www.cloudera.com" target=3D"_blank"><img
-src=
-=3D"http://files.cloudera.com.s3.amazonaws.com/New%20Branding/cloudera-smal=
-l.png"></a><br>
-</div></div>
-</div>
-
---001a11c3815cb55dda04ec2e0f3b--

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/rsstest.rss
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/rsstest.rss b/solr/contrib/morphlines-core/src/test-files/test-documents/rsstest.rss
deleted file mode 100644
index 758f6a1..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/rsstest.rss
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!--
-	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.
--->
-<rss version="0.91">
-    <channel>
-      <title>TestChannel</title>
-      <link>http://test.channel.com/</link> 
-      <description>Sample RSS File for Junit test</description> 
-      <language>en-us</language>
-      
-      <item>
-        <title>Home Page of Chris Mattmann</title>
-        <link>http://www-scf.usc.edu/~mattmann/</link>
-        <description>Chris Mattmann's home page</description>
-      </item>
-      <item>
-        <title>Awesome Open Source Search Engine</title> 
-        <link>http://www.nutch.org/</link> 
-        <description>Yup, that's what it is</description> 
-      </item>
-   </channel>
-</rss>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120521-100919.avro
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120521-100919.avro b/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120521-100919.avro
deleted file mode 100644
index 36f01a2..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120521-100919.avro and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433 b/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433
deleted file mode 100644
index e633a1f..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433
+++ /dev/null
@@ -1,4 +0,0 @@
-1000
-{"text":"sample tweet one","retweet_count":0,"in_reply_to_user_id":null,"retweeted":false,"truncated":false,"source":"href=\"http:\/\/sample.com\"","id_str":"1234567891","entities":{"user_mentions":[],"hashtags":[],"urls":[]},"in_reply_to_status_id":null,"place":null,"in_reply_to_status_id_str":null,"coordinates":null,"created_at":"Wed Sep 05 01:01:01 +0000 1985","in_reply_to_screen_name":null,"favorited":false,"in_reply_to_user_id_str":null,"user":{"default_profile_image":false,"friends_count":111,"profile_background_color":"3C0C29","location":"Palo Alto","is_translator":false,"profile_background_tile":true,"favourites_count":11,"verified":false,"profile_sidebar_fill_color":"efefef","follow_request_sent":null,"contributors_enabled":false,"description":"desc1","profile_sidebar_border_color":"eeeeee","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1\/normal.jpg","id_str":"1111111","listed_count":1,"lang":"en","screen_name":"fake_user1","show_all_inline_media":fals
 e,"profile_use_background_image":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1111111\/normal.jpg","default_profile":false,"statuses_count":11111,"created_at":"Thu Apr 07 11:04:54 +0000 1985","profile_text_color":"333333","followers_count":111,"protected":false,"following":null,"notifications":null,"profile_background_image_url":"http:\/\/a0.twimg.com\/images\/themes\/theme1\/bg.gif","time_zone":null,"url":null,"name":"name1","geo_enabled":false,"profile_link_color":"009999","id":1111112,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/images\/themes\/theme1\/bg.gif","utc_offset":null},"id":11111112,"contributors":null,"geo":null}
-2000
-{"text":"sample tweet two","retweet_count":0,"in_reply_to_user_id":null,"retweeted":false,"truncated":false,"source":"href=\"http:\/\/sample.com\"","id_str":"2345678902","entities":{"user_mentions":[],"hashtags":[],"urls":[]},"in_reply_to_status_id":null,"place":null,"in_reply_to_status_id_str":null,"coordinates":null,"created_at":"Wed Sep 05 02:14:34 +0000 1985","in_reply_to_screen_name":null,"favorited":false,"in_reply_to_user_id_str":null,"user":{"default_profile_image":false,"friends_count":222,"profile_background_color":"3C0C29","location":"San Francisco","is_translator":false,"profile_background_tile":false,"favourites_count":22,"verified":false,"profile_sidebar_fill_color":"B2D948","follow_request_sent":null,"contributors_enabled":false,"description":"desc2","profile_sidebar_border_color":"8EC63D","profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/22222222\/image_normal.jpg","id_str":"2222222","listed_count":0,"lang":"en","screen_name":"fake_user2","show_all_
 inline_media":false,"profile_use_background_image":true,"profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/2222222\/image_normal.jpg","default_profile":false,"statuses_count":222222,"created_at":"Thu Aug 04 11:33:28 +0000 1985","profile_text_color":"444444","followers_count":222,"protected":false,"following":null,"notifications":null,"profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/222222\/222222.jpg","time_zone":"Central Time (US & Canada)","url":null,"name":"name2","geo_enabled":false,"profile_link_color":"9A0057","id":2222223,"profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/2222222\/22222.jpg","utc_offset":-21600},"id":222223,"contributors":null,"geo":null}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433-medium.avro
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433-medium.avro b/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433-medium.avro
deleted file mode 100644
index 900507c..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433-medium.avro and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.avro
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.avro b/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.avro
deleted file mode 100644
index 4dbf180..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.avro and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.bz2
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.bz2 b/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.bz2
deleted file mode 100644
index a4a9159..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.bz2 and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.gz
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.gz b/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.gz
deleted file mode 100644
index 3e7a44c..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/sample-statuses-20120906-141433.gz and /dev/null differ

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/test-outlook.msg
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/test-outlook.msg b/solr/contrib/morphlines-core/src/test-files/test-documents/test-outlook.msg
deleted file mode 100644
index c975c0c..0000000
Binary files a/solr/contrib/morphlines-core/src/test-files/test-documents/test-outlook.msg and /dev/null differ


[13/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ro.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ro.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ro.txt
deleted file mode 100644
index 4fdee90..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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\u0103
-aceea
-acei
-aceia
-acel
-acela
-acele
-acelea
-acest
-acesta
-aceste
-acestea
-ace\u015fti
-ace\u015ftia
-acolo
-acum
-ai
-aia
-aib\u0103
-aici
-al
-\u0103la
-ale
-alea
-\u0103lea
-altceva
-altcineva
-am
-ar
-are
-a\u015f
-a\u015fadar
-asemenea
-asta
-\u0103sta
-ast\u0103zi
-astea
-\u0103stea
-\u0103\u015ftia
-asupra
-a\u0163i
-au
-avea
-avem
-ave\u0163i
-azi
-bine
-bucur
-bun\u0103
-ca
-c\u0103
-c\u0103ci
-c�nd
-care
-c\u0103rei
-c\u0103ror
-c\u0103rui
-c�t
-c�te
-c�\u0163i
-c\u0103tre
-c�tva
-ce
-cel
-ceva
-chiar
-c�nd
-cine
-cineva
-c�t
-c�te
-c�\u0163i
-c�tva
-contra
-cu
-cum
-cumva
-cur�nd
-cur�nd
-da
-d\u0103
-dac\u0103
-dar
-datorit\u0103
-de
-deci
-deja
-deoarece
-departe
-de\u015fi
-din
-dinaintea
-dintr
-dintre
-drept
-dup\u0103
-ea
-ei
-el
-ele
-eram
-este
-e\u015fti
-eu
-face
-f\u0103r\u0103
-fi
-fie
-fiecare
-fii
-fim
-fi\u0163i
-iar
-ieri
-�i
-�l
-�mi
-�mpotriva
-�n 
-�nainte
-�naintea
-�nc�t
-�nc�t
-�ncotro
-�ntre
-�ntruc�t
-�ntruc�t
-�\u0163i
-la
-l�ng\u0103
-le
-li
-l�ng\u0103
-lor
-lui
-m\u0103
-m�ine
-mea
-mei
-mele
-mereu
-meu
-mi
-mine
-mult
-mult\u0103
-mul\u0163i
-ne
-nic\u0103ieri
-nici
-nimeni
-ni\u015fte
-noastr\u0103
-noastre
-noi
-no\u015ftri
-nostru
-nu
-ori
-oric�nd
-oricare
-oric�t
-orice
-oric�nd
-oricine
-oric�t
-oricum
-oriunde
-p�n\u0103
-pe
-pentru
-peste
-p�n\u0103
-poate
-pot
-prea
-prima
-primul
-prin
-printr
-sa
-s\u0103
-s\u0103i
-sale
-sau
-s\u0103u
-se
-\u015fi
-s�nt
-s�ntem
-s�nte\u0163i
-spre
-sub
-sunt
-suntem
-sunte\u0163i
-ta
-t\u0103i
-tale
-t\u0103u
-te
-\u0163i
-\u0163ie
-tine
-toat\u0103
-toate
-tot
-to\u0163i
-totu\u015fi
-tu
-un
-una
-unde
-undeva
-unei
-unele
-uneori
-unor
-v\u0103
-vi
-voastr\u0103
-voastre
-voi
-vo\u015ftri
-vostru
-vou\u0103
-vreo
-vreun

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ru.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ru.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ru.txt
deleted file mode 100644
index 6430769..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_ru.txt
+++ /dev/null
@@ -1,241 +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.
-
- | 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 `\u0451' is translated to `\u0435'.
-
-\u0438              | and
-\u0432              | in/into
-\u0432\u043e             | alternative form
-\u043d\u0435             | not
-\u0447\u0442\u043e            | what/that
-\u043e\u043d             | he
-\u043d\u0430             | on/onto
-\u044f              | i
-\u0441              | from
-\u0441\u043e             | alternative form
-\u043a\u0430\u043a            | how
-\u0430              | milder form of `no' (but)
-\u0442\u043e             | conjunction and form of `that'
-\u0432\u0441\u0435            | all
-\u043e\u043d\u0430            | she
-\u0442\u0430\u043a            | so, thus
-\u0435\u0433\u043e            | him
-\u043d\u043e             | but
-\u0434\u0430             | yes/and
-\u0442\u044b             | thou
-\u043a              | towards, by
-\u0443              | around, chez
-\u0436\u0435             | intensifier particle
-\u0432\u044b             | you
-\u0437\u0430             | beyond, behind
-\u0431\u044b             | conditional/subj. particle
-\u043f\u043e             | up to, along
-\u0442\u043e\u043b\u044c\u043a\u043e         | only
-\u0435\u0435             | her
-\u043c\u043d\u0435            | to me
-\u0431\u044b\u043b\u043e           | it was
-\u0432\u043e\u0442            | here is/are, particle
-\u043e\u0442             | away from
-\u043c\u0435\u043d\u044f           | me
-\u0435\u0449\u0435            | still, yet, more
-\u043d\u0435\u0442            | no, there isnt/arent
-\u043e              | about
-\u0438\u0437             | out of
-\u0435\u043c\u0443            | to him
-\u0442\u0435\u043f\u0435\u0440\u044c         | now
-\u043a\u043e\u0433\u0434\u0430          | when
-\u0434\u0430\u0436\u0435           | even
-\u043d\u0443             | so, well
-\u0432\u0434\u0440\u0443\u0433          | suddenly
-\u043b\u0438             | interrogative particle
-\u0435\u0441\u043b\u0438           | if
-\u0443\u0436\u0435            | already, but homonym of `narrower'
-\u0438\u043b\u0438            | or
-\u043d\u0438             | neither
-\u0431\u044b\u0442\u044c           | to be
-\u0431\u044b\u043b            | he was
-\u043d\u0435\u0433\u043e           | prepositional form of \u0435\u0433\u043e
-\u0434\u043e             | up to
-\u0432\u0430\u0441            | you accusative
-\u043d\u0438\u0431\u0443\u0434\u044c         | indef. suffix preceded by hyphen
-\u043e\u043f\u044f\u0442\u044c          | again
-\u0443\u0436             | already, but homonym of `adder'
-\u0432\u0430\u043c            | to you
-\u0441\u043a\u0430\u0437\u0430\u043b         | he said
-\u0432\u0435\u0434\u044c           | particle `after all'
-\u0442\u0430\u043c            | there
-\u043f\u043e\u0442\u043e\u043c          | then
-\u0441\u0435\u0431\u044f           | oneself
-\u043d\u0438\u0447\u0435\u0433\u043e         | nothing
-\u0435\u0439             | to her
-\u043c\u043e\u0436\u0435\u0442          | usually with `\u0431\u044b\u0442\u044c' as `maybe'
-\u043e\u043d\u0438            | they
-\u0442\u0443\u0442            | here
-\u0433\u0434\u0435            | where
-\u0435\u0441\u0442\u044c           | there is/are
-\u043d\u0430\u0434\u043e           | got to, must
-\u043d\u0435\u0439            | prepositional form of  \u0435\u0439
-\u0434\u043b\u044f            | for
-\u043c\u044b             | we
-\u0442\u0435\u0431\u044f           | thee
-\u0438\u0445             | them, their
-\u0447\u0435\u043c            | than
-\u0431\u044b\u043b\u0430           | she was
-\u0441\u0430\u043c            | self
-\u0447\u0442\u043e\u0431           | in order to
-\u0431\u0435\u0437            | without
-\u0431\u0443\u0434\u0442\u043e          | as if
-\u0447\u0435\u043b\u043e\u0432\u0435\u043a        | man, person, one
-\u0447\u0435\u0433\u043e           | genitive form of `what'
-\u0440\u0430\u0437            | once
-\u0442\u043e\u0436\u0435           | also
-\u0441\u0435\u0431\u0435           | to oneself
-\u043f\u043e\u0434            | beneath
-\u0436\u0438\u0437\u043d\u044c          | life
-\u0431\u0443\u0434\u0435\u0442          | will be
-\u0436              | short form of intensifer particle `\u0436\u0435'
-\u0442\u043e\u0433\u0434\u0430          | then
-\u043a\u0442\u043e            | who
-\u044d\u0442\u043e\u0442           | this
-\u0433\u043e\u0432\u043e\u0440\u0438\u043b        | was saying
-\u0442\u043e\u0433\u043e           | genitive form of `that'
-\u043f\u043e\u0442\u043e\u043c\u0443         | for that reason
-\u044d\u0442\u043e\u0433\u043e          | genitive form of `this'
-\u043a\u0430\u043a\u043e\u0439          | which
-\u0441\u043e\u0432\u0441\u0435\u043c         | altogether
-\u043d\u0438\u043c            | prepositional form of `\u0435\u0433\u043e', `\u043e\u043d\u0438'
-\u0437\u0434\u0435\u0441\u044c          | here
-\u044d\u0442\u043e\u043c           | prepositional form of `\u044d\u0442\u043e\u0442'
-\u043e\u0434\u0438\u043d           | one
-\u043f\u043e\u0447\u0442\u0438          | almost
-\u043c\u043e\u0439            | my
-\u0442\u0435\u043c            | instrumental/dative plural of `\u0442\u043e\u0442', `\u0442\u043e'
-\u0447\u0442\u043e\u0431\u044b          | full form of `in order that'
-\u043d\u0435\u0435            | her (acc.)
-\u043a\u0430\u0436\u0435\u0442\u0441\u044f        | it seems
-\u0441\u0435\u0439\u0447\u0430\u0441         | now
-\u0431\u044b\u043b\u0438           | they were
-\u043a\u0443\u0434\u0430           | where to
-\u0437\u0430\u0447\u0435\u043c          | why
-\u0441\u043a\u0430\u0437\u0430\u0442\u044c        | to say
-\u0432\u0441\u0435\u0445           | all (acc., gen. preposn. plural)
-\u043d\u0438\u043a\u043e\u0433\u0434\u0430        | never
-\u0441\u0435\u0433\u043e\u0434\u043d\u044f        | today
-\u043c\u043e\u0436\u043d\u043e          | possible, one can
-\u043f\u0440\u0438            | by
-\u043d\u0430\u043a\u043e\u043d\u0435\u0446        | finally
-\u0434\u0432\u0430            | two
-\u043e\u0431             | alternative form of `\u043e', about
-\u0434\u0440\u0443\u0433\u043e\u0439         | another
-\u0445\u043e\u0442\u044c           | even
-\u043f\u043e\u0441\u043b\u0435          | after
-\u043d\u0430\u0434            | above
-\u0431\u043e\u043b\u044c\u0448\u0435         | more
-\u0442\u043e\u0442            | that one (masc.)
-\u0447\u0435\u0440\u0435\u0437          | across, in
-\u044d\u0442\u0438            | these
-\u043d\u0430\u0441            | us
-\u043f\u0440\u043e            | about
-\u0432\u0441\u0435\u0433\u043e          | in all, only, of all
-\u043d\u0438\u0445            | prepositional form of `\u043e\u043d\u0438' (they)
-\u043a\u0430\u043a\u0430\u044f          | which, feminine
-\u043c\u043d\u043e\u0433\u043e          | lots
-\u0440\u0430\u0437\u0432\u0435          | interrogative particle
-\u0441\u043a\u0430\u0437\u0430\u043b\u0430        | she said
-\u0442\u0440\u0438            | three
-\u044d\u0442\u0443            | this, acc. fem. sing.
-\u043c\u043e\u044f            | my, feminine
-\u0432\u043f\u0440\u043e\u0447\u0435\u043c        | moreover, besides
-\u0445\u043e\u0440\u043e\u0448\u043e         | good
-\u0441\u0432\u043e\u044e           | ones own, acc. fem. sing.
-\u044d\u0442\u043e\u0439           | oblique form of `\u044d\u0442\u0430', fem. `this'
-\u043f\u0435\u0440\u0435\u0434          | in front of
-\u0438\u043d\u043e\u0433\u0434\u0430         | sometimes
-\u043b\u0443\u0447\u0448\u0435          | better
-\u0447\u0443\u0442\u044c           | a little
-\u0442\u043e\u043c            | preposn. form of `that one'
-\u043d\u0435\u043b\u044c\u0437\u044f         | one must not
-\u0442\u0430\u043a\u043e\u0439          | such a one
-\u0438\u043c             | to them
-\u0431\u043e\u043b\u0435\u0435          | more
-\u0432\u0441\u0435\u0433\u0434\u0430         | always
-\u043a\u043e\u043d\u0435\u0447\u043d\u043e        | of course
-\u0432\u0441\u044e            | acc. fem. sing of `all'
-\u043c\u0435\u0436\u0434\u0443          | between
-
-
-  | b: some paradigms
-  |
-  | personal pronouns
-  |
-  | \u044f  \u043c\u0435\u043d\u044f  \u043c\u043d\u0435  \u043c\u043d\u043e\u0439  [\u043c\u043d\u043e\u044e]
-  | \u0442\u044b  \u0442\u0435\u0431\u044f  \u0442\u0435\u0431\u0435  \u0442\u043e\u0431\u043e\u0439  [\u0442\u043e\u0431\u043e\u044e]
-  | \u043e\u043d  \u0435\u0433\u043e  \u0435\u043c\u0443  \u0438\u043c  [\u043d\u0435\u0433\u043e, \u043d\u0435\u043c\u0443, \u043d\u0438\u043c]
-  | \u043e\u043d\u0430  \u0435\u0435  \u044d\u0438  \u0435\u044e  [\u043d\u0435\u0435, \u043d\u044d\u0438, \u043d\u0435\u044e]
-  | \u043e\u043d\u043e  \u0435\u0433\u043e  \u0435\u043c\u0443  \u0438\u043c  [\u043d\u0435\u0433\u043e, \u043d\u0435\u043c\u0443, \u043d\u0438\u043c]
-  |
-  | \u043c\u044b  \u043d\u0430\u0441  \u043d\u0430\u043c  \u043d\u0430\u043c\u0438
-  | \u0432\u044b  \u0432\u0430\u0441  \u0432\u0430\u043c  \u0432\u0430\u043c\u0438
-  | \u043e\u043d\u0438  \u0438\u0445  \u0438\u043c  \u0438\u043c\u0438  [\u043d\u0438\u0445, \u043d\u0438\u043c, \u043d\u0438\u043c\u0438]
-  |
-  |   \u0441\u0435\u0431\u044f  \u0441\u0435\u0431\u0435  \u0441\u043e\u0431\u043e\u0439   [\u0441\u043e\u0431\u043e\u044e]
-  |
-  | demonstrative pronouns: \u044d\u0442\u043e\u0442 (this), \u0442\u043e\u0442 (that)
-  |
-  | \u044d\u0442\u043e\u0442  \u044d\u0442\u0430  \u044d\u0442\u043e  \u044d\u0442\u0438
-  | \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u044b  \u044d\u0442\u043e  \u044d\u0442\u0438
-  | \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u0438\u0445
-  | \u044d\u0442\u043e\u043c\u0443  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u043c\u0443  \u044d\u0442\u0438\u043c
-  | \u044d\u0442\u0438\u043c  \u044d\u0442\u043e\u0439  \u044d\u0442\u0438\u043c  [\u044d\u0442\u043e\u044e]  \u044d\u0442\u0438\u043c\u0438
-  | \u044d\u0442\u043e\u043c  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u043c  \u044d\u0442\u0438\u0445
-  |
-  | \u0442\u043e\u0442  \u0442\u0430  \u0442\u043e  \u0442\u0435
-  | \u0442\u043e\u0433\u043e  \u0442\u0443  \u0442\u043e  \u0442\u0435
-  | \u0442\u043e\u0433\u043e  \u0442\u043e\u0439  \u0442\u043e\u0433\u043e  \u0442\u0435\u0445
-  | \u0442\u043e\u043c\u0443  \u0442\u043e\u0439  \u0442\u043e\u043c\u0443  \u0442\u0435\u043c
-  | \u0442\u0435\u043c  \u0442\u043e\u0439  \u0442\u0435\u043c  [\u0442\u043e\u044e]  \u0442\u0435\u043c\u0438
-  | \u0442\u043e\u043c  \u0442\u043e\u0439  \u0442\u043e\u043c  \u0442\u0435\u0445
-  |
-  | determinative pronouns
-  |
-  | (a) \u0432\u0435\u0441\u044c (all)
-  |
-  | \u0432\u0435\u0441\u044c  \u0432\u0441\u044f  \u0432\u0441\u0435  \u0432\u0441\u0435
-  | \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u044e  \u0432\u0441\u0435  \u0432\u0441\u0435
-  | \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u0435\u0445
-  | \u0432\u0441\u0435\u043c\u0443  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c\u0443  \u0432\u0441\u0435\u043c
-  | \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c  [\u0432\u0441\u0435\u044e]  \u0432\u0441\u0435\u043c\u0438
-  | \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0445
-  |
-  | (b) \u0441\u0430\u043c (himself etc)
-  |
-  | \u0441\u0430\u043c  \u0441\u0430\u043c\u0430  \u0441\u0430\u043c\u043e  \u0441\u0430\u043c\u0438
-  | \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0430\u043c\u0443  \u0441\u0430\u043c\u043e  \u0441\u0430\u043c\u0438\u0445
-  | \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u0433\u043e  \u0441\u0430\u043c\u0438\u0445
-  | \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u043c\u0443  \u0441\u0430\u043c\u0438\u043c
-  | \u0441\u0430\u043c\u0438\u043c  \u0441\u0430\u043c\u043e\u0439  \u0441\u0430\u043c\u0438\u043c  [\u0441\u0430\u043c\u043e\u044e]  \u0441\u0430\u043c\u0438\u043c\u0438
-  | \u0441\u0430\u043c\u043e\u043c \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u043c  \u0441\u0430\u043c\u0438\u0445
-  |
-  | stems of verbs `to be', `to have', `to do' and modal
-  |
-  | \u0431\u044b\u0442\u044c  \u0431\u044b  \u0431\u0443\u0434  \u0431\u044b\u0432  \u0435\u0441\u0442\u044c  \u0441\u0443\u0442\u044c
-  | \u0438\u043c\u0435
-  | \u0434\u0435\u043b
-  | \u043c\u043e\u0433   \u043c\u043e\u0436  \u043c\u043e\u0447\u044c
-  | \u0443\u043c\u0435
-  | \u0445\u043e\u0447  \u0445\u043e\u0442
-  | \u0434\u043e\u043b\u0436
-  | \u043c\u043e\u0436\u043d
-  | \u043d\u0443\u0436\u043d
-  | \u043d\u0435\u043b\u044c\u0437\u044f
-

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_th.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_th.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_th.txt
deleted file mode 100644
index 07f0fab..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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
-\u0e44\u0e27\u0e49
-\u0e44\u0e21\u0e48
-\u0e44\u0e1b
-\u0e44\u0e14\u0e49
-\u0e43\u0e2b\u0e49
-\u0e43\u0e19
-\u0e42\u0e14\u0e22
-\u0e41\u0e2b\u0e48\u0e07
-\u0e41\u0e25\u0e49\u0e27
-\u0e41\u0e25\u0e30
-\u0e41\u0e23\u0e01
-\u0e41\u0e1a\u0e1a
-\u0e41\u0e15\u0e48
-\u0e40\u0e2d\u0e07
-\u0e40\u0e2b\u0e47\u0e19
-\u0e40\u0e25\u0e22
-\u0e40\u0e23\u0e34\u0e48\u0e21
-\u0e40\u0e23\u0e32
-\u0e40\u0e21\u0e37\u0e48\u0e2d
-\u0e40\u0e1e\u0e37\u0e48\u0e2d
-\u0e40\u0e1e\u0e23\u0e32\u0e30
-\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23
-\u0e40\u0e1b\u0e47\u0e19
-\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22
-\u0e40\u0e1b\u0e34\u0e14
-\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01
-\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19
-\u0e40\u0e14\u0e35\u0e22\u0e27
-\u0e40\u0e0a\u0e48\u0e19
-\u0e40\u0e09\u0e1e\u0e32\u0e30
-\u0e40\u0e04\u0e22
-\u0e40\u0e02\u0e49\u0e32
-\u0e40\u0e02\u0e32
-\u0e2d\u0e35\u0e01
-\u0e2d\u0e32\u0e08
-\u0e2d\u0e30\u0e44\u0e23
-\u0e2d\u0e2d\u0e01
-\u0e2d\u0e22\u0e48\u0e32\u0e07
-\u0e2d\u0e22\u0e39\u0e48
-\u0e2d\u0e22\u0e32\u0e01
-\u0e2b\u0e32\u0e01
-\u0e2b\u0e25\u0e32\u0e22
-\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01
-\u0e2b\u0e25\u0e31\u0e07
-\u0e2b\u0e23\u0e37\u0e2d
-\u0e2b\u0e19\u0e36\u0e48\u0e07
-\u0e2a\u0e48\u0e27\u0e19
-\u0e2a\u0e48\u0e07
-\u0e2a\u0e38\u0e14
-\u0e2a\u0e4d\u0e32\u0e2b\u0e23\u0e31\u0e1a
-\u0e27\u0e48\u0e32
-\u0e27\u0e31\u0e19
-\u0e25\u0e07
-\u0e23\u0e48\u0e27\u0e21
-\u0e23\u0e32\u0e22
-\u0e23\u0e31\u0e1a
-\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07
-\u0e23\u0e27\u0e21
-\u0e22\u0e31\u0e07
-\u0e21\u0e35
-\u0e21\u0e32\u0e01
-\u0e21\u0e32
-\u0e1e\u0e23\u0e49\u0e2d\u0e21
-\u0e1e\u0e1a
-\u0e1c\u0e48\u0e32\u0e19
-\u0e1c\u0e25
-\u0e1a\u0e32\u0e07
-\u0e19\u0e48\u0e32
-\u0e19\u0e35\u0e49
-\u0e19\u0e4d\u0e32
-\u0e19\u0e31\u0e49\u0e19
-\u0e19\u0e31\u0e01
-\u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01
-\u0e17\u0e38\u0e01
-\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14
-\u0e17\u0e35\u0e48
-\u0e17\u0e4d\u0e32\u0e43\u0e2b\u0e49
-\u0e17\u0e4d\u0e32
-\u0e17\u0e32\u0e07
-\u0e17\u0e31\u0e49\u0e07\u0e19\u0e35\u0e49
-\u0e17\u0e31\u0e49\u0e07
-\u0e16\u0e49\u0e32
-\u0e16\u0e39\u0e01
-\u0e16\u0e36\u0e07
-\u0e15\u0e49\u0e2d\u0e07
-\u0e15\u0e48\u0e32\u0e07\u0e46
-\u0e15\u0e48\u0e32\u0e07
-\u0e15\u0e48\u0e2d
-\u0e15\u0e32\u0e21
-\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48
-\u0e15\u0e31\u0e49\u0e07
-\u0e14\u0e49\u0e32\u0e19
-\u0e14\u0e49\u0e27\u0e22
-\u0e14\u0e31\u0e07
-\u0e0b\u0e36\u0e48\u0e07
-\u0e0a\u0e48\u0e27\u0e07
-\u0e08\u0e36\u0e07
-\u0e08\u0e32\u0e01
-\u0e08\u0e31\u0e14
-\u0e08\u0e30
-\u0e04\u0e37\u0e2d
-\u0e04\u0e27\u0e32\u0e21
-\u0e04\u0e23\u0e31\u0e49\u0e07
-\u0e04\u0e07
-\u0e02\u0e36\u0e49\u0e19
-\u0e02\u0e2d\u0e07
-\u0e02\u0e2d
-\u0e02\u0e13\u0e30
-\u0e01\u0e48\u0e2d\u0e19
-\u0e01\u0e47
-\u0e01\u0e32\u0e23
-\u0e01\u0e31\u0e1a
-\u0e01\u0e31\u0e19
-\u0e01\u0e27\u0e48\u0e32
-\u0e01\u0e25\u0e48\u0e32\u0e27

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_tr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_tr.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/stopwords_tr.txt
deleted file mode 100644
index 84d9408..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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\u0131\u015f
-alt\u0131
-ama
-ancak
-arada
-asl\u0131nda
-ayr\u0131ca
-bana
-baz\u0131
-belki
-ben
-benden
-beni
-benim
-beri
-be\u015f
-bile
-bin
-bir
-bir�ok
-biri
-birka�
-birkez
-bir\u015fey
-bir\u015feyi
-biz
-bize
-bizden
-bizi
-bizim
-b�yle
-b�ylece
-bu
-buna
-bunda
-bundan
-bunlar
-bunlar\u0131
-bunlar\u0131n
-bunu
-bunun
-burada
-�ok
-��nk�
-da
-daha
-dahi
-de
-defa
-de\u011fil
-di\u011fer
-diye
-doksan
-dokuz
-dolay\u0131
-dolay\u0131s\u0131yla
-d�rt
-edecek
-eden
-ederek
-edilecek
-ediliyor
-edilmesi
-ediyor
-e\u011fer
-elli
-en
-etmesi
-etti
-etti\u011fi
-etti\u011fini
-gibi
-g�re
-halen
-hangi
-hatta
-hem
-hen�z
-hep
-hepsi
-her
-herhangi
-herkesin
-hi�
-hi�bir
-i�in
-iki
-ile
-ilgili
-ise
-i\u015fte
-itibaren
-itibariyle
-kadar
-kar\u015f\u0131n
-katrilyon
-kendi
-kendilerine
-kendini
-kendisi
-kendisine
-kendisini
-kez
-ki
-kim
-kimden
-kime
-kimi
-kimse
-k\u0131rk
-milyar
-milyon
-mu
-m�
-m\u0131
-nas\u0131l
-ne
-neden
-nedenle
-nerde
-nerede
-nereye
-niye
-ni�in
-o
-olan
-olarak
-oldu
-oldu\u011fu
-oldu\u011funu
-olduklar\u0131n\u0131
-olmad\u0131
-olmad\u0131\u011f\u0131
-olmak
-olmas\u0131
-olmayan
-olmaz
-olsa
-olsun
-olup
-olur
-olursa
-oluyor
-on
-ona
-ondan
-onlar
-onlardan
-onlar\u0131
-onlar\u0131n
-onu
-onun
-otuz
-oysa
-�yle
-pek
-ra\u011fmen
-sadece
-sanki
-sekiz
-seksen
-sen
-senden
-seni
-senin
-siz
-sizden
-sizi
-sizin
-\u015fey
-\u015feyden
-\u015feyi
-\u015feyler
-\u015f�yle
-\u015fu
-\u015funa
-\u015funda
-\u015fundan
-\u015funlar\u0131
-\u015funu
-taraf\u0131ndan
-trilyon
-t�m
-��
-�zere
-var
-vard\u0131
-ve
-veya
-ya
-yani
-yapacak
-yap\u0131lan
-yap\u0131lmas\u0131
-yap\u0131yor
-yapmak
-yapt\u0131
-yapt\u0131\u011f\u0131
-yapt\u0131\u011f\u0131n\u0131
-yapt\u0131klar\u0131
-yedi
-yerine
-yetmi\u015f
-yine
-yirmi
-yoksa
-y�z
-zaten

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/userdict_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/userdict_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/lang/userdict_ja.txt
deleted file mode 100644
index 6f0368e..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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
-\u65e5\u672c\u7d4c\u6e08\u65b0\u805e,\u65e5\u672c \u7d4c\u6e08 \u65b0\u805e,\u30cb\u30db\u30f3 \u30b1\u30a4\u30b6\u30a4 \u30b7\u30f3\u30d6\u30f3,\u30ab\u30b9\u30bf\u30e0\u540d\u8a5e
-\u95a2\u897f\u56fd\u969b\u7a7a\u6e2f,\u95a2\u897f \u56fd\u969b \u7a7a\u6e2f,\u30ab\u30f3\u30b5\u30a4 \u30b3\u30af\u30b5\u30a4 \u30af\u30a6\u30b3\u30a6,\u30ab\u30b9\u30bf\u30e0\u540d\u8a5e
-
-# Custom segmentation for compound katakana
-\u30c8\u30fc\u30c8\u30d0\u30c3\u30b0,\u30c8\u30fc\u30c8 \u30d0\u30c3\u30b0,\u30c8\u30fc\u30c8 \u30d0\u30c3\u30b0,\u304b\u305a\u30ab\u30ca\u540d\u8a5e
-\u30b7\u30e7\u30eb\u30c0\u30fc\u30d0\u30c3\u30b0,\u30b7\u30e7\u30eb\u30c0\u30fc \u30d0\u30c3\u30b0,\u30b7\u30e7\u30eb\u30c0\u30fc \u30d0\u30c3\u30b0,\u304b\u305a\u30ab\u30ca\u540d\u8a5e
-
-# Custom reading for former sumo wrestler
-\u671d\u9752\u9f8d,\u671d\u9752\u9f8d,\u30a2\u30b5\u30b7\u30e7\u30a6\u30ea\u30e5\u30a6,\u30ab\u30b9\u30bf\u30e0\u4eba\u540d

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/protwords.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/protwords.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/protwords.txt
deleted file mode 100644
index 1dfc0ab..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/schema.xml b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/schema.xml
deleted file mode 100644
index aed9f44..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/schema.xml
+++ /dev/null
@@ -1,893 +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.
--->
-
-<!--  
- This is the Solr schema file. This file should be named "schema.xml" and
- should be in the conf directory under the solr home
- (i.e. ./solr/conf/schema.xml by default) 
- or located where the classloader for the Solr webapp can find it.
-
- This example schema is the recommended starting point for users.
- It should be kept correct and concise, usable out-of-the-box.
-
- For more information, on how to customize this file, please see
- http://wiki.apache.org/solr/SchemaXml
-
- PERFORMANCE NOTE: this schema includes many optional features and should not
- be used for benchmarking.  To improve performance one could
-  - set stored="false" for all fields possible (esp large fields) when you
-    only need to search on the field but don't need to return the original
-    value.
-  - set indexed="false" if you don't need to search on the field, but only
-    return the field as a result of searching on other indexed fields.
-  - remove all unneeded copyField statements
-  - for best index size and searching performance, set "index" to false
-    for all general text fields, use copyField to copy them to the
-    catchall "text" field, and use that for searching.
-  - For maximum indexing performance, use the ConcurrentUpdateSolrServer
-    java client.
-  - Remember to run the JVM in server mode, and use a higher logging level
-    that avoids logging every request
--->
-
-<schema name="example" version="1.6">
-  <!-- attribute "name" is the name of this schema and is only used for display purposes.
-       version="x.y" is Solr's version number for the schema syntax and 
-       semantics.  It should not normally be changed by applications.
-
-       1.0: multiValued attribute did not exist, all fields are multiValued 
-            by nature
-       1.1: multiValued attribute introduced, false by default 
-       1.2: omitTermFreqAndPositions attribute introduced, true by default 
-            except for text fields.
-       1.3: removed optional field compress feature
-       1.4: autoGeneratePhraseQueries attribute introduced to drive QueryParser
-            behavior when a single string produces multiple tokens.  Defaults 
-            to off for version >= 1.4
-       1.5: omitNorms defaults to true for primitive field types 
-            (int, float, boolean, string...)
-       1.6: useDocValuesAsStored defaults to true.
-     -->
-
-
-  <!-- Valid attributes for fields:
-    name: mandatory - the name for the field
-    type: mandatory - the name of a field type from the 
-      fieldTypes
-    indexed: true if this field should be indexed (searchable or sortable)
-    stored: true if this field should be retrievable
-    multiValued: true if this field may contain multiple values per document
-    omitNorms: (expert) set to true to omit the norms associated with
-      this field (this disables length normalization and index-time
-      boosting for the field, and saves some memory).  Only full-text
-      fields or fields that need an index-time boost need norms.
-      Norms are omitted for primitive (non-analyzed) types by default.
-    termVectors: [false] set to true to store the term vector for a
-      given field.
-      When using MoreLikeThis, fields used for similarity should be
-      stored for best performance.
-    termPositions: Store position information with the term vector.  
-      This will increase storage costs.
-    termOffsets: Store offset information with the term vector. This 
-      will increase storage costs.
-    required: The field is required.  It will throw an error if the
-      value does not exist
-    default: a value that should be used if no value is specified
-      when adding a document.
-  -->
-
-  <!-- field names should consist of alphanumeric or underscore characters only and
-     not start with a digit.  This is not currently strictly enforced,
-     but other field names will not have first class support from all components
-     and back compatibility is not guaranteed.  Names with both leading and
-     trailing underscores (e.g. _version_) are reserved.
-  -->
-
-  <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
-  <field name="username" type="text_en" indexed="true" stored="true"/>
-  <field name="created_at" type="tdate" indexed="true" stored="true"/>
-  <field name="text" type="text_en" indexed="true" stored="true"/>
-
-  <field name="_version_" type="long" indexed="true" stored="true"/>
-  <dynamicField name="ignored_*" type="ignored"/>
-
-
-  <!-- Field to use to determine and enforce document uniqueness. 
-       Unless this field is marked with required="false", it will be a required field
-    -->
-  <uniqueKey>id</uniqueKey>
-
-  <!-- DEPRECATED: The defaultSearchField is consulted by various query parsers when
-   parsing a query string that isn't explicit about the field.  Machine (non-user)
-   generated queries are best made explicit, or they can use the "df" request parameter
-   which takes precedence over this.
-   Note: Un-commenting defaultSearchField will be insufficient if your request handler
-   in solrconfig.xml defines "df", which takes precedence. That would need to be removed.
-  <defaultSearchField>text</defaultSearchField> -->
-
-  <!-- DEPRECATED: The defaultOperator (AND|OR) is consulted by various query parsers
-   when parsing a query string to determine if a clause of the query should be marked as
-   required or optional, assuming the clause isn't already marked by some operator.
-   The default is OR, which is generally assumed so it is not a good idea to change it
-   globally here.  The "q.op" request parameter takes precedence over this.
-  <solrQueryParser defaultOperator="OR"/> -->
-
-  <!-- copyField commands copy one field to another at the time a document
-        is added to the index.  It's used either to index the same field differently,
-        or to add multiple fields to the same field for easier/faster searching.  -->
-
-
-  <!-- field type definitions. The "name" attribute is
-     just a label to be used by field definitions.  The "class"
-     attribute and any other attributes determine the real
-     behavior of the fieldType.
-       Class names starting with "solr" refer to java classes in a
-     standard package such as org.apache.solr.analysis
-  -->
-
-  <!-- The StrField type is not analyzed, but indexed/stored verbatim. -->
-  <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
-
-  <!-- boolean type: "true" or "false" -->
-  <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
-
-  <!-- sortMissingLast and sortMissingFirst attributes are optional attributes are
-       currently supported on types that are sorted internally as strings
-       and on numeric types.
-     This includes "string","boolean", and, as of 3.5 (and 4.x),
-     int, float, long, date, double, including the "Trie" variants.
-     - If sortMissingLast="true", then a sort on this field will cause documents
-       without the field to come after documents with the field,
-       regardless of the requested sort order (asc or desc).
-     - If sortMissingFirst="true", then a sort on this field will cause documents
-       without the field to come before documents with the field,
-       regardless of the requested sort order.
-     - If sortMissingLast="false" and sortMissingFirst="false" (the default),
-       then default lucene sorting will be used which places docs without the
-       field first in an ascending sort and last in a descending sort.
-  -->
-
-  <!--
-    Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
-  -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!--
-   Numeric field types that index each value at various levels of precision
-   to accelerate range queries when the number of values between the range
-   endpoints is large. See the javadoc for LegacyNumericRangeQuery for internal
-   implementation details.
-
-   Smaller precisionStep values (specified in bits) will lead to more tokens
-   indexed per value, slightly larger index size, and faster range queries.
-   A precisionStep of 0 disables indexing at different precision levels.
-  -->
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
-
-  <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
-       is a more restricted form of the canonical representation of dateTime
-       http://www.w3.org/TR/xmlschema-2/#dateTime    
-       The trailing "Z" designates UTC time and is mandatory.
-       Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
-       All other components are mandatory.
-
-       Expressions can also be used to denote calculations that should be
-       performed relative to "NOW" to determine the value, ie...
-
-             NOW/HOUR
-                ... Round to the start of the current hour
-             NOW-1DAY
-                ... Exactly 1 day prior to now
-             NOW/DAY+6MONTHS+3DAYS
-                ... 6 months and 3 days in the future from the start of
-                    the current day
-                    
-       Consult the TrieDateField javadocs for more information.
-
-       Note: For faster range queries, consider the tdate type
-    -->
-  <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!-- A Trie based date field for faster date range queries and date faceting. -->
-  <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
-
-
-  <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
-  <fieldType name="binary" class="solr.BinaryField"/>
-
-  <!-- The "RandomSortField" is not used to store or search any
-       data.  You can declare fields of this type it in your schema
-       to generate pseudo-random orderings of your docs for sorting 
-       or function purposes.  The ordering is generated based on the field
-       name and the version of the index. As long as the index version
-       remains unchanged, and the same field name is reused,
-       the ordering of the docs will be consistent.  
-       If you want different psuedo-random orderings of documents,
-       for the same version of the index, use a dynamicField and
-       change the field name in the request.
-   -->
-  <fieldType name="random" class="solr.RandomSortField" indexed="true"/>
-
-  <!-- solr.TextField allows the specification of custom text analyzers
-       specified as a tokenizer and a list of token filters. Different
-       analyzers may be specified for indexing and querying.
-
-       The optional positionIncrementGap puts space between multiple fields of
-       this type on the same document, with the purpose of preventing false phrase
-       matching across fields.
-
-       For more info on customizing your analyzer chain, please see
-       http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
-   -->
-
-  <!-- One can also specify an existing Analyzer class that has a
-       default constructor via the class attribute on the analyzer element.
-       Example:
-  <fieldType name="text_greek" class="solr.TextField">
-    <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
-  </fieldType>
-  -->
-
-  <!-- A text field that only splits on whitespace for exact matching of words -->
-  <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A general text field that has reasonable, generic
-       cross-language defaults: it tokenizes with StandardTokenizer,
- removes stop words from case-insensitive "stopwords.txt"
- (empty by default), and down cases.  At query time only, it
- also applies synonyms. -->
-  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A text field with defaults appropriate for English: it
-       tokenizes with StandardTokenizer, removes English stop words
-       (lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
-       finally applies Porter's stemming.  The query time analyzer
-       also applies synonyms from synonyms.txt. -->
-  <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <!-- Case insensitive stop word removal. -->
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.EnglishPossessiveFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
-            <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      -->
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.EnglishPossessiveFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
-            <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      -->
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A text field with defaults appropriate for English, plus
- aggressive word-splitting and autophrase features enabled.
- This field is just like text_en, except it adds
- WordDelimiterFilter to enable splitting and matching of
- words on case-change, alpha numeric boundaries, and
- non-alphanumeric chars.  This means certain compound word
- cases will work, for example query "wi fi" will match
- document "WiFi" or "wi-fi".
-      -->
-  <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100"
-             autoGeneratePhraseQueries="true">
-    <analyzer type="index">
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <!-- Case insensitive stop word removal. -->
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
-              catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
-              catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
-       but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
-  <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100"
-             autoGeneratePhraseQueries="true">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
-              catenateNumbers="1" catenateAll="0"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-           possible with WordDelimiterFilter in conjuncton with stemming. -->
-      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Just like text_general except it reverses the characters of
- each token, to enable more efficient leading wildcard queries. -->
-  <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
-              maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- charFilter + WhitespaceTokenizer  -->
-  <!--
-  <fieldType name="text_char_norm" class="solr.TextField" positionIncrementGap="100" >
-    <analyzer>
-      <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-  -->
-
-  <!-- This is an example of using the KeywordTokenizer along
-       With various TokenFilterFactories to produce a sortable field
-       that does not include some properties of the source text
-    -->
-  <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
-    <analyzer>
-      <!-- KeywordTokenizer does no actual tokenizing, so the entire
-           input string is preserved as a single token
-        -->
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-      <!-- The LowerCase TokenFilter does what you expect, which can be
-           when you want your sorting to be case insensitive
-        -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <!-- The TrimFilter removes any leading or trailing whitespace -->
-      <filter class="solr.TrimFilterFactory"/>
-      <!-- The PatternReplaceFilter gives you the flexibility to use
-           Java Regular expression to replace any sequence of characters
-           matching a pattern with an arbitrary replacement string, 
-           which may include back references to portions of the original
-           string matched by the pattern.
-           
-           See the Java Regular Expression documentation for more
-           information on pattern and replacement string syntax.
-           
-           http://java.sun.com/j2se/1.6.0/docs/api/java/util/regex/package-summary.html
-        -->
-      <filter class="solr.PatternReplaceFilterFactory"
-              pattern="([^a-z])" replacement="" replace="all"
-      />
-    </analyzer>
-  </fieldType>
-
-  <!--    
-  <fieldType name="phonetic" stored="false" indexed="true" class="solr.TextField" >
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
-    </analyzer>
-  </fieldType>
-  -->
-
-  <fieldType name="payloads" stored="false" indexed="true" class="solr.TextField">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <!--
-      The DelimitedPayloadTokenFilter can put payloads on tokens... for example,
-      a token of "foo|1.4"  would be indexed as "foo" with a payload of 1.4f
-      Attributes of the DelimitedPayloadTokenFilterFactory : 
-       "delimiter" - a one character delimiter. Default is | (pipe)
- "encoder" - how to encode the following value into a playload
-    float -> org.apache.lucene.analysis.payloads.FloatEncoder,
-    integer -> o.a.l.a.p.IntegerEncoder
-    identity -> o.a.l.a.p.IdentityEncoder
-          Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor.
-       -->
-      <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- lowercases the entire field value, keeping it as a single token.  -->
-  <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- 
-    Example of using PathHierarchyTokenizerFactory at index time, so
-    queries for paths match documents at that path, or in descendent paths
-  -->
-  <fieldType name="descendent_path" class="solr.TextField">
-    <analyzer type="index">
-      <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-  <!-- 
-    Example of using PathHierarchyTokenizerFactory at query time, so
-    queries for paths match documents at that path, or in ancestor paths
-  -->
-  <fieldType name="ancestor_path" class="solr.TextField">
-    <analyzer type="index">
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- since fields of this type are by default not stored or indexed,
-       any data added to them will be ignored outright.  -->
-  <fieldType name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField"/>
-
-  <!-- This point type indexes the coordinates as separate fields (subFields)
-    If subFieldType is defined, it references a type, and a dynamic field
-    definition is created matching *___<typename>.  Alternately, if 
-    subFieldSuffix is defined, that is used to create the subFields.
-    Example: if subFieldType="double", then the coordinates would be
-      indexed in fields myloc_0___double,myloc_1___double.
-    Example: if subFieldSuffix="_d" then the coordinates would be indexed
-      in fields myloc_0_d,myloc_1_d
-    The subFields are an implementation detail of the fieldType, and end
-    users normally should not need to know about them.
-   -->
-  <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
-
-  <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
-  <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
-
-  <!--
-   A Geohash is a compact representation of a latitude longitude pair in a single field.
-   See http://wiki.apache.org/solr/SpatialSearch
-  -->
-  <fieldType name="geohash" class="solr.GeoHashField"/>
-
-  <!-- Money/currency field type. See http://wiki.apache.org/solr/MoneyFieldType
-       Parameters:
-         defaultCurrency: Specifies the default currency if none specified. Defaults to "USD"
-         precisionStep:   Specifies the precisionStep for the TrieLong field used for the amount
-         providerClass:   Lets you plug in other exchange provider backend:
-                          solr.FileExchangeRateProvider is the default and takes one parameter:
-                            currencyConfig: name of an xml file holding exhange rates
-                          solr.OpenExchangeRatesOrgProvider uses rates from openexchangerates.org:
-                            ratesFileLocation: URL or path to rates JSON file (default latest.json on the web)
-                            refreshInterval: Number of minutes between each rates fetch (default: 1440, min: 60)
-  -->
-  <fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD"
-             currencyConfig="currency.xml"/>
-
-
-  <!-- some examples for different languages (generally ordered by ISO code) -->
-
-  <!-- Arabic -->
-  <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- for any non-arabic -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt"/>
-      <!-- normalizes \ufeef to \ufef1, etc -->
-      <filter class="solr.ArabicNormalizationFilterFactory"/>
-      <filter class="solr.ArabicStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Bulgarian -->
-  <fieldType name="text_bg" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_bg.txt"/>
-      <filter class="solr.BulgarianStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Catalan -->
-  <fieldType name="text_ca" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ca.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ca.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Catalan"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- CJK bigram (see text_ja for a Japanese configuration using morphological analysis) -->
-  <fieldType name="text_cjk" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- normalize width before bigram, as e.g. half-width dakuten combine  -->
-      <filter class="solr.CJKWidthFilterFactory"/>
-      <!-- for any non-CJK -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.CJKBigramFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Czech -->
-  <fieldType name="text_cz" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_cz.txt"/>
-      <filter class="solr.CzechStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Danish -->
-  <fieldType name="text_da" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_da.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Danish"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- German -->
-  <fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" format="snowball"/>
-      <filter class="solr.GermanNormalizationFilterFactory"/>
-      <filter class="solr.GermanLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.GermanMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="German2"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Greek -->
-  <fieldType name="text_el" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- greek specific lowercase for sigma -->
-      <filter class="solr.GreekLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_el.txt"/>
-      <filter class="solr.GreekStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Spanish -->
-  <fieldType name="text_es" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_es.txt" format="snowball"/>
-      <filter class="solr.SpanishLightStemFilterFactory"/>
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Spanish"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Basque -->
-  <fieldType name="text_eu" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_eu.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Basque"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Persian -->
-  <fieldType name="text_fa" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <!-- for ZWNJ -->
-      <charFilter class="solr.PersianCharFilterFactory"/>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.ArabicNormalizationFilterFactory"/>
-      <filter class="solr.PersianNormalizationFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fa.txt"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Finnish -->
-  <fieldType name="text_fi" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fi.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Finnish"/>
-      <!-- less aggressive: <filter class="solr.FinnishLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- French -->
-  <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_fr.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fr.txt" format="snowball"/>
-      <filter class="solr.FrenchLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.FrenchMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="French"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Irish -->
-  <fieldType name="text_ga" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes d', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ga.txt"/>
-      <!-- removes n-, etc. position increments is intentionally false! -->
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/hyphenations_ga.txt"/>
-      <filter class="solr.IrishLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ga.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Irish"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Galician -->
-  <fieldType name="text_gl" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_gl.txt"/>
-      <filter class="solr.GalicianStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.GalicianMinimalStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Hindi -->
-  <fieldType name="text_hi" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <!-- normalizes unicode representation -->
-      <filter class="solr.IndicNormalizationFilterFactory"/>
-      <!-- normalizes variation in spelling -->
-      <filter class="solr.HindiNormalizationFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hi.txt"/>
-      <filter class="solr.HindiStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Hungarian -->
-  <fieldType name="text_hu" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hu.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Hungarian"/>
-      <!-- less aggressive: <filter class="solr.HungarianLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Armenian -->
-  <fieldType name="text_hy" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hy.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Armenian"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Indonesian -->
-  <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_id.txt"/>
-      <!-- for a less aggressive approach (only inflectional suffixes), set stemDerivational to false -->
-      <filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Italian -->
-  <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_it.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_it.txt" format="snowball"/>
-      <filter class="solr.ItalianLightStemFilterFactory"/>
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Italian"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Latvian -->
-  <fieldType name="text_lv" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_lv.txt"/>
-      <filter class="solr.LatvianStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Dutch -->
-  <fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_nl.txt" format="snowball"/>
-      <filter class="solr.StemmerOverrideFilterFactory" dictionary="lang/stemdict_nl.txt" ignoreCase="false"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Dutch"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Norwegian -->
-  <fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Norwegian"/>
-      <!-- less aggressive: <filter class="solr.NorwegianLightStemFilterFactory"/> -->
-      <!-- singular/plural: <filter class="solr.NorwegianMinimalStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Portuguese -->
-  <fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" format="snowball"/>
-      <filter class="solr.PortugueseLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.PortugueseMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Portuguese"/> -->
-      <!-- most aggressive: <filter class="solr.PortugueseStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Romanian -->
-  <fieldType name="text_ro" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ro.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Romanian"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Russian -->
-  <fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ru.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Russian"/>
-      <!-- less aggressive: <filter class="solr.RussianLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Swedish -->
-  <fieldType name="text_sv" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_sv.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Swedish"/>
-      <!-- less aggressive: <filter class="solr.SwedishLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Thai -->
-  <fieldType name="text_th" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.ThaiTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_th.txt"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Turkish -->
-  <fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.TurkishLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_tr.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Turkish"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Similarity is the scoring routine for each document vs. a query.
-       A custom Similarity or SimilarityFactory may be specified here, but 
-       the default is fine for most applications.  
-       For more info: http://wiki.apache.org/solr/SchemaXml#Similarity
-    -->
-  <!--
-     <similarity class="com.example.solr.CustomSimilarityFactory">
-       <str name="paramkey">param value</str>
-     </similarity>
-    -->
-
-</schema>


[42/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10371: There is some spelling mistakes in the Java source code Thanks hu xiaodong"

Posted by cp...@apache.org.
SOLR-10371: There is some spelling mistakes in the Java source code Thanks hu xiaodong"


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

Branch: refs/heads/jira/solr-6203
Commit: bd01064f69c2eeb1f7a710e0fcf8e57b8da3150f
Parents: e11c86f
Author: Erick Erickson <er...@apache.org>
Authored: Mon Mar 27 09:31:15 2017 -0700
Committer: Erick Erickson <er...@apache.org>
Committed: Mon Mar 27 09:31:15 2017 -0700

----------------------------------------------------------------------
 .../org/apache/lucene/search/suggest/FileDictionary.java  |  8 ++++----
 .../lucene/search/suggest/document/SuggestField.java      |  2 +-
 .../org/apache/solr/analytics/request/AnalyticsStats.java |  2 +-
 .../apache/solr/handler/dataimport/XPathRecordReader.java | 10 +++++-----
 .../org/apache/solr/internal/csv/writer/CSVConfig.java    |  2 +-
 .../apache/solr/internal/csv/writer/CSVConfigGuesser.java |  8 ++++----
 .../test/org/apache/solr/cloud/TestRandomFlRTGCloud.java  |  4 ++--
 .../java/org/apache/solr/common/cloud/ZkStateReader.java  |  2 +-
 .../org/apache/solr/common/util/JsonRecordReader.java     |  2 +-
 .../src/java/org/apache/solr/common/util/StrUtils.java    |  2 +-
 10 files changed, 21 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd01064f/lucene/suggest/src/java/org/apache/lucene/search/suggest/FileDictionary.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/FileDictionary.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/FileDictionary.java
index 7d49518..b0660a9 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/FileDictionary.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/FileDictionary.java
@@ -67,7 +67,7 @@ public class FileDictionary implements Dictionary {
   /**
    * Creates a dictionary based on an inputstream.
    * Using {@link #DEFAULT_FIELD_DELIMITER} as the 
-   * field seperator in a line.
+   * field separator in a line.
    * <p>
    * NOTE: content is treated as UTF-8
    */
@@ -78,7 +78,7 @@ public class FileDictionary implements Dictionary {
   /**
    * Creates a dictionary based on a reader.
    * Using {@link #DEFAULT_FIELD_DELIMITER} as the 
-   * field seperator in a line.
+   * field separator in a line.
    */
   public FileDictionary(Reader reader) {
     this(reader, DEFAULT_FIELD_DELIMITER);
@@ -86,7 +86,7 @@ public class FileDictionary implements Dictionary {
   
   /**
    * Creates a dictionary based on a reader. 
-   * Using <code>fieldDelimiter</code> to seperate out the
+   * Using <code>fieldDelimiter</code> to separate out the
    * fields in a line.
    */
   public FileDictionary(Reader reader, String fieldDelimiter) {
@@ -96,7 +96,7 @@ public class FileDictionary implements Dictionary {
   
   /**
    * Creates a dictionary based on an inputstream.
-   * Using <code>fieldDelimiter</code> to seperate out the
+   * Using <code>fieldDelimiter</code> to separate out the
    * fields in a line.
    * <p>
    * NOTE: content is treated as UTF-8

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd01064f/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/SuggestField.java
----------------------------------------------------------------------
diff --git a/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/SuggestField.java b/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/SuggestField.java
index e5bdda9..7f06328 100644
--- a/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/SuggestField.java
+++ b/lucene/suggest/src/java/org/apache/lucene/search/suggest/document/SuggestField.java
@@ -38,7 +38,7 @@ import org.apache.lucene.util.BytesRef;
  * Besides the usual {@link org.apache.lucene.analysis.Analyzer}s,
  * {@link CompletionAnalyzer}
  * can be used to tune suggest field only parameters
- * (e.g. preserving token seperators, preserving position increments
+ * (e.g. preserving token separators, preserving position increments
  * when converting the token stream to an automaton)
  * </p>
  * <p>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd01064f/solr/contrib/analytics/src/java/org/apache/solr/analytics/request/AnalyticsStats.java
----------------------------------------------------------------------
diff --git a/solr/contrib/analytics/src/java/org/apache/solr/analytics/request/AnalyticsStats.java b/solr/contrib/analytics/src/java/org/apache/solr/analytics/request/AnalyticsStats.java
index a9cdef9..771aff7 100644
--- a/solr/contrib/analytics/src/java/org/apache/solr/analytics/request/AnalyticsStats.java
+++ b/solr/contrib/analytics/src/java/org/apache/solr/analytics/request/AnalyticsStats.java
@@ -76,7 +76,7 @@ public class AnalyticsStats {
     // Get filter to all docs
     Filter filter = docs.getTopFilter();
     
-    // Computing each Analytics Request Seperately
+    // Computing each Analytics Request Separately
     for( AnalyticsRequest areq : requests ){
       // The Accumulator which will control the statistics generation
       // for the entire analytics request

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd01064f/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/XPathRecordReader.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/XPathRecordReader.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/XPathRecordReader.java
index 69c6c57..311215c 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/XPathRecordReader.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/XPathRecordReader.java
@@ -145,7 +145,7 @@ public class XPathRecordReader {
     if (!xpath.startsWith("/"))
       throw new RuntimeException("xpath must start with '/' : " + xpath);
     List<String> paths = splitEscapeQuote(xpath);
-    // deal with how split behaves when seperator starts a string!
+    // deal with how split behaves when separator starts a string!
     if ("".equals(paths.get(0).trim()))
       paths.remove(0);
     rootNode.build(paths, name, multiValued, isRecord, flags);
@@ -600,19 +600,19 @@ public class XPathRecordReader {
 
 
   /**
-   * The Xpath is split into segments using the '/' as a seperator. However
+   * The Xpath is split into segments using the '/' as a separator. However
    * this method deals with special cases where there is a slash '/' character
    * inside the attribute value e.g. x/@html='text/html'. We split by '/' but 
    * then reassemble things were the '/' appears within a quoted sub-string.
    *
-   * We have already enforced that the string must begin with a seperator. This
+   * We have already enforced that the string must begin with a separator. This
    * method depends heavily on how split behaves if the string starts with the
-   * seperator or if a sequence of multiple seperator's appear. 
+   * separator or if a sequence of multiple separator's appear. 
    */
   private static List<String> splitEscapeQuote(String str) {
     List<String> result = new LinkedList<>();
     String[] ss = str.split("/");
-    for (int i=0; i<ss.length; i++) { // i=1: skip seperator at start of string
+    for (int i=0; i<ss.length; i++) { // i=1: skip separator at start of string
       StringBuilder sb = new StringBuilder();
       int quoteCount = 0;
       while (true) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd01064f/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfig.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfig.java b/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfig.java
index 354bd3c..cc802b8 100644
--- a/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfig.java
+++ b/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfig.java
@@ -44,7 +44,7 @@ public class CSVConfig {
     private int fill;
     /** The fill char. Defaults to a space */
     private char fillChar = ' ';
-    /** The seperator character. Defaults to , */
+    /** The separator character. Defaults to , */
     private char delimiter = ',';
     /** Should we ignore the delimiter. Defaults to false */
     private boolean ignoreDelimiter = false;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd01064f/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfigGuesser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfigGuesser.java b/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfigGuesser.java
index 26c8e3f..d0577ff 100644
--- a/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfigGuesser.java
+++ b/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfigGuesser.java
@@ -107,7 +107,7 @@ public class CSVConfigGuesser {
     
     protected void analyseLines(String[] lines) {
         guessFixedWidth(lines);
-        guessFieldSeperator(lines);
+        guessFieldSeparator(lines);
     }
     
     /**
@@ -130,16 +130,16 @@ public class CSVConfigGuesser {
     }
         
 
-    protected void guessFieldSeperator(String[] lines) {
+    protected void guessFieldSeparator(String[] lines) {
         if (config.isFixedWidth()) {
-            guessFixedWidthSeperator(lines);
+            guessFixedWidthSeparator(lines);
             return;
         }
         for (int i = 0; i < lines.length; i++) {
         }
     }
     
-    protected void guessFixedWidthSeperator(String[] lines) {
+    protected void guessFixedWidthSeparator(String[] lines) {
         // keep track of the fieldlength
         int previousMatch = -1;
         for (int i = 0; i < lines[0].length(); i++) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd01064f/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java b/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java
index 140fd7e..492765a 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java
@@ -384,7 +384,7 @@ public class TestRandomFlRTGCloud extends SolrCloudTestCase {
             params.add("id",id);
           }
         } else {
-          // add one or more comma seperated ids params
+          // add one or more comma separated ids params
           params.add(buildCommaSepParams(random(), "ids", idsToRequest));
         }
       }
@@ -941,7 +941,7 @@ public class TestRandomFlRTGCloud extends SolrCloudTestCase {
   }
 
   /**
-   * Given an ordered list of values to include in a (key) param, randomly groups them (ie: comma seperated) 
+   * Given an ordered list of values to include in a (key) param, randomly groups them (ie: comma separated) 
    * into actual param key=values which are returned as a new SolrParams instance
    */
   private static SolrParams buildCommaSepParams(final Random rand, final String key, Collection<String> values) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd01064f/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
index 51b4b59..80531cb 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
@@ -931,7 +931,7 @@ public class ZkStateReader implements Closeable {
   public static String getBaseUrlForNodeName(final String nodeName, String urlScheme) {
     final int _offset = nodeName.indexOf("_");
     if (_offset < 0) {
-      throw new IllegalArgumentException("nodeName does not contain expected '_' seperator: " + nodeName);
+      throw new IllegalArgumentException("nodeName does not contain expected '_' separator: " + nodeName);
     }
     final String hostAndPort = nodeName.substring(0,_offset);
     try {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd01064f/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java b/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java
index b9766fb..4dafd39 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java
@@ -501,7 +501,7 @@ public class JsonRecordReader {
    * <p>
    * We have already enforced that the string must begin with a separator. This
    * method depends heavily on how split behaves if the string starts with the
-   * seperator or if a sequence of multiple separators appear.
+   * separator or if a sequence of multiple separators appear.
    */
   private static List<String> splitEscapeQuote(String str) {
     List<String> result = new LinkedList<>();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/bd01064f/solr/solrj/src/java/org/apache/solr/common/util/StrUtils.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/StrUtils.java b/solr/solrj/src/java/org/apache/solr/common/util/StrUtils.java
index 7313597..a20c6e2 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/StrUtils.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/StrUtils.java
@@ -297,7 +297,7 @@ public class StrUtils {
 
   /**
    * writes chars from item to out, backslash escaping as needed based on separator -- 
-   * but does not append the seperator itself
+   * but does not append the separator itself
    */
   public static void appendEscapedTextToBuilder(StringBuilder out, 
                                                  String item, 


[12/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/solrconfig.xml b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/solrconfig.xml
deleted file mode 100644
index 05de0b6..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/solrconfig.xml
+++ /dev/null
@@ -1,1426 +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>${tests.luceneMatchVersion:LATEST}</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.
-
-       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.
-    -->
-  <!--
-     <lib dir="../add-everything-found-in-this-dir-to-the-classpath" />
-  -->
-  
-  <!-- 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.
-    -->
-  <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />
-
-  <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />
-
-  <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />
-
-  <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
-  <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />
-
-  <!-- If a 'dir' option (with or without a regex) is used and nothing
-       is found that matches, it will be ignored
-    -->
-  <lib dir="/non/existent/dir/yields/warning" /> 
-
-  <!-- an exact 'path' can be used instead of a 'dir' to specify a 
-       specific 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>/data/3/collection1/data</dataDir>-->
-  <dataDir>${solr.data.dir:}</dataDir>
- 
-
-  <!-- The DirectoryFactory to use for indexes.
-       
-       solr.StandardDirectoryFactory is filesystem
-       based and tries to pick the best implementation for the current
-       JVM and platform.  solr.NRTCachingDirectoryFactory, the default,
-       wraps solr.StandardDirectoryFactory and caches small files in memory
-       for better NRT performance.
-
-       One can force a particular implementation via solr.MMapDirectoryFactory,
-       solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.
-
-       solr.RAMDirectoryFactory is memory based, not
-       persistent, and doesn't work with replication.
-    -->
-  <directoryFactory name="DirectoryFactory" 
-                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
-
-  <schemaFactory class="ClassicIndexSchemaFactory"/>
-
-  <!-- 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>128</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>native</lockType> -->
-
-    <!-- If true, IndexReaders will be reopened (often more efficient)
-         instead of closed and then opened. Default: true
-      -->
-    <!-- 
-    <reopenReaders>true</reopenReaders>
-      -->
-
-    <!-- Commit Deletion Policy
-
-         Custom deletion policies can be specified here. The class must
-         implement org.apache.lucene.index.IndexDeletionPolicy.
-
-         http://lucene.apache.org/java/3_5_0/api/core/org/apache/lucene/index/IndexDeletionPolicy.html
-
-         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 automaticly
-                   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.
-      -->
-     <autoCommit> 
-       <maxTime>${solr.autoCommit.maxTime:60000}</maxTime> 
-       <openSearcher>false</openSearcher> 
-     </autoCommit>
-
-    <!-- softAutoCommit is like autoCommit except it causes a
-         'soft' commit which only ensures that changes are visible
-         but does not ensure that data is synced to disk.  This is
-         faster and more near-realtime friendly than a hard commit.
-      -->
-     
-       <autoSoftCommit> 
-         <maxTime>${solr.autoSoftCommit.maxTime: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
-      -->
-    <!-- The RunExecutableListener executes an external command from a
-         hook such as postCommit or postOptimize.
-         
-         exe - the name of the executable to run
-         dir - dir to use as the current working directory. (default=".")
-         wait - the calling thread waits until the executable returns. 
-                (default="true")
-         args - the arguments to pass to the program.  (default is none)
-         env - environment variables to set.  (default is none)
-      -->
-    <!-- This example shows how RunExecutableListener could be used
-         with the script based replication...
-         http://wiki.apache.org/solr/CollectionDistribution
-      -->
-    <!--
-       <listener event="postCommit" class="solr.RunExecutableListener">
-         <str name="exe">solr/bin/snapshooter</str>
-         <str name="dir">.</str>
-         <bool name="wait">true</bool>
-         <arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
-         <arr name="env"> <str>MYVAR=val1</str> </arr>
-       </listener>
-      -->
-
-
-  </updateHandler>
-  
-  <!-- IndexReaderFactory
-
-       Use the following format to specify a custom IndexReaderFactory,
-       which allows for alternate IndexReader implementations.
-
-       ** Experimental Feature **
-
-       Please note - Using a custom IndexReaderFactory may prevent
-       certain other features from working. The API to
-       IndexReaderFactory may change without warning or may even be
-       removed from future releases if the problems cannot be
-       resolved.
-
-
-       ** Features that may not work with custom IndexReaderFactory **
-
-       The ReplicationHandler assumes a disk-resident index. Using a
-       custom IndexReader implementation may cause incompatibility
-       with ReplicationHandler and may cause replication to not work
-       correctly. See SOLR-1366 for details.
-
-    -->
-  <!--
-  <indexReaderFactory name="IndexReaderFactory" class="package.class">
-    <str name="someArg">Some Value</str>
-  </indexReaderFactory >
-  -->
-  <!-- By explicitly declaring the Factory, the termIndexDivisor can
-       be specified.
-    -->
-  <!--
-     <indexReaderFactory name="IndexReaderFactory" 
-                         class="solr.StandardIndexReaderFactory">
-       <int name="setTermIndexDivisor">12</int>
-     </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>1024</maxBooleanClauses>
-
-
-    <!-- Solr Internal Query Caches
-
-         There are two implementations of cache available for Solr,
-         LRUCache, based on a synchronized LinkedHashMap, and
-         FastLRUCache, based on a ConcurrentHashMap.  
-
-         FastLRUCache has faster gets and slower puts in single
-         threaded operation and thus is generally faster than LRUCache
-         when the hit ratio of the cache is high (> 75%), and may be
-         faster under other scenarios on multi-cpu systems.
-    -->
-
-    <!-- Filter Cache
-
-         Cache used by SolrIndexSearcher for filters (DocSets),
-         unordered sets of *all* documents that match a query.  When a
-         new searcher is opened, its caches may be prepopulated or
-         "autowarmed" using data from caches in the old searcher.
-         autowarmCount is the number of items to prepopulate.  For
-         LRUCache, the autowarmed items will be the most recently
-         accessed items.
-
-         Parameters:
-           class - the SolrCache implementation LRUCache or
-               (LRUCache or FastLRUCache)
-           size - the maximum number of entries in the cache
-           initialSize - the initial capacity (number of entries) of
-               the cache.  (see java.util.HashMap)
-           autowarmCount - the number of entries to prepopulate from
-               and old cache.  
-      -->
-    <filterCache class="solr.FastLRUCache"
-                 size="512"
-                 initialSize="512"
-                 autowarmCount="0"/>
-
-    <!-- Query Result Cache
-         
-         Caches results of searches - ordered lists of document ids
-         (DocList) based on a query, a sort, and the range of documents requested.  
-      -->
-    <queryResultCache class="solr.LRUCache"
-                     size="512"
-                     initialSize="512"
-                     autowarmCount="0"/>
-   
-    <!-- Document Cache
-
-         Caches Lucene Document objects (the stored fields for each
-         document).  Since Lucene internal document ids are transient,
-         this cache will not be autowarmed.  
-      -->
-    <documentCache class="solr.LRUCache"
-                   size="512"
-                   initialSize="512"
-                   autowarmCount="0"/>
-    
-    <!-- Field Value Cache
-         
-         Cache used to hold field values that are quickly accessible
-         by document id.  The fieldValueCache is created by default
-         even if not configured here.
-      -->
-    <!--
-       <fieldValueCache class="solr.FastLRUCache"
-                        size="512"
-                        autowarmCount="128"
-                        showItems="32" />
-      -->
-
-    <!-- Custom Cache
-
-         Example of a generic cache.  These caches may be accessed by
-         name through SolrIndexSearcher.getCache(),cacheLookup(), and
-         cacheInsert().  The purpose is to enable easy caching of
-         user/application level data.  The regenerator argument should
-         be specified as an implementation of solr.CacheRegenerator 
-         if autowarming is desired.  
-      -->
-    <!--
-       <cache name="myUserCache"
-              class="solr.LRUCache"
-              size="4096"
-              initialSize="1024"
-              autowarmCount="1024"
-              regenerator="com.mycompany.MyRegenerator"
-              />
-      -->
-
-
-    <!-- Lazy Field Loading
-
-         If true, stored fields that are not requested will be loaded
-         lazily.  This can result in a significant speed improvement
-         if the usual case is to not load all stored fields,
-         especially if the skipped fields are large compressed text
-         fields.
-    -->
-    <enableLazyFieldLoading>true</enableLazyFieldLoading>
-
-   <!-- Use Filter For Sorted Query
-
-        A possible optimization that attempts to use a filter to
-        satisfy a search.  If the requested sort does not include
-        score, then the filterCache will be checked for a filter
-        matching the query. If found, the filter will be used as the
-        source of document ids, and then the sort will be applied to
-        that.
-
-        For most situations, this will not be useful unless you
-        frequently get the same search repeatedly with different sort
-        options, and none of them ever use "score"
-     -->
-   <!--
-      <useFilterForSortedQuery>true</useFilterForSortedQuery>
-     -->
-
-   <!-- Result Window Size
-
-        An optimization for use with the queryResultCache.  When a search
-        is requested, a superset of the requested number of document ids
-        are collected.  For example, if a search for a particular query
-        requests matching documents 10 through 19, and queryWindowSize is 50,
-        then documents 0 through 49 will be collected and cached.  Any further
-        requests in that range can be satisfied via the cache.  
-     -->
-   <queryResultWindowSize>20</queryResultWindowSize>
-
-   <!-- Maximum number of documents to cache for any entry in the
-        queryResultCache. 
-     -->
-   <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
-
-   <!-- Query Related Event Listeners
-
-        Various IndexSearcher related events can trigger Listeners to
-        take actions.
-
-        newSearcher - fired whenever a new searcher is being prepared
-        and there is a current searcher handling requests (aka
-        registered).  It can be used to prime certain caches to
-        prevent long request times for certain requests.
-
-        firstSearcher - fired whenever a new searcher is being
-        prepared but there is no current registered searcher to handle
-        requests or to gain autowarming data from.
-
-        
-     -->
-    <!-- QuerySenderListener takes an array of NamedList and executes a
-         local query request for each NamedList in sequence. 
-      -->
-    <listener event="newSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <!--
-           <lst><str name="q">solr</str><str name="sort">price asc</str></lst>
-           <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
-          -->
-      </arr>
-    </listener>
-    <listener event="firstSearcher" class="solr.QuerySenderListener">
-      <arr name="queries">
-        <lst>
-          <str name="q">static firstSearcher warming in solrconfig.xml</str>
-        </lst>
-      </arr>
-    </listener>
-
-    <!-- Use Cold Searcher
-
-         If a search request comes in and there is no current
-         registered searcher, then immediately register the still
-         warming searcher and use it.  If "false" then all requests
-         will block until the first searcher is done warming.
-      -->
-    <useColdSearcher>false</useColdSearcher>
-
-    <!-- Max Warming Searchers
-         
-         Maximum number of searchers that may be warming in the
-         background concurrently.  An error is returned if this limit
-         is exceeded.
-
-         Recommend values of 1-2 for read-only slaves, higher for
-         masters w/o cache warming.
-      -->
-    <maxWarmingSearchers>4</maxWarmingSearchers>
-
-  </query>
-
-
-  <!-- Request Dispatcher
-
-       This section contains instructions for how the SolrDispatchFilter
-       should behave when processing requests for this SolrCore.
-
-       handleSelect is a legacy option that affects the behavior of requests
-       such as /select?qt=XXX
-
-       handleSelect="true" will cause the SolrDispatchFilter to process
-       the request and dispatch the query to a handler specified by the
-       "qt" param, assuming "/select" isn't already registered.
-
-       handleSelect="false" will cause the SolrDispatchFilter to
-       ignore "/select" requests, resulting in a 404 unless a handler
-       is explicitly registered with the name "/select"
-
-       handleSelect="true" is not recommended for new users, but is the default
-       for backwards compatibility
-    -->
-  <requestDispatcher handleSelect="false" >
-    <!-- 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 of
-         Multipart File Uploads that Solr will allow in a Request.
-         
-         *** WARNING ***
-         The settings below authorize Solr to fetch remote files, You
-         should make sure your system has some authentication before
-         using enableRemoteStreaming="true"
-
-      --> 
-    <requestParsers enableRemoteStreaming="true" 
-                    multipartUploadLimitInKB="2048000"
-                    formdataUploadLimitInKB="2048"/>
-
-    <!-- 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.
-
-       Legacy behavior: If the request path uses "/select" but no Request
-       Handler has that name, and if handleSelect="true" has been specified in
-       the requestDispatcher, then the Request Handler is dispatched based on
-       the qt parameter.  Handlers without a leading '/' are accessed this way
-       like so: http://host/app/[core/]select?qt=name  If no qt is
-       given, then the requestHandler that declares default="true" will be
-       used or the one named "standard".
-       
-       If a Request Handler is declared with startup="lazy", then it will
-       not be initialized until the first request that uses it.
-
-    -->
-  <!-- SearchHandler
-
-       http://wiki.apache.org/solr/SearchHandler
-
-       For processing Search Queries, the primary Request Handler
-       provided with Solr is "SearchHandler" It delegates to a sequent
-       of SearchComponents (see below) and supports distributed
-       queries across multiple shards
-    -->
-  <requestHandler name="/select" class="solr.SearchHandler">
-    <!-- default values for query parameters can be specified, these
-         will be overridden by parameters in the request
-      -->
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <int name="rows">10</int>
-       <str name="df">text</str>
-     </lst>
-    <!-- In addition to defaults, "appends" params can be specified
-         to identify values which should be appended to the list of
-         multi-val params from the query (or the existing "defaults").
-      -->
-    <!-- In this example, the param "fq=instock:true" would be appended to
-         any query time fq params the user may specify, as a mechanism for
-         partitioning the index, independent of any user selected filtering
-         that may also be desired (perhaps as a result of faceted searching).
-
-         NOTE: there is *absolutely* nothing a client can do to prevent these
-         "appends" values from being used, so don't use this mechanism
-         unless you are sure you always want it.
-      -->
-    <!--
-       <lst name="appends">
-         <str name="fq">inStock:true</str>
-       </lst>
-      -->
-    <!-- "invariants" are a way of letting the Solr maintainer lock down
-         the options available to Solr clients.  Any params values
-         specified here are used regardless of what values may be specified
-         in either the query, the "defaults", or the "appends" params.
-
-         In this example, the facet.field and facet.query params would
-         be fixed, limiting the facets clients can use.  Faceting is
-         not turned on by default - but if the client does specify
-         facet=true in the request, these are the only facets they
-         will be able to see counts for; regardless of what other
-         facet.field or facet.query params they may specify.
-
-         NOTE: there is *absolutely* nothing a client can do to prevent these
-         "invariants" values from being used, so don't use this mechanism
-         unless you are sure you always want it.
-      -->
-    <!--
-       <lst name="invariants">
-         <str name="facet.field">cat</str>
-         <str name="facet.field">manu_exact</str>
-         <str name="facet.query">price:[* TO 500]</str>
-         <str name="facet.query">price:[500 TO *]</str>
-       </lst>
-      -->
-    <!-- If the default list of SearchComponents is not desired, that
-         list can either be overridden completely, or components can be
-         prepended or appended to the default list.  (see below)
-      -->
-    <!--
-       <arr name="components">
-         <str>nameOfCustomComponent1</str>
-         <str>nameOfCustomComponent2</str>
-       </arr>
-      -->
-    </requestHandler>
-
-  <!-- A request handler that returns indented JSON by default -->
-  <requestHandler name="/query" class="solr.SearchHandler">
-     <lst name="defaults">
-       <str name="echoParams">explicit</str>
-       <str name="wt">json</str>
-       <str name="indent">true</str>
-       <str name="df">text</str>
-     </lst>
-  </requestHandler>
-
-  <!-- Search Components
-
-       Search components are registered to SolrCore and used by 
-       instances of SearchHandler (which can access them by name)
-       
-       By default, the following components are available:
-       
-       <searchComponent name="query"     class="solr.QueryComponent" />
-       <searchComponent name="facet"     class="solr.FacetComponent" />
-       <searchComponent name="mlt"       class="solr.MoreLikeThisComponent" />
-       <searchComponent name="highlight" class="solr.HighlightComponent" />
-       <searchComponent name="stats"     class="solr.StatsComponent" />
-       <searchComponent name="debug"     class="solr.DebugComponent" />
-   
-       Default configuration in a requestHandler would look like:
-
-       <arr name="components">
-         <str>query</str>
-         <str>facet</str>
-         <str>mlt</str>
-         <str>highlight</str>
-         <str>stats</str>
-         <str>debug</str>
-       </arr>
-
-       If you register a searchComponent to one of the standard names, 
-       that will be used instead of the default.
-
-       To insert components before or after the 'standard' components, use:
-    
-       <arr name="first-components">
-         <str>myFirstComponentName</str>
-       </arr>
-    
-       <arr name="last-components">
-         <str>myLastComponentName</str>
-       </arr>
-
-       NOTE: The component registered with the name "debug" will
-       always be executed after the "last-components" 
-       
-     -->
-  
-   <!-- Spell Check
-
-        The spell check component can return a list of alternative spelling
-        suggestions.  
-
-        http://wiki.apache.org/solr/SpellCheckComponent
-     -->
-  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
-
-    <str name="queryAnalyzerFieldType">textSpell</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">name</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">
-      <str name="df">text</str>
-      <!-- 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">
-      <str name="df">text</str>
-      <bool name="tv">true</bool>
-    </lst>
-    <arr name="last-components">
-      <str>tvComponent</str>
-    </arr>
-  </requestHandler>
-
-  <!-- Clustering Component
-
-       http://wiki.apache.org/solr/ClusteringComponent
-
-       You'll need to set the solr.cluster.enabled system property
-       when running solr to run with clustering enabled:
-
-            java -Dsolr.clustering.enabled=true -jar start.jar
-
-    -->
-  <searchComponent name="clustering"
-                   enable="${solr.clustering.enabled:false}"
-                   class="solr.clustering.ClusteringComponent" >
-    <!-- Declare an engine -->
-    <lst name="engine">
-      <!-- The name, only one can be named "default" -->
-      <str name="name">default</str>
-
-      <!-- Class name of Carrot2 clustering algorithm.
-
-           Currently available algorithms are:
-           
-           * org.carrot2.clustering.lingo.LingoClusteringAlgorithm
-           * org.carrot2.clustering.stc.STCClusteringAlgorithm
-           * org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm
-           
-           See http://project.carrot2.org/algorithms.html for the
-           algorithm's characteristics.
-        -->
-      <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>
-
-      <!-- Overriding values for Carrot2 default algorithm attributes.
-
-           For a description of all available attributes, see:
-           http://download.carrot2.org/stable/manual/#chapter.components.
-           Use attribute key as name attribute of str elements
-           below. These can be further overridden for individual
-           requests by specifying attribute key as request parameter
-           name and attribute value as parameter value.
-        -->
-      <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>
-
-      <!-- Location of Carrot2 lexical resources.
-
-           A directory from which to load Carrot2-specific stop words
-           and stop labels. Absolute or relative to Solr config directory.
-           If a specific resource (e.g. stopwords.en) is present in the
-           specified dir, it will completely override the corresponding
-           default one that ships with Carrot2.
-
-           For an overview of Carrot2 lexical resources, see:
-           http://download.carrot2.org/head/manual/#chapter.lexical-resources
-        -->
-      <str name="carrot.lexicalResourcesDir">clustering/carrot2</str>
-
-      <!-- The language to assume for the documents.
-
-           For a list of allowed values, see:
-           http://download.carrot2.org/stable/manual/#section.attribute.lingo.MultilingualClustering.defaultLanguage
-       -->
-      <str name="MultilingualClustering.defaultLanguage">ENGLISH</str>
-    </lst>
-    <lst name="engine">
-      <str name="name">stc</str>
-      <str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>
-    </lst>
-  </searchComponent>
-
-  <!-- A request handler for demonstrating the clustering 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="/clustering"
-                  startup="lazy"
-                  enable="${solr.clustering.enabled:false}"
-                  class="solr.SearchHandler">
-    <lst name="defaults">
-      <bool name="clustering">true</bool>
-      <str name="clustering.engine">default</str>
-      <bool name="clustering.results">true</bool>
-      <!-- The title field -->
-      <str name="carrot.title">name</str>
-      <str name="carrot.url">id</str>
-      <!-- The field to cluster on -->
-       <str name="carrot.snippet">features</str>
-       <!-- produce summaries -->
-       <bool name="carrot.produceSummary">true</bool>
-       <!-- the maximum number of labels per cluster -->
-       <!--<int name="carrot.numDescriptions">5</int>-->
-       <!-- produce sub clusters -->
-       <bool name="carrot.outputSubClusters">false</bool>
-       
-       <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
-       </str>
-       <str name="q.alt">*:*</str>
-       <str name="rows">10</str>
-       <str name="fl">*,score</str>
-    </lst>     
-    <arr name="last-components">
-      <str>clustering</str>
-    </arr>
-  </requestHandler>
-  
-  <!-- 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>
-    </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>
-      <str name="df">text</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
-
-    --> 
-  <!-- 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="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"/>
-  
-
-  <!-- XSLT response writer transforms the XML output by any xslt file found
-       in Solr's conf/xslt directory.  Changes to xslt files are checked for
-       every xsltCacheLifetimeSeconds.  
-    -->
-  <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
-    <int name="xsltCacheLifetimeSeconds">5</int>
-  </queryResponseWriter>
-
-  <!-- Query Parsers
-
-       https://cwiki.apache.org/confluence/display/solr/Query+Syntax+and+Parsing
-
-       Multiple QParserPlugins can be registered by name, and then
-       used in either the "defType" param for the QueryComponent (used
-       by SearchHandler) or in LocalParams
-    -->
-  <!-- example of registering a query parser -->
-  <!--
-     <queryParser name="myparser" class="com.mycompany.MyQParserPlugin"/>
-    -->
-
-  <!-- Function Parsers
-
-       http://wiki.apache.org/solr/FunctionQuery
-
-       Multiple ValueSourceParsers can be registered by name, and then
-       used as function names when using the "func" QParser.
-    -->
-  <!-- example of registering a custom function parser  -->
-  <!--
-     <valueSourceParser name="myfunc" 
-                        class="com.mycompany.MyValueSourceParser" />
-    -->
-    
-  
-  <!-- Document Transformers
-       http://wiki.apache.org/solr/DocTransformers
-    -->
-  <!--
-     Could be something like:
-     <transformer name="db" class="com.mycompany.LoadFromDatabaseTransformer" >
-       <int name="connection">jdbc://....</int>
-     </transformer>
-     
-     To add a constant value to all docs, use:
-     <transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
-       <int name="value">5</int>
-     </transformer>
-     
-     If you want the user to still be able to change it with _value:something_ use this:
-     <transformer name="mytrans3" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
-       <double name="defaultValue">5</double>
-     </transformer>
-
-      If you are using the QueryElevationComponent, you may wish to mark documents that get boosted.  The
-      EditorialMarkerFactory will do exactly that:
-     <transformer name="qecBooster" class="org.apache.solr.response.transform.EditorialMarkerFactory" />
-    -->
-
-</config>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/stopwords.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/stopwords.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/stopwords.txt
deleted file mode 100644
index ae1e83e..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/synonyms.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/synonyms.txt b/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/conf/synonyms.txt
deleted file mode 100644
index 7f72128..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/solrcelltest/collection1/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 WordDelimiterFilter coming
-#after us won't split it into two words.
-
-# Synonym mappings can be used for spelling correction too
-pixima => pixma
-


[08/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/Saxon-HE-LICENSE-MPL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/Saxon-HE-LICENSE-MPL.txt b/solr/licenses/Saxon-HE-LICENSE-MPL.txt
deleted file mode 100644
index 608cd2e..0000000
--- a/solr/licenses/Saxon-HE-LICENSE-MPL.txt
+++ /dev/null
@@ -1,108 +0,0 @@
-MOZILLA PUBLIC LICENSE
-Version 1.0
-
-1. Definitions.
-
-1.1. ``Contributor'' means each entity that creates or contributes to the creation of Modifications.
-1.2. ``Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
-
-1.3. ``Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
-
-1.4. ``Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data.
-
-1.5. ``Executable'' means Covered Code in any form other than Source Code.
-
-1.6. ``Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
-
-1.7. ``Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
-
-1.8. ``License'' means this document.
-
-1.9. ``Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
-
-A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
-
-B. Any new file that contains any part of the Original Code or previous Modifications.
-
-1.10. ``Original Code'' means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
-
-1.11. ``Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or a list of source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
-
-1.12. ``You'' means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, ``You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, ``control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.
-
-2. Source Code License.
-2.1. The Initial Developer Grant. 
-The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
-(a) to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, or as part of a Larger Work; and
-
-(b) under patents now or hereafter owned or controlled by Initial Developer, to make, have made, use and sell (``Utilize'') the Original Code (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Original Code (or portions thereof) and not to any greater extent that may be necessary to Utilize further Modifications or combinations.
-
-2.2. Contributor Grant. 
-Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
-
-(a) to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code or as part of a Larger Work; and
-
-(b) under patents now or hereafter owned or controlled by Contributor, to Utilize the Contributor Version (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Contributor Version (or portions thereof), and not to any greater extent that may be necessary to Utilize further Modifications or combinations.
-
-3. Distribution Obligations.
-3.1. Application of License. 
-The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
-3.2. Availability of Source Code. 
-Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
-
-3.3. Description of Modifications. 
-You must cause all Covered Code to which you contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
-
-3.4. Intellectual Property Matters
-
-(a) Third Party Claims. 
-If You have knowledge that a party claims an intellectual property right in particular functionality or code (or its utilization under this License), you must include a text file with the source code distribution titled ``LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after You make Your Modification available as described in Section 3.2, You shall promptly modify the LEGAL file in all copies You make available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
-
-(b) Contributor APIs. 
-If Your Modification is an application programming interface and You own or control patents which are reasonably necessary to implement that API, you must also include this information in the LEGAL file.
-
-3.5. Required Notices. 
-You must duplicate the notice in Exhibit A in each file of the Source Code, and this License in any documentation for the Source Code, where You describe recipients' rights relating to Covered Code. If You created one or more Modification(s), You may add your name as a Contributor to the notice described in Exhibit A. If it is not possible to put such notice in a particular Source Code file due to its structure, then you must include such notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer a
 nd every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
-
-3.6. Distribution of Executable Versions. 
-You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license 
 You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
-
-3.7. Larger Works. 
-You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
-
-4. Inability to Comply Due to Statute or Regulation.
-If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
-
-5. Application of this License.
-This License applies to code to which the Initial Developer has attached the notice in Exhibit A, and to related Covered Code.
-6. Versions of the License.
-6.1. New Versions. 
-Netscape Communications Corporation (``Netscape'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
-6.2. Effect of New Versions. 
-Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License.
-
-6.3. Derivative Works. 
-If you create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), you must (a) rename Your license so that the phrases ``Mozilla'', ``MOZILLAPL'', ``MOZPL'', ``Netscape'', ``NPL'' or any confusingly similar phrase do not appear anywhere in your license and (b) otherwise make it clear that your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
-
-7. DISCLAIMER OF WARRANTY.
-COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-8. TERMINATION.
-This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
-9. LIMITATION OF LIABILITY.
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-10. U.S. GOVERNMENT END USERS.
-The Covered Code is a ``commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer software'' and ``commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
-11. MISCELLANEOUS.
-This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in, the United States of America: (a) unless otherwise agreed in writing, all disputes relating to this License (excepting any dispute relating to intellectual property rights) shall be subject to final and binding arbitration, with the losing party paying all costs of arbitration; (b) any arbitration relating to this Agreement shall be held in Santa Clara County, California, under the auspices of JAMS/EndDispute; and (c) any litigation relating to this Agreement shall be 
 subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
-12. RESPONSIBILITY FOR CLAIMS.
-Except in cases where another Contributor has failed to comply with Section 3.4, You are responsible for damages arising, directly or indirectly, out of Your utilization of rights under this License, based on the number of copies of Covered Code you made available, the revenues you received from utilizing such rights, and other relevant factors. You agree to work with affected parties to distribute responsibility on an equitable basis.
-EXHIBIT A.
-``The contents of this file are subject to the Mozilla Public License Version 1.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.mozilla.org/MPL/
-Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
-
-The Original Code is ______________________________________.
-
-The Initial Developer of the Original Code is ________________________. Portions created by ______________________ are Copyright (C) ______ _______________________. All Rights Reserved.
-
-Contributor(s): ______________________________________.''
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/aopalliance-1.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/aopalliance-1.0.jar.sha1 b/solr/licenses/aopalliance-1.0.jar.sha1
deleted file mode 100644
index 5da3c21..0000000
--- a/solr/licenses/aopalliance-1.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0235ba8b489512805ac13a8f9ea77a1ca5ebe3e8

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/aopalliance-LICENSE-PD.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/aopalliance-LICENSE-PD.txt b/solr/licenses/aopalliance-LICENSE-PD.txt
deleted file mode 100644
index c75d4e6..0000000
--- a/solr/licenses/aopalliance-LICENSE-PD.txt
+++ /dev/null
@@ -1 +0,0 @@
-Released to Public Domain
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/argparse4j-0.4.3.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/argparse4j-0.4.3.jar.sha1 b/solr/licenses/argparse4j-0.4.3.jar.sha1
deleted file mode 100644
index 3223c06..0000000
--- a/solr/licenses/argparse4j-0.4.3.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-f4c256934d79940477a35b6c4c182b47ee5f0a6f

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/argparse4j-LICENSE-MIT.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/argparse4j-LICENSE-MIT.txt b/solr/licenses/argparse4j-LICENSE-MIT.txt
deleted file mode 100644
index 42612cf..0000000
--- a/solr/licenses/argparse4j-LICENSE-MIT.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2011, 2013 Tatsuhiro Tsujikawa
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/avro-1.7.5.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/avro-1.7.5.jar.sha1 b/solr/licenses/avro-1.7.5.jar.sha1
deleted file mode 100644
index d19293c..0000000
--- a/solr/licenses/avro-1.7.5.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8343a5b33f56fa16306ed27fa7b1a79278c26c2d

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/avro-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/avro-LICENSE-ASL.txt b/solr/licenses/avro-LICENSE-ASL.txt
deleted file mode 100644
index 2f23f97..0000000
--- a/solr/licenses/avro-LICENSE-ASL.txt
+++ /dev/null
@@ -1,308 +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.
-
-----------------------------------------------------------------------
-License for the Jansson C JSON parser used in the C implementation:
-
-Copyright (c) 2009 Petri Lehtinen <pe...@digip.org>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-----------------------------------------------------------------------
-License for the Json.NET used in the C# implementation:
-
-Copyright (c) 2007 James Newton-King
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-----------------------------------------------------------------------
-License for msinttypes used in the C implementation:
-Source from:
-http://code.google.com/p/msinttypes/downloads/detail?name=msinttypes-r26.zip
-
-Copyright (c) 2006-2008 Alexander Chemeris
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-  1. Redistributions of source code must retain the above copyright notice,
-     this list of conditions and the following disclaimer.
-
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-
-  3. The name of the author may be used to endorse or promote products
-     derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-----------------------------------------------------------------------
-License for Dirent API for Microsoft Visual Studio used in the C implementation:
-Source from:
-http://www.softagalleria.net/download/dirent/dirent-1.11.zip
-
-Copyright (C) 2006 Toni Ronkko
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-``Software''), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL TONI RONKKO BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-----------------------------------------------------------------------
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/avro-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/avro-NOTICE.txt b/solr/licenses/avro-NOTICE.txt
deleted file mode 100644
index da479fe..0000000
--- a/solr/licenses/avro-NOTICE.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Apache Avro
-Copyright 2010 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-C JSON parsing provided by Jansson and
-written by Petri Lehtinen. The original software is
-available from http://www.digip.org/jansson/.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/bcpkix-jdk15on-1.47.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/bcpkix-jdk15on-1.47.jar.sha1 b/solr/licenses/bcpkix-jdk15on-1.47.jar.sha1
deleted file mode 100644
index 1a7e7be..0000000
--- a/solr/licenses/bcpkix-jdk15on-1.47.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-cd204e6f26d2bbf65ff3a30de8831d3a1344e851

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/bcpkix-jdk15on-LICENSE-BSD_LIKE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/bcpkix-jdk15on-LICENSE-BSD_LIKE.txt b/solr/licenses/bcpkix-jdk15on-LICENSE-BSD_LIKE.txt
deleted file mode 100644
index 9dfdf7c..0000000
--- a/solr/licenses/bcpkix-jdk15on-LICENSE-BSD_LIKE.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Copyright (c) 2000-2010 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
-associated documentation files (the "Software"), to deal in the Software without restriction,
-including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
- subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions
- of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/bcpkix-jdk15on-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/bcpkix-jdk15on-NOTICE.txt b/solr/licenses/bcpkix-jdk15on-NOTICE.txt
deleted file mode 100644
index be0638a..0000000
--- a/solr/licenses/bcpkix-jdk15on-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Copyright (c) 2000-2006 The Legion Of The Bouncy Castle
-(http://www.bouncycastle.org)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/config-1.0.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/config-1.0.2.jar.sha1 b/solr/licenses/config-1.0.2.jar.sha1
deleted file mode 100644
index 6dbf80d..0000000
--- a/solr/licenses/config-1.0.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a0bca82c39f23f75e3afccd6e12840eeabaea123

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/config-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/config-LICENSE-ASL.txt b/solr/licenses/config-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/config-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/config-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/config-NOTICE.txt b/solr/licenses/config-NOTICE.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/guice-3.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/guice-3.0.jar.sha1 b/solr/licenses/guice-3.0.jar.sha1
deleted file mode 100644
index 7ce1a30..0000000
--- a/solr/licenses/guice-3.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9d84f15fe35e2c716a02979fb62f50a29f38aefa

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/guice-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/guice-LICENSE-ASL.txt b/solr/licenses/guice-LICENSE-ASL.txt
deleted file mode 100644
index 7a4a3ea..0000000
--- a/solr/licenses/guice-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.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/guice-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/guice-NOTICE.txt b/solr/licenses/guice-NOTICE.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/guice-servlet-3.0.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/guice-servlet-3.0.jar.sha1 b/solr/licenses/guice-servlet-3.0.jar.sha1
deleted file mode 100644
index a496feb..0000000
--- a/solr/licenses/guice-servlet-3.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-610cde0e8da5a8b7d8efb8f0b8987466ffebaaf9

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/guice-servlet-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/guice-servlet-LICENSE-ASL.txt b/solr/licenses/guice-servlet-LICENSE-ASL.txt
deleted file mode 100644
index 7a4a3ea..0000000
--- a/solr/licenses/guice-servlet-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.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/guice-servlet-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/guice-servlet-NOTICE.txt b/solr/licenses/guice-servlet-NOTICE.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-app-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-app-2.7.2.jar.sha1 b/solr/licenses/hadoop-mapreduce-client-app-2.7.2.jar.sha1
deleted file mode 100644
index 40efc35..0000000
--- a/solr/licenses/hadoop-mapreduce-client-app-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-6e4a1d1754c68b5ce3821cea96da77d0fc2067b5


[32/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-7452: add support for _m buckets, missing and has sub-facets in need of refinement

Posted by cp...@apache.org.
SOLR-7452: add support for _m buckets, missing and has sub-facets in need of refinement


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

Branch: refs/heads/jira/solr-6203
Commit: fec87fceb5de0c167969ee03fcc09d58d5d479c9
Parents: 53e5f34
Author: yonik <yo...@apache.org>
Authored: Fri Mar 24 20:43:44 2017 -0400
Committer: yonik <yo...@apache.org>
Committed: Fri Mar 24 20:43:44 2017 -0400

----------------------------------------------------------------------
 .../solr/search/facet/FacetFieldProcessor.java  | 11 ++++
 .../search/facet/TestJsonFacetRefinement.java   | 58 +++++++++++++++++---
 2 files changed, 60 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/fec87fce/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java
index e8b234d..97d8607 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java
@@ -545,6 +545,7 @@ abstract class FacetFieldProcessor extends FacetProcessor<FacetField> {
     for (Object bucketVal : leaves) {
       bucketList.add( refineBucket(bucketVal, false, null) );
     }
+
     for (List bucketAndFacetInfo : skip) {
       assert bucketAndFacetInfo.size() == 2;
       Object bucketVal = bucketAndFacetInfo.get(0);
@@ -553,6 +554,16 @@ abstract class FacetFieldProcessor extends FacetProcessor<FacetField> {
       bucketList.add( refineBucket(bucketVal, true, facetInfo ) );
     }
 
+    // The only difference between skip and missing is the value of "skip" passed to refineBucket
+    for (List bucketAndFacetInfo : missing) {
+      assert bucketAndFacetInfo.size() == 2;
+      Object bucketVal = bucketAndFacetInfo.get(0);
+      Map<String,Object> facetInfo = (Map<String, Object>) bucketAndFacetInfo.get(1);
+
+      bucketList.add( refineBucket(bucketVal, false, facetInfo ) );
+    }
+
+
     // If there are just a couple of leaves, and if the domain is large, then
     // going by term is likely the most efficient?
     // If the domain is small, or if the number of leaves is large, then doing

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/fec87fce/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacetRefinement.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacetRefinement.java b/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacetRefinement.java
index 869c90b..5c86347 100644
--- a/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacetRefinement.java
+++ b/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacetRefinement.java
@@ -209,6 +209,17 @@ public class TestJsonFacetRefinement extends SolrTestCaseHS {
             "}"
     );
 
+    // for testing missing _m, we need a partial facet within a partial facet
+    doTestRefine("{top:{type:terms, field:Afield, refine:true, limit:1, facet:{x : {type:terms, field:X, limit:1, refine:true} } } }",
+        "{top: {buckets:[{val:'A', count:2, x:{buckets:[{val:x1, count:5},{val:x2, count:3}]} } ] } }",
+        "{top: {buckets:[{val:'B', count:1, x:{buckets:[{val:x2, count:4},{val:x3, count:2}]} } ] } }",
+        null,
+        "=={top: {" +
+            "_m:[  ['A' , {x:{_l:[x1]}} ]  ]" +
+            "    }  " +
+            "}"
+    );
+
   }
 
 
@@ -223,20 +234,21 @@ public class TestJsonFacetRefinement extends SolrTestCaseHS {
 
     client.deleteByQuery("*:*", null);
 
-    ModifiableSolrParams p = params("cat_s", "cat_s", "num_d", "num_d");
+    ModifiableSolrParams p = params("cat_s", "cat_s", "xy_s", "xy_s", "num_d", "num_d");
     String cat_s = p.get("cat_s");
+    String xy_s = p.get("xy_s");
     String num_d = p.get("num_d");
 
-    clients.get(0).add( sdoc("id", "01", "all_s","all", cat_s, "A", num_d, -1) ); // A wins count tie
-    clients.get(0).add( sdoc("id", "02", "all_s","all", cat_s, "B", num_d, 3) );
+    clients.get(0).add( sdoc("id", "01", "all_s","all", cat_s, "A", xy_s, "X" ,num_d, -1) ); // A wins count tie
+    clients.get(0).add( sdoc("id", "02", "all_s","all", cat_s, "B", xy_s, "Y", num_d, 3) );
 
-    clients.get(1).add( sdoc("id", "11", "all_s","all", cat_s, "B", num_d, -5) ); // B highest count
-    clients.get(1).add( sdoc("id", "12", "all_s","all", cat_s, "B", num_d, -11) );
-    clients.get(1).add( sdoc("id", "13", "all_s","all", cat_s, "A", num_d, 7) );
+    clients.get(1).add( sdoc("id", "11", "all_s","all", cat_s, "B", xy_s, "X", num_d, -5) ); // B highest count
+    clients.get(1).add( sdoc("id", "12", "all_s","all", cat_s, "B", xy_s, "Y", num_d, -11) );
+    clients.get(1).add( sdoc("id", "13", "all_s","all", cat_s, "A", xy_s, "X", num_d, 7) );
 
-    clients.get(2).add( sdoc("id", "21", "all_s","all", cat_s, "A", num_d, 17) ); // A highest count
-    clients.get(2).add( sdoc("id", "22", "all_s","all", cat_s, "A", num_d, -19) );
-    clients.get(2).add( sdoc("id", "23", "all_s","all", cat_s, "B", num_d, 11) );
+    clients.get(2).add( sdoc("id", "21", "all_s","all", cat_s, "A", xy_s, "X", num_d, 17) ); // A highest count
+    clients.get(2).add( sdoc("id", "22", "all_s","all", cat_s, "A", xy_s, "Y", num_d, -19) );
+    clients.get(2).add( sdoc("id", "23", "all_s","all", cat_s, "B", xy_s, "X", num_d, 11) );
 
     client.commit();
 
@@ -255,6 +267,7 @@ public class TestJsonFacetRefinement extends SolrTestCaseHS {
     );
     ****/
 
+
     client.testJQ(params(p, "q", "*:*",
         "json.facet", "{" +
             "cat0:{type:terms, field:${cat_s}, sort:'count desc', limit:1, overrequest:0, refine:false}" +
@@ -305,6 +318,33 @@ public class TestJsonFacetRefinement extends SolrTestCaseHS {
             "}"
     );
 
+    // test missing buckets (field facet within field facet)
+    client.testJQ(params(p, "q", "*:*",
+        "json.facet", "{" +
+            "ab:{type:terms, field:${cat_s}, limit:1, overrequest:0, refine:true,  facet:{  xy:{type:terms, field:${xy_s}, limit:1, overrequest:0, refine:true   }  }}" +
+            "}"
+        )
+        , "facets=={ count:8" +
+            ", ab:{ buckets:[  {val:A, count:4, xy:{buckets:[ {val:X,count:3}]}  }]  }" +  // just like the previous response, just nested under a field facet
+            "}"
+    );
+
+    // test that sibling facets and stats are included for _m buckets, but skipped for _s buckets
+    client.testJQ(params(p, "q", "*:*",
+        "json.facet", "{" +
+            " ab :{type:terms, field:${cat_s}, limit:1, overrequest:0, refine:true,  facet:{  xy:{type:terms, field:${xy_s}, limit:1, overrequest:0, refine:true}, qq:{query:'*:*'},ww:'sum(${num_d})'  }}" +
+            ",ab2:{type:terms, field:${cat_s}, limit:1, overrequest:0, refine:false, facet:{  xy:{type:terms, field:${xy_s}, limit:1, overrequest:0, refine:true}, qq:{query:'*:*'},ww:'sum(${num_d})'  }}" + // top level refine=false shouldn't matter
+            ",allf :{type:terms, field:all_s, limit:1, overrequest:0, refine:true,  facet:{cat:{type:terms, field:${cat_s}, limit:1, overrequest:0, refine:true}, qq:{query:'*:*'},ww:'sum(${num_d})'  }}" +
+            ",allf2:{type:terms, field:all_s, limit:1, overrequest:0, refine:false, facet:{cat:{type:terms, field:${cat_s}, limit:1, overrequest:0, refine:true}, qq:{query:'*:*'},ww:'sum(${num_d})'  }}" + // top level refine=false shouldn't matter
+            "}"
+        )
+        , "facets=={ count:8" +
+            ", ab:{ buckets:[  {val:A, count:4, xy:{buckets:[ {val:X,count:3}]}    ,qq:{count:4}, ww:4.0 }]  }" +  // make sure qq and ww are included for _m buckets
+            ", allf:{ buckets:[ {count:8, val:all, cat:{buckets:[{val:A,count:4}]} ,qq:{count:8}, ww:2.0 }]  }" +  // make sure qq and ww are excluded (not calculated again in another phase) for _s buckets
+            ", ab2:{ buckets:[  {val:A, count:4, xy:{buckets:[ {val:X,count:3}]}    ,qq:{count:4}, ww:4.0 }]  }" +  // make sure qq and ww are included for _m buckets
+            ", allf2:{ buckets:[ {count:8, val:all, cat:{buckets:[{val:A,count:4}]} ,qq:{count:8}, ww:2.0 }]  }" +  // make sure qq and ww are excluded (not calculated again in another phase) for _s buckets
+            "}"
+    );
 
   }
 


[41/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10076: Move changes entry to 6.6 release.

Posted by cp...@apache.org.
SOLR-10076: Move changes entry to 6.6 release.


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

Branch: refs/heads/jira/solr-6203
Commit: e11c86f6e4f85fc4ea561283cf6d2fa8c8df2208
Parents: cd66a5f
Author: markrmiller <ma...@apache.org>
Authored: Mon Mar 27 10:44:27 2017 -0400
Committer: markrmiller <ma...@apache.org>
Committed: Mon Mar 27 10:44:45 2017 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e11c86f6/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index dc3ae9d..e102b27 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -121,6 +121,8 @@ New Features
 
 * SOLR-9994: Add support for CollapseQParser with PointFields. (Varun Thacker, Cao Manh Dat) 
 
+* SOLR-10076: Hide keystore and truststore passwords from /admin/info/* outputs. (Mano Kovacs via Mark Miller)
+
 Optimizations
 ----------------------
 
@@ -242,8 +244,6 @@ New Features
 
 * SOLR-9045: Make RecoveryStrategy settings configurable. (Christine Poerschke)
 
-* SOLR-10076: Hide keystore and truststore passwords from /admin/info/* outputs. (Mano Kovacs via Mark Miller)
-
 * SOLR-10224: Add disk total and disk free metrics. (ab)
 
 * SOLR-10085: SQL result set fields should be ordered by the field list (Joel Bernstein)


[59/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-6736: Adding support for uploading zipped configsets using ConfigSets API

Posted by cp...@apache.org.
SOLR-6736: Adding support for uploading zipped configsets using ConfigSets API


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

Branch: refs/heads/jira/solr-6203
Commit: 6b0217b7cbff1216bb4ffbecdba02eb8c5dd3df6
Parents: 0322068
Author: Ishan Chattopadhyaya <is...@apache.org>
Authored: Wed Mar 29 00:44:27 2017 +0530
Committer: Ishan Chattopadhyaya <is...@apache.org>
Committed: Wed Mar 29 00:44:27 2017 +0530

----------------------------------------------------------------------
 solr/CHANGES.txt                                |   3 +
 .../dataimport/EntityProcessorWrapper.java      |  23 ++
 .../apache/solr/cloud/ZkSolrResourceLoader.java |   2 +-
 .../java/org/apache/solr/core/ConfigSet.java    |  10 +-
 .../org/apache/solr/core/ConfigSetService.java  |  29 +-
 .../org/apache/solr/core/CoreContainer.java     |   3 +-
 .../org/apache/solr/core/CoreDescriptor.java    |  17 +
 .../apache/solr/core/RunExecutableListener.java |  13 +-
 .../src/java/org/apache/solr/core/SolrCore.java |   1 +
 .../solr/handler/admin/ConfigSetsHandler.java   |  93 ++++-
 .../apache/solr/handler/loader/XMLLoader.java   |   7 +
 .../solr/security/PermissionNameProvider.java   |   2 +-
 .../org/apache/solr/update/UpdateHandler.java   |  16 +
 .../StatelessScriptUpdateProcessorFactory.java  |   6 +
 .../dih-script-transformer/managed-schema       |  25 ++
 .../dih-script-transformer/solrconfig.xml       |  61 +++
 .../configsets/upload/regular/managed-schema    |  25 ++
 .../configsets/upload/regular/solrconfig.xml    |  61 +++
 .../regular/xslt/xsl-update-handler-test.xsl    |  49 +++
 .../with-run-executable-listener/managed-schema |  25 ++
 .../with-run-executable-listener/solrconfig.xml |  69 ++++
 .../upload/with-script-processor/managed-schema |  25 ++
 ...missleading.extension.updateprocessor.js.txt |  23 ++
 .../upload/with-script-processor/solrconfig.xml |  65 +++
 .../apache/solr/cloud/TestConfigSetsAPI.java    | 401 ++++++++++++++++++-
 .../org/apache/solr/core/TestCodecSupport.java  |   2 +-
 .../apache/solr/core/TestDynamicLoading.java    |  11 +-
 .../solr/common/params/ConfigSetParams.java     |   1 +
 .../apache/solr/cloud/MiniSolrCloudCluster.java |   6 +-
 29 files changed, 1056 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 8875160..49300fe 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -123,6 +123,9 @@ New Features
 
 * SOLR-10076: Hide keystore and truststore passwords from /admin/info/* outputs. (Mano Kovacs via Mark Miller)
 
+* SOLR-6736: Adding support for uploading zipped configsets using ConfigSets API (Varun Rajput, Ishan Chattopadhyaya,
+  Noble Paul, Anshum Gupta, Gregory Chanan)
+
 Optimizations
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessorWrapper.java
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessorWrapper.java b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessorWrapper.java
index 6370d24..8a76e11 100644
--- a/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessorWrapper.java
+++ b/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessorWrapper.java
@@ -17,6 +17,8 @@
 package org.apache.solr.handler.dataimport;
 
 import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrException.ErrorCode;
+import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.dataimport.config.ConfigNameConstants;
 import org.apache.solr.handler.dataimport.config.Entity;
 
@@ -98,6 +100,9 @@ public class EntityProcessorWrapper extends EntityProcessor {
     for (String aTransArr : transArr) {
       String trans = aTransArr.trim();
       if (trans.startsWith("script:")) {
+        // The script transformer is a potential vulnerability, esp. when the script is
+        // provided from an untrusted source. Check and don't proceed if source is untrusted.
+        checkIfTrusted(trans);
         String functionName = trans.substring("script:".length());
         ScriptTransformer scriptTransformer = new ScriptTransformer();
         scriptTransformer.setFunctionName(functionName);
@@ -126,6 +131,24 @@ public class EntityProcessorWrapper extends EntityProcessor {
 
   }
 
+  private void checkIfTrusted(String trans) {
+    if (docBuilder != null) {
+      SolrCore core = docBuilder.dataImporter.getCore();
+      boolean trusted = (core != null)? core.getCoreDescriptor().isConfigSetTrusted(): true;
+      if (!trusted) {
+        Exception ex = new SolrException(ErrorCode.UNAUTHORIZED, "The configset for this collection was uploaded "
+            + "without any authentication in place,"
+            + " and this transformer is not available for collections with untrusted configsets. To use this transformer,"
+            + " re-upload the configset after enabling authentication and authorization.");
+        String msg = "Transformer: "
+            + trans
+            + ". " + ex.getMessage();
+        log.error(msg);
+        wrapAndThrow(SEVERE, ex, msg);
+      }
+    }
+  }
+
   @SuppressWarnings("unchecked")
   static class ReflectionTransformer extends Transformer {
     final Method meth;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
index b4137b3..5f32ef2 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
@@ -81,7 +81,7 @@ public class ZkSolrResourceLoader extends SolrResourceLoader {
   @Override
   public InputStream openResource(String resource) throws IOException {
     InputStream is;
-    String file = configSetZkPath + "/" + resource;
+    String file = (".".equals(resource)) ? configSetZkPath : configSetZkPath + "/" + resource;
     int maxTries = 10;
     Exception exception = null;
     while (maxTries -- > 0) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/core/ConfigSet.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/ConfigSet.java b/solr/core/src/java/org/apache/solr/core/ConfigSet.java
index c406506..e0c9fe4 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSet.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSet.java
@@ -32,11 +32,15 @@ public class ConfigSet {
 
   private final NamedList properties;
 
-  public ConfigSet(String name, SolrConfig solrConfig, IndexSchema indexSchema, NamedList properties) {
+  private final boolean trusted;
+
+  public ConfigSet(String name, SolrConfig solrConfig, IndexSchema indexSchema,
+      NamedList properties, boolean trusted) {
     this.name = name;
     this.solrconfig = solrConfig;
     this.indexSchema = indexSchema;
     this.properties = properties;
+    this.trusted = trusted;
   }
 
   public String getName() {
@@ -54,4 +58,8 @@ public class ConfigSet {
   public NamedList getProperties() {
     return properties;
   }
+  
+  public boolean isTrusted() {
+    return trusted;
+  }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
index e4a135e..13ac9ce 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
@@ -28,6 +28,7 @@ import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 import org.apache.solr.cloud.CloudConfigSetService;
 import org.apache.solr.cloud.ZkController;
+import org.apache.solr.cloud.ZkSolrResourceLoader;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.schema.IndexSchema;
@@ -74,10 +75,22 @@ public abstract class ConfigSetService {
     SolrResourceLoader coreLoader = createCoreResourceLoader(dcore);
 
     try {
+
+      // ConfigSet properties are loaded from ConfigSetProperties.DEFAULT_FILENAME file.
+      // ConfigSet flags are loaded from the metadata of the ZK node of the configset.
+      NamedList properties = createConfigSetProperties(dcore, coreLoader);
+      NamedList flags = getConfigSetFlags(dcore, coreLoader);
+
+      boolean trusted =
+          (coreLoader instanceof ZkSolrResourceLoader
+              && flags != null
+              && flags.get("trusted") != null
+              && !flags.getBooleanArg("trusted")
+              ) ? false: true;
+
       SolrConfig solrConfig = createSolrConfig(dcore, coreLoader);
       IndexSchema schema = createIndexSchema(dcore, solrConfig);
-      NamedList properties = createConfigSetProperties(dcore, coreLoader);
-      return new ConfigSet(configName(dcore), solrConfig, schema, properties);
+      return new ConfigSet(configName(dcore), solrConfig, schema, properties, trusted);
     } catch (Exception e) {
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
           "Could not load conf for core " + dcore.getName() +
@@ -116,6 +129,18 @@ public abstract class ConfigSetService {
     return ConfigSetProperties.readFromResourceLoader(loader, cd.getConfigSetPropertiesName());
   }
 
+  protected NamedList getConfigSetFlags(CoreDescriptor cd, SolrResourceLoader loader) {
+    if (loader instanceof ZkSolrResourceLoader) {
+      try {
+        return ConfigSetProperties.readFromResourceLoader(loader, ".");
+      } catch (Exception ex) {
+        return null;
+      }
+    } else {
+      return null;
+    }
+  }
+
   /**
    * Create a SolrResourceLoader for a core
    * @param cd the core's CoreDescriptor

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index 9db3261..5ec34ba 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -945,7 +945,8 @@ public class CoreContainer {
       }
 
       ConfigSet coreConfig = coreConfigService.getConfig(dcore);
-      log.info("Creating SolrCore '{}' using configuration from {}", dcore.getName(), coreConfig.getName());
+      dcore.setConfigSetTrusted(coreConfig.isTrusted());
+      log.info("Creating SolrCore '{}' using configuration from {}, trusted={}", dcore.getName(), coreConfig.getName(), dcore.isConfigSetTrusted());
       try {
         core = new SolrCore(dcore, coreConfig);
       } catch (SolrException e) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java b/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
index a58de48..0dc2c71 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreDescriptor.java
@@ -66,6 +66,14 @@ public class CoreDescriptor {
   public static final String DEFAULT_EXTERNAL_PROPERTIES_FILE = "conf" + File.separator + "solrcore.properties";
 
   /**
+   * Whether this core was configured using a configSet that was trusted.
+   * This helps in avoiding the loading of plugins that have potential
+   * vulnerabilities, when the configSet was not uploaded from a trusted
+   * user.
+   */
+  private boolean trustedConfigSet = true;
+
+  /**
    * Get the standard properties in persistable form
    * @return the standard core properties in persistable form
    */
@@ -170,6 +178,7 @@ public class CoreDescriptor {
     this.coreProperties.setProperty(CORE_NAME, coreName);
     this.originalCoreProperties.setProperty(CORE_NAME, coreName);
     this.substitutableProperties.setProperty(SOLR_CORE_PROP_PREFIX + CORE_NAME, coreName);
+    this.trustedConfigSet = other.trustedConfigSet;
   }
 
   /**
@@ -372,4 +381,12 @@ public class CoreDescriptor {
   public String getConfigSetPropertiesName() {
     return coreProperties.getProperty(CORE_CONFIGSET_PROPERTIES);
   }
+
+  public boolean isConfigSetTrusted() {
+    return trustedConfigSet;
+  }
+
+  public void setConfigSetTrusted(boolean trusted) {
+    this.trustedConfigSet = trusted;
+  }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/core/RunExecutableListener.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/RunExecutableListener.java b/solr/core/src/java/org/apache/solr/core/RunExecutableListener.java
index ba0046e..c6d0090 100644
--- a/solr/core/src/java/org/apache/solr/core/RunExecutableListener.java
+++ b/solr/core/src/java/org/apache/solr/core/RunExecutableListener.java
@@ -17,8 +17,10 @@
 package org.apache.solr.core;
 
 import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.search.SolrIndexSearcher;
+import org.apache.solr.util.plugin.SolrCoreAware;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -30,7 +32,7 @@ import java.util.ArrayList;
 
 /**
  */
-class RunExecutableListener extends AbstractSolrEventListener {
+class RunExecutableListener extends AbstractSolrEventListener implements SolrCoreAware {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
   
   public RunExecutableListener(SolrCore core) {
@@ -66,6 +68,15 @@ class RunExecutableListener extends AbstractSolrEventListener {
     if ("false".equals(args.get("wait")) || Boolean.FALSE.equals(args.get("wait"))) wait=false;
   }
 
+  @Override
+  public void inform(SolrCore core) {
+    if (!core.getCoreDescriptor().isConfigSetTrusted()) {
+      throw new SolrException(ErrorCode.UNAUTHORIZED, "The configset for this collection was uploaded without any authentication in place,"
+          + " and this operation is not available for collections with untrusted configsets. To have this component, re-upload the configset"
+          + " after enabling authentication and authorization.");
+    }
+  }
+
   /**
    * External executable listener.
    * 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/core/SolrCore.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index 9d77c7e..a6ba2dc 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -962,6 +962,7 @@ public final class SolrCore implements SolrInfoMBean, SolrMetricProducer, Closea
       // Finally tell anyone who wants to know
       resourceLoader.inform(resourceLoader);
       resourceLoader.inform(this); // last call before the latch is released.
+      this.updateHandler.informEventListeners(this);
     } catch (Throwable e) {
       // release the latch, otherwise we block trying to do the close. This
       // should be fine, since counting down on a latch of 0 is still fine

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
index 5d6f02c..d3489df 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
@@ -16,14 +16,20 @@
  */
 package org.apache.solr.handler.admin;
 
+import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
-
+import java.nio.charset.StandardCharsets;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
 
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.hadoop.fs.Path;
 import org.apache.solr.api.Api;
 import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.cloud.OverseerSolrResponse;
@@ -36,6 +42,7 @@ import org.apache.solr.common.cloud.ZkNodeProps;
 import org.apache.solr.common.params.ConfigSetParams;
 import org.apache.solr.common.params.ConfigSetParams.ConfigSetAction;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.Utils;
@@ -43,6 +50,10 @@ import org.apache.solr.core.CoreContainer;
 import org.apache.solr.handler.RequestHandlerBase;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.security.AuthenticationPlugin;
+import org.apache.solr.security.AuthorizationContext;
+import org.apache.solr.security.PermissionNameProvider;
+import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
 import static org.apache.solr.cloud.OverseerConfigSetMessageHandler.BASE_CONFIGSET;
 import static org.apache.solr.cloud.OverseerConfigSetMessageHandler.CONFIGSETS_ACTION_PREFIX;
@@ -59,7 +70,7 @@ import static org.apache.solr.cloud.Overseer.QUEUE_OPERATION;
 /**
  * A {@link org.apache.solr.request.SolrRequestHandler} for ConfigSets API requests.
  */
-public class ConfigSetsHandler extends RequestHandlerBase {
+public class ConfigSetsHandler extends RequestHandlerBase implements PermissionNameProvider {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
   protected final CoreContainer coreContainer;
   public static long DEFAULT_ZK_TIMEOUT = 300*1000;
@@ -95,6 +106,10 @@ public class ConfigSetsHandler extends RequestHandlerBase {
       ConfigSetAction action = ConfigSetAction.get(a);
       if (action == null)
         throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Unknown action: " + a);
+      if (action == ConfigSetAction.UPLOAD) {
+        handleConfigUploadRequest(req, rsp);
+        return;
+      }
       invokeAction(req, rsp, action);
     } else {
       throw new SolrException(ErrorCode.BAD_REQUEST, "action is a required param");
@@ -121,6 +136,68 @@ public class ConfigSetsHandler extends RequestHandlerBase {
     }
   }
 
+  private void handleConfigUploadRequest(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
+    String configSetName = req.getParams().get(NAME);
+    if (StringUtils.isBlank(configSetName)) {
+      throw new SolrException(ErrorCode.BAD_REQUEST,
+          "The configuration name should be provided in the \"name\" parameter");
+    }
+
+    SolrZkClient zkClient = coreContainer.getZkController().getZkClient();
+    String configPathInZk = ZkConfigManager.CONFIGS_ZKNODE + Path.SEPARATOR + configSetName;
+
+    if (zkClient.exists(configPathInZk, true)) {
+      throw new SolrException(ErrorCode.BAD_REQUEST,
+          "The configuration " + configSetName + " already exists in zookeeper");
+    }
+
+    Iterator<ContentStream> contentStreamsIterator = req.getContentStreams().iterator();
+
+    if (!contentStreamsIterator.hasNext()) {
+      throw new SolrException(ErrorCode.BAD_REQUEST,
+          "No stream found for the config data to be uploaded");
+    }
+
+    InputStream inputStream = contentStreamsIterator.next().getStream();
+
+    // Create a node for the configuration in zookeeper
+    boolean trusted = getTrusted(req);
+    zkClient.makePath(configPathInZk, ("{\"trusted\": " + Boolean.toString(trusted) + "}").
+        getBytes(StandardCharsets.UTF_8), true);
+
+    ZipInputStream zis = new ZipInputStream(inputStream, StandardCharsets.UTF_8);
+    ZipEntry zipEntry = null;
+    while ((zipEntry = zis.getNextEntry()) != null) {
+      String filePathInZk = configPathInZk + "/" + zipEntry.getName();
+      if (zipEntry.isDirectory()) {
+        zkClient.makePath(filePathInZk, true);
+      } else {
+        createZkNodeIfNotExistsAndSetData(zkClient, filePathInZk,
+            IOUtils.toByteArray(zis));
+      }
+    }
+    zis.close();
+  }
+
+  boolean getTrusted(SolrQueryRequest req) {
+    AuthenticationPlugin authcPlugin = coreContainer.getAuthenticationPlugin();
+    log.info("Trying to upload a configset. authcPlugin: {}, user principal: {}",
+        authcPlugin, req.getUserPrincipal());
+    if (authcPlugin != null && req.getUserPrincipal() != null) {
+      return true;
+    }
+    return false;
+  }
+
+  private void createZkNodeIfNotExistsAndSetData(SolrZkClient zkClient,
+      String filePathInZk, byte[] data) throws Exception {
+    if (!zkClient.exists(filePathInZk, true)) {
+      zkClient.create(filePathInZk, data, CreateMode.PERSISTENT, true);
+    } else {
+      zkClient.setData(filePathInZk, data, true);
+    }
+  }
+
   private void handleResponse(String operation, ZkNodeProps m,
       SolrQueryResponse rsp, long timeout) throws KeeperException, InterruptedException {
     long time = System.nanoTime();
@@ -226,4 +303,16 @@ public class ConfigSetsHandler extends RequestHandlerBase {
   public Boolean registerV2() {
     return Boolean.TRUE;
   }
+
+  @Override
+  public Name getPermissionName(AuthorizationContext ctx) {
+    switch (ctx.getHttpMethod()) {
+      case "GET":
+        return Name.CONFIG_READ_PERM;
+      case "POST":
+        return Name.CONFIG_EDIT_PERM;
+      default:
+        return null;
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java b/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java
index 000edee..a07aff2 100644
--- a/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java
+++ b/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java
@@ -42,6 +42,7 @@ import com.google.common.collect.Lists;
 import org.apache.commons.io.IOUtils;
 import org.apache.solr.common.EmptyEntityResolver;
 import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
@@ -134,6 +135,12 @@ public class XMLLoader extends ContentStreamLoader {
 
     String tr = req.getParams().get(CommonParams.TR,null);
     if(tr!=null) {
+      if (req.getCore().getCoreDescriptor().isConfigSetTrusted() == false) {
+          throw new SolrException(ErrorCode.UNAUTHORIZED, "The configset for this collection was uploaded without any authentication in place,"
+                  + " and this operation is not available for collections with untrusted configsets. To use this feature, re-upload the configset"
+                  + " after enabling authentication and authorization.");
+      }
+
       final Transformer t = getTransformer(tr,req);
       final DOMResult result = new DOMResult();
       

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/security/PermissionNameProvider.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/security/PermissionNameProvider.java b/solr/core/src/java/org/apache/solr/security/PermissionNameProvider.java
index 425be38..9f797487 100644
--- a/solr/core/src/java/org/apache/solr/security/PermissionNameProvider.java
+++ b/solr/core/src/java/org/apache/solr/security/PermissionNameProvider.java
@@ -40,7 +40,7 @@ public interface PermissionNameProvider {
     CORE_EDIT_PERM("core-admin-edit", null),
     READ_PERM("read", "*"),
     UPDATE_PERM("update", "*"),
-    CONFIG_EDIT_PERM("config-edit", "*"),
+    CONFIG_EDIT_PERM("config-edit", unmodifiableSet(new HashSet<>(asList("*", null)))),
     CONFIG_READ_PERM("config-read", "*"),
     SCHEMA_READ_PERM("schema-read", "*"),
     SCHEMA_EDIT_PERM("schema-edit", "*"),

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index 1cf8a3f..cbfb0d5 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -72,6 +72,22 @@ public abstract class UpdateHandler implements SolrInfoMBean {
     }
   }
 
+  /**
+   * Call the {@link SolrCoreAware#inform(SolrCore)} on all the applicable registered listeners.
+   */
+  public void informEventListeners(SolrCore core) {
+    for (SolrEventListener listener: commitCallbacks) {
+      if (listener instanceof SolrCoreAware) {
+        ((SolrCoreAware) listener).inform(core);
+      }
+    }
+    for (SolrEventListener listener: optimizeCallbacks) {
+      if (listener instanceof SolrCoreAware) {
+        ((SolrCoreAware) listener).inform(core);
+      }
+    }
+  }
+
   protected void callPostCommitCallbacks() {
     for (SolrEventListener listener : commitCallbacks) {
       listener.postCommit();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/java/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactory.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactory.java
index 72da7b5..190501d 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactory.java
@@ -17,6 +17,7 @@
 package org.apache.solr.update.processor;
 
 import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.core.SolrCore;
@@ -217,6 +218,11 @@ public class StatelessScriptUpdateProcessorFactory extends UpdateRequestProcesso
 
   @Override
   public void inform(SolrCore core) {
+    if (!core.getCoreDescriptor().isConfigSetTrusted()) {
+      throw new SolrException(ErrorCode.UNAUTHORIZED, "The configset for this collection was uploaded without any authentication in place,"
+          + " and this operation is not available for collections with untrusted configsets. To use this component, re-upload the configset"
+          + " after enabling authentication and authorization.");
+    }
     resourceLoader = core.getResourceLoader();
 
     // test that our engines & scripts are valid

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test-files/solr/configsets/upload/dih-script-transformer/managed-schema
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/upload/dih-script-transformer/managed-schema b/solr/core/src/test-files/solr/configsets/upload/dih-script-transformer/managed-schema
new file mode 100644
index 0000000..9e2f947
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/upload/dih-script-transformer/managed-schema
@@ -0,0 +1,25 @@
+<?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" version="1.1">
+ <types>
+  <fieldType name="string" class="solr.StrField"/>
+ </types>
+ <fields>
+   <dynamicField name="*" type="string" indexed="true" stored="true" />
+ </fields>
+</schema>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test-files/solr/configsets/upload/dih-script-transformer/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/upload/dih-script-transformer/solrconfig.xml b/solr/core/src/test-files/solr/configsets/upload/dih-script-transformer/solrconfig.xml
new file mode 100644
index 0000000..82d0cc9
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/upload/dih-script-transformer/solrconfig.xml
@@ -0,0 +1,61 @@
+<?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.
+-->
+
+<!-- This is a "kitchen sink" config file that tests can use.
+     When writting a new test, feel free to add *new* items (plugins,
+     config options, etc...) as long as they don't break any existing
+     tests.  if you need to test something esoteric please add a new
+     "solrconfig-your-esoteric-purpose.xml" config file.
+
+     Note in particular that this test is used by MinimalSchemaTest so
+     Anything added to this file needs to work correctly even if there
+     is now uniqueKey or defaultSearch Field.
+  -->
+
+<config>
+
+  <dataDir>${solr.data.dir:}</dataDir>
+
+  <directoryFactory name="DirectoryFactory"
+                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
+
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+
+  <updateHandler class="solr.DirectUpdateHandler2">
+    <commitWithin>
+      <softCommit>${solr.commitwithin.softcommit:true}</softCommit>
+    </commitWithin>
+
+  </updateHandler>
+  <requestHandler name="/select" class="solr.SearchHandler">
+    <lst name="defaults">
+      <str name="echoParams">explicit</str>
+      <str name="indent">true</str>
+      <str name="df">text</str>
+    </lst>
+
+  </requestHandler>
+
+  <requestHandler name="/update/xslt"
+                   startup="lazy"
+                   class="solr.XsltUpdateRequestHandler"/>
+
+  <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
+</config>
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test-files/solr/configsets/upload/regular/managed-schema
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/upload/regular/managed-schema b/solr/core/src/test-files/solr/configsets/upload/regular/managed-schema
new file mode 100644
index 0000000..9e2f947
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/upload/regular/managed-schema
@@ -0,0 +1,25 @@
+<?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" version="1.1">
+ <types>
+  <fieldType name="string" class="solr.StrField"/>
+ </types>
+ <fields>
+   <dynamicField name="*" type="string" indexed="true" stored="true" />
+ </fields>
+</schema>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test-files/solr/configsets/upload/regular/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/upload/regular/solrconfig.xml b/solr/core/src/test-files/solr/configsets/upload/regular/solrconfig.xml
new file mode 100644
index 0000000..82d0cc9
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/upload/regular/solrconfig.xml
@@ -0,0 +1,61 @@
+<?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.
+-->
+
+<!-- This is a "kitchen sink" config file that tests can use.
+     When writting a new test, feel free to add *new* items (plugins,
+     config options, etc...) as long as they don't break any existing
+     tests.  if you need to test something esoteric please add a new
+     "solrconfig-your-esoteric-purpose.xml" config file.
+
+     Note in particular that this test is used by MinimalSchemaTest so
+     Anything added to this file needs to work correctly even if there
+     is now uniqueKey or defaultSearch Field.
+  -->
+
+<config>
+
+  <dataDir>${solr.data.dir:}</dataDir>
+
+  <directoryFactory name="DirectoryFactory"
+                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
+
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+
+  <updateHandler class="solr.DirectUpdateHandler2">
+    <commitWithin>
+      <softCommit>${solr.commitwithin.softcommit:true}</softCommit>
+    </commitWithin>
+
+  </updateHandler>
+  <requestHandler name="/select" class="solr.SearchHandler">
+    <lst name="defaults">
+      <str name="echoParams">explicit</str>
+      <str name="indent">true</str>
+      <str name="df">text</str>
+    </lst>
+
+  </requestHandler>
+
+  <requestHandler name="/update/xslt"
+                   startup="lazy"
+                   class="solr.XsltUpdateRequestHandler"/>
+
+  <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
+</config>
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test-files/solr/configsets/upload/regular/xslt/xsl-update-handler-test.xsl
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/upload/regular/xslt/xsl-update-handler-test.xsl b/solr/core/src/test-files/solr/configsets/upload/regular/xslt/xsl-update-handler-test.xsl
new file mode 100644
index 0000000..2e7359a
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/upload/regular/xslt/xsl-update-handler-test.xsl
@@ -0,0 +1,49 @@
+<?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.
+ -->
+
+<!-- 
+
+
+XSL transform used to test the XSLTUpdateRequestHandler.
+Transforms a test XML into standard Solr <add><doc/></add> format.
+
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+  <xsl:template match="/">
+    <add>
+      <xsl:apply-templates select="/random/document"/>
+    </add>
+  </xsl:template>
+
+  <xsl:template match="document">
+    <doc boost="5.5">
+      <xsl:apply-templates select="*"/>
+    </doc>
+  </xsl:template>
+
+  <xsl:template match="node">
+    <field name="{@name}">
+      <xsl:if test="@enhance!=''">
+        <xsl:attribute name="boost"><xsl:value-of select="@enhance"/></xsl:attribute>
+      </xsl:if>
+      <xsl:value-of select="@value"/>
+    </field>
+  </xsl:template>
+
+</xsl:stylesheet>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test-files/solr/configsets/upload/with-run-executable-listener/managed-schema
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/upload/with-run-executable-listener/managed-schema b/solr/core/src/test-files/solr/configsets/upload/with-run-executable-listener/managed-schema
new file mode 100644
index 0000000..9e2f947
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/upload/with-run-executable-listener/managed-schema
@@ -0,0 +1,25 @@
+<?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" version="1.1">
+ <types>
+  <fieldType name="string" class="solr.StrField"/>
+ </types>
+ <fields>
+   <dynamicField name="*" type="string" indexed="true" stored="true" />
+ </fields>
+</schema>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test-files/solr/configsets/upload/with-run-executable-listener/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/upload/with-run-executable-listener/solrconfig.xml b/solr/core/src/test-files/solr/configsets/upload/with-run-executable-listener/solrconfig.xml
new file mode 100644
index 0000000..4683841
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/upload/with-run-executable-listener/solrconfig.xml
@@ -0,0 +1,69 @@
+<?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.
+-->
+
+<!-- This is a "kitchen sink" config file that tests can use.
+     When writting a new test, feel free to add *new* items (plugins,
+     config options, etc...) as long as they don't break any existing
+     tests.  if you need to test something esoteric please add a new
+     "solrconfig-your-esoteric-purpose.xml" config file.
+
+     Note in particular that this test is used by MinimalSchemaTest so
+     Anything added to this file needs to work correctly even if there
+     is now uniqueKey or defaultSearch Field.
+  -->
+
+<config>
+
+  <dataDir>${solr.data.dir:}</dataDir>
+
+  <directoryFactory name="DirectoryFactory"
+                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
+
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+
+  <updateHandler class="solr.DirectUpdateHandler2">
+    <commitWithin>
+      <softCommit>${solr.commitwithin.softcommit:true}</softCommit>
+    </commitWithin>
+
+    <listener event="postCommit" class="solr.RunExecutableListener">
+      <str name="exe">/var/opt/resin3/__PORT__/scripts/solr/snapshooter</str>
+      <str name="dir">/var/opt/resin3/__PORT__</str>
+      <bool name="wait">true</bool>
+      <arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
+      <arr name="env"> <str>MYVAR=val1</str> </arr>
+    </listener>
+
+  </updateHandler>
+  <requestHandler name="/select" class="solr.SearchHandler">
+    <lst name="defaults">
+      <str name="echoParams">explicit</str>
+      <str name="indent">true</str>
+      <str name="df">text</str>
+    </lst>
+
+  </requestHandler>
+
+  <requestHandler name="/update/xslt"
+                   startup="lazy"
+                   class="solr.XsltUpdateRequestHandler"/>
+
+  <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
+</config>
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test-files/solr/configsets/upload/with-script-processor/managed-schema
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/upload/with-script-processor/managed-schema b/solr/core/src/test-files/solr/configsets/upload/with-script-processor/managed-schema
new file mode 100644
index 0000000..9e2f947
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/upload/with-script-processor/managed-schema
@@ -0,0 +1,25 @@
+<?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" version="1.1">
+ <types>
+  <fieldType name="string" class="solr.StrField"/>
+ </types>
+ <fields>
+   <dynamicField name="*" type="string" indexed="true" stored="true" />
+ </fields>
+</schema>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test-files/solr/configsets/upload/with-script-processor/missleading.extension.updateprocessor.js.txt
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/upload/with-script-processor/missleading.extension.updateprocessor.js.txt b/solr/core/src/test-files/solr/configsets/upload/with-script-processor/missleading.extension.updateprocessor.js.txt
new file mode 100644
index 0000000..984e1d8
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/upload/with-script-processor/missleading.extension.updateprocessor.js.txt
@@ -0,0 +1,23 @@
+function processAdd(cmd) {
+    // Integer.valueOf is needed here to get a tru java object, because 
+    // all javascript numbers are floating point (ie: java.lang.Double)
+    cmd.getSolrInputDocument().addField("script_added_i", 
+                                        java.lang.Integer.valueOf(42));
+    cmd.getSolrInputDocument().addField("script_added_d", 42.3);
+    
+}
+function processDelete() {
+    // NOOP
+}
+function processCommit() { 
+    // NOOP
+}
+function processRollback() {
+    // NOOP
+}
+function processMergeIndexes() {
+    // NOOP
+}
+function finish() { 
+    // NOOP
+}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test-files/solr/configsets/upload/with-script-processor/solrconfig.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/configsets/upload/with-script-processor/solrconfig.xml b/solr/core/src/test-files/solr/configsets/upload/with-script-processor/solrconfig.xml
new file mode 100644
index 0000000..1c62889
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/upload/with-script-processor/solrconfig.xml
@@ -0,0 +1,65 @@
+<?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.
+-->
+
+<!-- This is a "kitchen sink" config file that tests can use.
+     When writting a new test, feel free to add *new* items (plugins,
+     config options, etc...) as long as they don't break any existing
+     tests.  if you need to test something esoteric please add a new
+     "solrconfig-your-esoteric-purpose.xml" config file.
+
+     Note in particular that this test is used by MinimalSchemaTest so
+     Anything added to this file needs to work correctly even if there
+     is now uniqueKey or defaultSearch Field.
+  -->
+
+<config>
+
+  <dataDir>${solr.data.dir:}</dataDir>
+
+  <directoryFactory name="DirectoryFactory"
+                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
+
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+
+  <updateHandler class="solr.DirectUpdateHandler2">
+    <commitWithin>
+      <softCommit>${solr.commitwithin.softcommit:true}</softCommit>
+    </commitWithin>
+
+  </updateHandler>
+  <requestHandler name="/select" class="solr.SearchHandler">
+    <lst name="defaults">
+      <str name="echoParams">explicit</str>
+      <str name="indent">true</str>
+      <str name="df">text</str>
+    </lst>
+
+  </requestHandler>
+
+  <updateRequestProcessorChain name="force-script-engine" default="true">
+    <processor class="solr.StatelessScriptUpdateProcessorFactory">
+      <str name="engine">javascript</str>
+      <str name="script">missleading.extension.updateprocessor.js.txt</str>
+    </processor>
+    <processor class="solr.RunUpdateProcessorFactory" />
+  </updateRequestProcessorChain>
+
+  <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
+</config>
+

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
index 2027a6d..6c20ccc 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
@@ -16,50 +16,96 @@
  */
 package org.apache.solr.cloud;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.solr.cloud.OverseerConfigSetMessageHandler.BASE_CONFIGSET;
+import static org.apache.solr.common.params.CommonParams.NAME;
+import static org.apache.solr.core.ConfigSetProperties.DEFAULT_FILENAME;
+
 import java.io.ByteArrayInputStream;
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.StringReader;
+import java.lang.invoke.MethodHandles;
+import java.net.URI;
+import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Deque;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
 
-import com.google.common.collect.ImmutableMap;
 import org.apache.commons.io.FileUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.message.BasicHeader;
+import org.apache.http.util.EntityUtils;
+import org.apache.lucene.util.TestUtil;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.SolrQuery;
+import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.embedded.JettySolrRunner;
+import org.apache.solr.client.solrj.impl.CloudSolrClient;
+import org.apache.solr.client.solrj.impl.HttpClientUtil;
+import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Create;
 import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Delete;
-import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.List;
+import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.client.solrj.response.CollectionAdminResponse;
 import org.apache.solr.client.solrj.response.ConfigSetAdminResponse;
+import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrException.ErrorCode;
+import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkConfigManager;
+import org.apache.solr.common.cloud.ZkStateReader;
+import org.apache.solr.common.params.CollectionParams.CollectionAction;
+import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ConfigSetParams;
 import org.apache.solr.common.params.ConfigSetParams.ConfigSetAction;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.Base64;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.ConfigSetProperties;
+import org.apache.solr.core.TestDynamicLoading;
+import org.apache.solr.security.BasicAuthIntegrationTest;
+import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.noggit.JSONParser;
+import org.noggit.ObjectBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import static org.apache.solr.cloud.OverseerConfigSetMessageHandler.BASE_CONFIGSET;
-import static org.apache.solr.common.params.CommonParams.NAME;
-import static org.apache.solr.core.ConfigSetProperties.DEFAULT_FILENAME;
+import com.google.common.collect.ImmutableMap;
 
 /**
  * Simple ConfigSets API tests on user errors and simple success cases.
  */
 public class TestConfigSetsAPI extends SolrTestCaseJ4 {
 
+  private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
   private MiniSolrCloudCluster solrCluster;
 
   @Override
@@ -232,6 +278,349 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
   }
 
   @Test
+  public void testUploadErrors() throws Exception {
+    final SolrClient solrClient = new HttpSolrClient(
+        solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
+
+    ByteBuffer emptyData = ByteBuffer.allocate(0);
+
+    // Checking error when no configuration name is specified in request
+    Map map = postDataAndGetResponse(solrCluster.getSolrClient(),
+        solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString()
+        + "/admin/configs?action=UPLOAD&wt=json", emptyData, null, null);
+    assertNotNull(map);
+    long statusCode = (long) getObjectByPath(map, false,
+        Arrays.asList("responseHeader", "status"));
+    assertEquals(400l, statusCode);
+
+    SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
+        AbstractZkTestCase.TIMEOUT, 45000, null);
+
+    // Create dummy config files in zookeeper
+    zkClient.makePath("/configs/myconf", true);
+    zkClient.create("/configs/myconf/firstDummyFile",
+        "first dummy content".getBytes(StandardCharsets.UTF_8), CreateMode.PERSISTENT, true);
+    zkClient.create("/configs/myconf/anotherDummyFile",
+        "second dummy content".getBytes(StandardCharsets.UTF_8), CreateMode.PERSISTENT, true);
+
+    // Checking error when configuration name specified already exists
+    map = postDataAndGetResponse(solrCluster.getSolrClient(),
+        solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString()
+        + "/admin/configs?action=UPLOAD&wt=json&name=myconf", emptyData, null, null);
+    assertNotNull(map);
+    statusCode = (long) getObjectByPath(map, false,
+        Arrays.asList("responseHeader", "status"));
+    assertEquals(400l, statusCode);
+    assertTrue("Expected file doesnt exist in zk. It's possibly overwritten",
+        zkClient.exists("/configs/myconf/firstDummyFile", true));
+    assertTrue("Expected file doesnt exist in zk. It's possibly overwritten",
+        zkClient.exists("/configs/myconf/anotherDummyFile", true));
+
+    zkClient.close();
+    solrClient.close();
+  }
+
+  @Test
+  public void testUpload() throws Exception {
+    String suffix = "-untrusted";
+    uploadConfigSet("regular", suffix, null, null);
+    // try to create a collection with the uploaded configset
+    createCollection("newcollection", "regular" + suffix, 1, 1, solrCluster.getSolrClient());
+    xsltRequest("newcollection");
+  }
+  
+  @Test
+  public void testUploadWithRunExecutableListener() throws Exception {
+    String suffix = "-untrusted";
+    uploadConfigSet("with-run-executable-listener", suffix, null, null);
+    // try to create a collection with the uploaded configset
+    CollectionAdminResponse resp = createCollection("newcollection3", "with-run-executable-listener" + suffix, 1, 1, solrCluster.getSolrClient());
+    log.info("Client saw errors: "+resp.getErrorMessages());
+    assertTrue(resp.getErrorMessages() != null && resp.getErrorMessages().size() > 0);
+    assertTrue(resp.getErrorMessages().getVal(0).
+        contains("The configset for this collection was uploaded without any authentication"));
+  }
+
+  @Test
+  public void testUploadWithScriptUpdateProcessor() throws Exception {
+    for (boolean withAuthorization: Arrays.asList(false, true)) {
+      String suffix;
+      if (withAuthorization) {
+        suffix = "-trusted";
+        protectConfigsHandler();
+        uploadConfigSet("with-script-processor", suffix, "solr", "SolrRocks");
+      } else {
+        suffix = "-untrusted";
+        uploadConfigSet("with-script-processor", suffix, null, null);
+      }
+      // try to create a collection with the uploaded configset
+      CollectionAdminResponse resp = createCollection("newcollection2", "with-script-processor"+suffix,
+          1, 1, solrCluster.getSolrClient());
+      
+      if (withAuthorization) {
+        scriptRequest("newcollection2");
+      } else {
+        log.info("Client saw errors: "+resp.getErrorMessages());
+        assertTrue(resp.getErrorMessages() != null && resp.getErrorMessages().size() > 0);
+        assertTrue(resp.getErrorMessages().getVal(0).
+            contains("The configset for this collection was uploaded without any authentication"));
+      }
+    }
+  }
+
+  protected SolrZkClient zkClient() {
+    ZkStateReader reader = solrCluster.getSolrClient().getZkStateReader();
+    if (reader == null)
+      solrCluster.getSolrClient().connect();
+    return solrCluster.getSolrClient().getZkStateReader().getZkClient();
+  }
+
+  private void protectConfigsHandler() throws Exception {
+    String authcPrefix = "/admin/authentication";
+    String authzPrefix = "/admin/authorization";
+
+    String securityJson = "{\n" +
+        "  'authentication':{\n" +
+        "    'class':'solr.BasicAuthPlugin',\n" +
+        "    'credentials':{'solr':'orwp2Ghgj39lmnrZOTm7Qtre1VqHFDfwAEzr0ApbN3Y= Ju5osoAqOX8iafhWpPP01E5P+sg8tK8tHON7rCYZRRw='}},\n" +
+        "  'authorization':{\n" +
+        "    'class':'solr.RuleBasedAuthorizationPlugin',\n" +
+        "    'user-role':{'solr':'admin'},\n" +
+        "    'permissions':[{'name':'security-edit','role':'admin'}, {'name':'config-edit','role':'admin'}]}}";
+
+    HttpClient cl = null;
+    try {
+      cl = HttpClientUtil.createClient(null);
+      JettySolrRunner randomJetty = solrCluster.getRandomJetty(random());
+      String baseUrl = randomJetty.getBaseUrl().toString();
+
+      zkClient().setData("/security.json", securityJson.replaceAll("'", "\"").getBytes(UTF_8), true);
+      BasicAuthIntegrationTest.verifySecurityStatus(cl, baseUrl + authcPrefix, "authentication/class", "solr.BasicAuthPlugin", 50);
+      BasicAuthIntegrationTest.verifySecurityStatus(cl, baseUrl + authzPrefix, "authorization/class", "solr.RuleBasedAuthorizationPlugin", 50);
+    } finally {
+      if (cl != null) {
+        HttpClientUtil.close(cl);
+      }
+    }
+    Thread.sleep(5000); // TODO: Without a delay, the test fails. Some problem with Authc/Authz framework?
+  }
+
+  private void uploadConfigSet(String configSetName, String suffix, String username, String password) throws Exception {
+    // Read zipped sample config
+    ByteBuffer sampleZippedConfig = TestDynamicLoading
+        .getFileContent(
+            createTempZipFile("solr/configsets/upload/"+configSetName), false);
+
+    SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
+        AbstractZkTestCase.TIMEOUT, 45000, null);
+    try {
+      ZkConfigManager configManager = new ZkConfigManager(zkClient);
+      assertFalse(configManager.configExists(configSetName+suffix));
+
+      Map map = postDataAndGetResponse(solrCluster.getSolrClient(),
+          solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString() + "/admin/configs?action=UPLOAD&wt=json&name="+configSetName+suffix,
+          sampleZippedConfig, username, password);
+      assertNotNull(map);
+      long statusCode = (long) getObjectByPath(map, false, Arrays.asList("responseHeader", "status"));
+      assertEquals(0l, statusCode);
+
+      assertTrue("managed-schema file should have been uploaded",
+          zkClient.exists("/configs/"+configSetName+suffix+"/managed-schema", true));
+      assertTrue("managed-schema file contents on zookeeper are not exactly same as that of the file uploaded in config",
+          Arrays.equals(zkClient.getData("/configs/"+configSetName+suffix+"/managed-schema", null, null, true),
+              readFile("solr/configsets/upload/"+configSetName+"/managed-schema")));
+
+      assertTrue("solrconfig.xml file should have been uploaded",
+          zkClient.exists("/configs/"+configSetName+suffix+"/solrconfig.xml", true));
+      byte data[] = zkClient.getData("/configs/"+configSetName+suffix, null, null, true);
+      //assertEquals("{\"trusted\": false}", new String(data, StandardCharsets.UTF_8));
+      assertTrue("solrconfig.xml file contents on zookeeper are not exactly same as that of the file uploaded in config",
+          Arrays.equals(zkClient.getData("/configs/"+configSetName+suffix+"/solrconfig.xml", null, null, true),
+              readFile("solr/configsets/upload/"+configSetName+"/solrconfig.xml")));
+    } finally {
+      zkClient.close();
+    }
+  }
+  
+  /**
+   * Create a zip file (in the temp directory) containing all the files within the specified directory
+   * and return the path for the zip file.
+   */
+  private String createTempZipFile(String directoryPath) {
+    File zipFile = new File(solrCluster.getBaseDir().toFile().getAbsolutePath() +
+        File.separator + TestUtil.randomSimpleString(random(), 6, 8) + ".zip");
+
+    File directory = TestDynamicLoading.getFile(directoryPath);
+    log.info("Directory: "+directory.getAbsolutePath());
+    try {
+      zip (directory, zipFile);
+      log.info("Zipfile: "+zipFile.getAbsolutePath());
+      return zipFile.getAbsolutePath();
+    } catch (IOException e) {
+      throw new RuntimeException(e);
+    }
+  }
+
+  private static void zip(File directory, File zipfile) throws IOException {
+    URI base = directory.toURI();
+    Deque<File> queue = new LinkedList<File>();
+    queue.push(directory);
+    OutputStream out = new FileOutputStream(zipfile);
+    ZipOutputStream zout = new ZipOutputStream(out);
+    try {
+      while (!queue.isEmpty()) {
+        directory = queue.pop();
+        for (File kid : directory.listFiles()) {
+          String name = base.relativize(kid.toURI()).getPath();
+          if (kid.isDirectory()) {
+            queue.push(kid);
+            name = name.endsWith("/") ? name : name + "/";
+            zout.putNextEntry(new ZipEntry(name));
+          } else {
+            zout.putNextEntry(new ZipEntry(name));
+
+            InputStream in = new FileInputStream(kid);
+            try {
+              byte[] buffer = new byte[1024];
+              while (true) {
+                int readCount = in.read(buffer);
+                if (readCount < 0) {
+                  break;
+                }
+                zout.write(buffer, 0, readCount);
+              }
+            } finally {
+              in.close();
+            }
+
+            zout.closeEntry();
+          }
+        }
+      }
+    } finally {
+      zout.close();
+    }
+  }
+
+  private void xsltRequest(String collection) throws SolrServerException, IOException {
+    String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
+    try (HttpSolrClient client = new HttpSolrClient(baseUrl + "/" + collection)) {
+      String xml = 
+          "<random>" +
+              " <document>" +
+              "  <node name=\"id\" value=\"12345\"/>" +
+              "  <node name=\"name\" value=\"kitten\"/>" +
+              "  <node name=\"text\" enhance=\"3\" value=\"some other day\"/>" +
+              "  <node name=\"title\" enhance=\"4\" value=\"A story\"/>" +
+              "  <node name=\"timestamp\" enhance=\"5\" value=\"2011-07-01T10:31:57.140Z\"/>" +
+              " </document>" +
+              "</random>";
+
+      SolrQuery query = new SolrQuery();
+      query.setQuery( "*:*" );//for anything
+      query.add("qt","/update");
+      query.add(CommonParams.TR, "xsl-update-handler-test.xsl");
+      query.add("stream.body", xml);
+      query.add("commit", "true");
+      try {
+        client.query(query);
+        fail("This should've returned a 401.");
+      } catch (SolrException ex) {
+        assertEquals(ErrorCode.UNAUTHORIZED.code, ex.code());
+      }
+    }
+  }
+  
+  public void scriptRequest(String collection) throws SolrServerException, IOException {
+    SolrClient client = solrCluster.getSolrClient();
+    SolrInputDocument doc = sdoc("id", "4055", "subject", "Solr");
+    client.add(collection, doc);
+    client.commit(collection);
+
+    assertEquals("42", client.query(collection, params("q", "*:*")).getResults().get(0).get("script_added_i"));
+  }
+
+  protected CollectionAdminResponse createCollection(String collectionName, String confSetName, int numShards,
+      int replicationFactor, SolrClient client)  throws SolrServerException, IOException {
+    ModifiableSolrParams params = new ModifiableSolrParams();
+    params.set("action", CollectionAction.CREATE.toString());
+    params.set("collection.configName", confSetName);
+    params.set("name", collectionName);
+    params.set("numShards", numShards);
+    params.set("replicationFactor", replicationFactor);
+    SolrRequest request = new QueryRequest(params);
+    request.setPath("/admin/collections");
+
+    CollectionAdminResponse res = new CollectionAdminResponse();
+    res.setResponse(client.request(request));
+    return res;
+  }
+  
+  public static Map postDataAndGetResponse(CloudSolrClient cloudClient,
+      String uri, ByteBuffer bytarr, String username, String password) throws IOException {
+    HttpPost httpPost = null;
+    HttpEntity entity;
+    String response = null;
+    Map m = null;
+    
+    try {
+      httpPost = new HttpPost(uri);
+      
+      if (username != null) {
+        String userPass = username + ":" + password;
+        String encoded = Base64.byteArrayToBase64(userPass.getBytes(UTF_8));
+        BasicHeader header = new BasicHeader("Authorization", "Basic " + encoded);
+        httpPost.setHeader(header);
+      }
+
+      httpPost.setHeader("Content-Type", "application/octet-stream");
+      httpPost.setEntity(new ByteArrayEntity(bytarr.array(), bytarr
+          .arrayOffset(), bytarr.limit()));
+      entity = cloudClient.getLbClient().getHttpClient().execute(httpPost)
+          .getEntity();
+      try {
+        response = EntityUtils.toString(entity, StandardCharsets.UTF_8);
+        m = (Map) ObjectBuilder.getVal(new JSONParser(
+            new StringReader(response)));
+      } catch (JSONParser.ParseException e) {
+        fail(e.getMessage());
+      }
+    } finally {
+      httpPost.releaseConnection();
+    }
+    return m;
+  }
+
+  private static Object getObjectByPath(Map root, boolean onlyPrimitive, java.util.List<String> hierarchy) {
+    Map obj = root;
+    for (int i = 0; i < hierarchy.size(); i++) {
+      String s = hierarchy.get(i);
+      if (i < hierarchy.size() - 1) {
+        if (!(obj.get(s) instanceof Map)) return null;
+        obj = (Map) obj.get(s);
+        if (obj == null) return null;
+      } else {
+        Object val = obj.get(s);
+        if (onlyPrimitive && val instanceof Map) {
+          return null;
+        }
+        return val;
+      }
+    }
+
+    return false;
+  }
+
+  private byte[] readFile(String fname) throws IOException {
+    byte[] buf = null;
+    try (FileInputStream fis = new FileInputStream(getFile(fname))) {
+      buf = new byte[fis.available()];
+      fis.read(buf);
+    }
+    return buf;
+  }
+  
+  @Test
   public void testDeleteErrors() throws Exception {
     final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString();
     final SolrClient solrClient = getHttpSolrClient(baseUrl);
@@ -304,7 +693,7 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 {
         AbstractZkTestCase.TIMEOUT, AbstractZkTestCase.TIMEOUT, null);
     try {
       // test empty
-      List list = new List();
+      ConfigSetAdminRequest.List list = new ConfigSetAdminRequest.List();
       ConfigSetAdminResponse.List response = list.process(solrClient);
       Collection<String> actualConfigSets = response.getConfigSets();
       assertEquals(0, actualConfigSets.size());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java b/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
index b6097ab..7d2f174 100644
--- a/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
+++ b/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
@@ -218,7 +218,7 @@ public class TestCodecSupport extends SolrTestCaseJ4 {
     
     try {
       c = new SolrCore(new CoreDescriptor(h.getCoreContainer(), newCoreName, testSolrHome.resolve(newCoreName)), 
-          new ConfigSet("fakeConfigset", config, schema, null));
+          new ConfigSet("fakeConfigset", config, schema, null, true));
       assertNull(h.getCoreContainer().registerCore(newCoreName, c, false, false));
       h.coreName = newCoreName;
       assertEquals("We are not using the correct core", "solrconfig_codec2.xml", h.getCore().getConfigResource());

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java b/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
index 306b4b2..9bbe09f 100644
--- a/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
+++ b/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
@@ -25,6 +25,7 @@ import org.apache.solr.util.SimplePostTool;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -257,8 +258,16 @@ public class TestDynamicLoading extends AbstractFullDistribZkTestBase {
   }
 
   public static ByteBuffer getFileContent(String f) throws IOException {
+    return getFileContent(f, true);
+  }
+  /**
+   * @param loadFromClassPath if true, it will look in the classpath to find the file,
+   *        otherwise load from absolute filesystem path.
+   */
+  public static ByteBuffer getFileContent(String f, boolean loadFromClassPath) throws IOException {
     ByteBuffer jar;
-    try (FileInputStream fis = new FileInputStream(getFile(f))) {
+    File file = loadFromClassPath ? getFile(f): new File(f);
+    try (FileInputStream fis = new FileInputStream(file)) {
       byte[] buf = new byte[fis.available()];
       fis.read(buf);
       jar = ByteBuffer.wrap(buf);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/solrj/src/java/org/apache/solr/common/params/ConfigSetParams.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/ConfigSetParams.java b/solr/solrj/src/java/org/apache/solr/common/params/ConfigSetParams.java
index 49c39ec..fde7e57 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/ConfigSetParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/ConfigSetParams.java
@@ -27,6 +27,7 @@ public interface ConfigSetParams
 
   public enum ConfigSetAction {
     CREATE,
+    UPLOAD,
     DELETE,
     LIST;
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6b0217b7/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
index e8a0c08..15895d3 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
@@ -470,7 +470,11 @@ public class MiniSolrCloudCluster {
       }
     }
   }
-  
+
+  public Path getBaseDir() {
+    return baseDir;
+  }
+
   public CloudSolrClient getSolrClient() {
     return solrClient;
   }


[39/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9835: TestInjection.waitForInSyncWithLeader() should rely on commit point of searcher

Posted by cp...@apache.org.
SOLR-9835: TestInjection.waitForInSyncWithLeader() should rely on commit point of searcher


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

Branch: refs/heads/jira/solr-6203
Commit: d156aafd1d5cfda2d7b56e4c73c6ddee43d48e91
Parents: 013601f
Author: Cao Manh Dat <da...@apache.org>
Authored: Mon Mar 27 16:44:22 2017 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Mon Mar 27 16:44:22 2017 +0700

----------------------------------------------------------------------
 .../org/apache/solr/util/TestInjection.java     | 25 +++++++++++++-------
 1 file changed, 17 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d156aafd/solr/core/src/java/org/apache/solr/util/TestInjection.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/TestInjection.java b/solr/core/src/java/org/apache/solr/util/TestInjection.java
index 97291a1..15f5b3d 100644
--- a/solr/core/src/java/org/apache/solr/util/TestInjection.java
+++ b/solr/core/src/java/org/apache/solr/util/TestInjection.java
@@ -28,6 +28,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.lucene.search.IndexSearcher;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.cloud.ZkController;
@@ -43,6 +44,7 @@ import org.apache.solr.common.util.SuppressForbidden;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.ReplicationHandler;
+import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.update.SolrIndexWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -363,7 +365,8 @@ public class TestInjection {
   @SuppressForbidden(reason = "Need currentTimeMillis, because COMMIT_TIME_MSEC_KEY use currentTimeMillis as value")
   public static boolean waitForInSyncWithLeader(SolrCore core, ZkController zkController, String collection, String shardId) throws InterruptedException {
     if (waitForReplicasInSync == null) return true;
-
+    log.info("Start waiting for replica in sync with leader");
+    long currentTime = System.currentTimeMillis();
     Pair<Boolean,Integer> pair = parseValue(waitForReplicasInSync);
     boolean enabled = pair.first();
     if (!enabled) return true;
@@ -380,14 +383,20 @@ public class TestInjection {
 
           NamedList<Object> response = leaderClient.request(new QueryRequest(params));
           long leaderVersion = (long) ((NamedList)response.get("details")).get("indexVersion");
-
-          String localVersion = core.getDeletionPolicy().getLatestCommit().getUserData().get(SolrIndexWriter.COMMIT_TIME_MSEC_KEY);
-          if (localVersion == null && leaderVersion == 0 && !core.getUpdateHandler().getUpdateLog().hasUncommittedChanges()) return true;
-          if (localVersion != null && Long.parseLong(localVersion) == leaderVersion && (leaderVersion >= t || i >= 6)) {
-            return true;
-          } else {
-            Thread.sleep(500);
+          RefCounted<SolrIndexSearcher> searcher = core.getSearcher();
+          try {
+            String localVersion = searcher.get().getIndexReader().getIndexCommit().getUserData().get(SolrIndexWriter.COMMIT_TIME_MSEC_KEY);
+            if (localVersion == null && leaderVersion == 0 && !core.getUpdateHandler().getUpdateLog().hasUncommittedChanges()) return true;
+            if (localVersion != null && Long.parseLong(localVersion) == leaderVersion && (leaderVersion >= t || i >= 6)) {
+              log.info("Waiting time for replica in sync with leader: {}", System.currentTimeMillis()-currentTime);
+              return true;
+            } else {
+              Thread.sleep(500);
+            }
+          } finally {
+            searcher.decref();
           }
+
         }
       }
 


[02/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-twitter-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-twitter-LICENSE-ASL.txt b/solr/licenses/kite-morphlines-twitter-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/kite-morphlines-twitter-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/kite-morphlines-twitter-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/kite-morphlines-twitter-NOTICE.txt b/solr/licenses/kite-morphlines-twitter-NOTICE.txt
deleted file mode 100644
index e66f597..0000000
--- a/solr/licenses/kite-morphlines-twitter-NOTICE.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This product includes software developed by Cloudera, Inc.
-(http://www.cloudera.com/).
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by
-Saxonica (http://www.saxonica.com/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/leveldb-0.7.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/leveldb-0.7.jar.sha1 b/solr/licenses/leveldb-0.7.jar.sha1
deleted file mode 100644
index 1260de3..0000000
--- a/solr/licenses/leveldb-0.7.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-77df3093388129dea3b2b8758ddd3c7bf36bc22c

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/leveldb-LICENSE-BSD.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/leveldb-LICENSE-BSD.txt b/solr/licenses/leveldb-LICENSE-BSD.txt
deleted file mode 100644
index e6ffec6..0000000
--- a/solr/licenses/leveldb-LICENSE-BSD.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2011 The LevelDB Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-   * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/leveldb-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/leveldb-NOTICE.txt b/solr/licenses/leveldb-NOTICE.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/leveldb-api-0.7.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/leveldb-api-0.7.jar.sha1 b/solr/licenses/leveldb-api-0.7.jar.sha1
deleted file mode 100644
index 5d04d63..0000000
--- a/solr/licenses/leveldb-api-0.7.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e620acc87a8162f668a5ea62cbe0561560c50044

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/leveldb-api-LICENSE-BSD.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/leveldb-api-LICENSE-BSD.txt b/solr/licenses/leveldb-api-LICENSE-BSD.txt
deleted file mode 100644
index e6ffec6..0000000
--- a/solr/licenses/leveldb-api-LICENSE-BSD.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2011 The LevelDB Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-   * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/leveldb-api-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/leveldb-api-NOTICE.txt b/solr/licenses/leveldb-api-NOTICE.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/leveldbjni-1.8.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/leveldbjni-1.8.jar.sha1 b/solr/licenses/leveldbjni-1.8.jar.sha1
deleted file mode 100644
index 374f17b..0000000
--- a/solr/licenses/leveldbjni-1.8.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-80abdcbefef2d6ad8975b5f909e9412ab71b84c9

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/leveldbjni-LICENSE-BSD.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/leveldbjni-LICENSE-BSD.txt b/solr/licenses/leveldbjni-LICENSE-BSD.txt
deleted file mode 100644
index e6ffec6..0000000
--- a/solr/licenses/leveldbjni-LICENSE-BSD.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2011 The LevelDB Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-   * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-   * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/leveldbjni-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/leveldbjni-NOTICE.txt b/solr/licenses/leveldbjni-NOTICE.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/metrics-healthchecks-3.1.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/metrics-healthchecks-3.1.2.jar.sha1 b/solr/licenses/metrics-healthchecks-3.1.2.jar.sha1
deleted file mode 100644
index 946c8d8..0000000
--- a/solr/licenses/metrics-healthchecks-3.1.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e32a01aa7ca4070676e22e707272422baa0f7ecd

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/metrics-healthchecks-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/metrics-healthchecks-LICENSE-ASL.txt b/solr/licenses/metrics-healthchecks-LICENSE-ASL.txt
deleted file mode 100644
index e4ba404..0000000
--- a/solr/licenses/metrics-healthchecks-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 2010-2012 Coda Hale and Yammer, Inc.
-
-   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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/metrics-healthchecks-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/metrics-healthchecks-NOTICE.txt b/solr/licenses/metrics-healthchecks-NOTICE.txt
deleted file mode 100644
index 4fe83de..0000000
--- a/solr/licenses/metrics-healthchecks-NOTICE.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Metrics
-Copyright 2010-2013 Coda Hale and Yammer, Inc.
-
-This product includes software developed by Coda Hale and Yammer, Inc.
-
-This product includes code derived from the JSR-166 project (ThreadLocalRandom, Striped64,
-LongAdder), which was released with the following comments:
-
-    Written by Doug Lea with assistance from members of JCP JSR-166
-    Expert Group and released to the public domain, as explained at
-    http://creativecommons.org/publicdomain/zero/1.0/

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/mrunit-1.0.0-hadoop2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/mrunit-1.0.0-hadoop2.jar.sha1 b/solr/licenses/mrunit-1.0.0-hadoop2.jar.sha1
deleted file mode 100644
index 6146ee0..0000000
--- a/solr/licenses/mrunit-1.0.0-hadoop2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-d6e4cce578b705508bfd7fd3fafbccc3adb33e83

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/mrunit-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/mrunit-LICENSE-ASL.txt b/solr/licenses/mrunit-LICENSE-ASL.txt
deleted file mode 100644
index 75f307a..0000000
--- a/solr/licenses/mrunit-LICENSE-ASL.txt
+++ /dev/null
@@ -1,479 +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.
-
-
-==========================================================================
-The Apache License, Version 2.0 applies to the following libraries:
-commons-logging
-
-==========================================================================
-The following license applies to the junit library
---------------------------------------------------------------------------
-
-Common Public License Version 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
-LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
-CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and
-documentation distributed under this Agreement, and
-
-b) in the case of each subsequent Contributor:
-
-i) changes to the Program, and
-
-ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and are
-distributed by that particular Contributor. A Contribution 'originates' from a
-Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to
-the Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents " mean patent claims licensable by a Contributor which are
-necessarily infringed by the use or sale of its Contribution alone or when
-combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement,
-including all Contributors.
-
-2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free copyright license to
-reproduce, prepare derivative works of, publicly display, publicly perform,
-distribute and sublicense the Contribution of such Contributor, if any, and such
-derivative works, in source code and object code form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
-Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form.
-This patent license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the
-Licensed Patents. The patent license shall not apply to any other combinations
-which include the Contribution. No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the licenses
-to its Contributions set forth herein, no assurances are provided by any
-Contributor that the Program does not infringe the patent or other intellectual
-property rights of any other entity. Each Contributor disclaims any liability to
-Recipient for claims brought by any other entity based on infringement of
-intellectual property rights or otherwise. As a condition to exercising the
-rights and licenses granted hereunder, each Recipient hereby assumes sole
-responsibility to secure any other intellectual property rights needed, if any.
-For example, if a third party patent license is required to allow Recipient to
-distribute the Program, it is Recipient's responsibility to acquire that license
-before distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient
-copyright rights in its Contribution, if any, to grant the copyright license set
-forth in this Agreement.
-
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under its
-own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title and
-non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for
-damages, including direct, indirect, special, incidental and consequential
-damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered
-by that Contributor alone and not by any other party; and
-
-iv) states that source code for the Program is available from such
-Contributor, and informs licensees how to obtain it in a reasonable manner on or
-through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the
-Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if
-any, in a manner that reasonably allows subsequent Recipients to identify the
-originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with
-respect to end users, business partners and the like. While this license is
-intended to facilitate the commercial use of the Program, the Contributor who
-includes the Program in a commercial product offering should do so in a manner
-which does not create potential liability for other Contributors. Therefore, if
-a Contributor includes the Program in a commercial product offering, such
-Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
-every other Contributor ("Indemnified Contributor") against any losses, damages
-and costs (collectively "Losses") arising from claims, lawsuits and other legal
-actions brought by a third party against the Indemnified Contributor to the
-extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to
-control, and cooperate with the Commercial Contributor in, the defense and any
-related settlement negotiations. The Indemnified Contributor may participate in
-any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product
-offering, Product X. That Contributor is then a Commercial Contributor. If that
-Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such
-Commercial Contributor's responsibility alone. Under this section, the
-Commercial Contributor would have to defend claims against the other
-Contributors related to those performance claims and warranties, and if a court
-requires any other Contributor to pay any damages as a result, the Commercial
-Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED 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. Each
-Recipient is solely responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its exercise of
-rights under this Agreement, including but not limited to the risks and costs of
-program errors, compliance with applicable laws, damage to or loss of data,
-programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
-CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
-PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable
-law, it shall not affect the validity or enforceability of the remainder of the
-terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such
-provision valid and enforceable.
-
-If Recipient institutes patent litigation against a Contributor with respect to
-a patent applicable to software (including a cross-claim or counterclaim in a
-lawsuit), then any patent licenses granted by that Contributor to such Recipient
-under this Agreement shall terminate as of the date such litigation is filed. In
-addition, if Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
-itself (excluding combinations of the Program with other software or hardware)
-infringes such Recipient's patent(s), then such Recipient's rights granted under
-Section 2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to
-comply with any of the material terms or conditions of this Agreement and does
-not cure such failure in a reasonable period of time after becoming aware of
-such noncompliance. If all Recipient's rights under this Agreement terminate,
-Recipient agrees to cease use and distribution of the Program as soon as
-reasonably practicable. However, Recipient's obligations under this Agreement
-and any licenses granted by Recipient relating to the Program shall continue and
-survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in
-order to avoid inconsistency the Agreement is copyrighted and may only be
-modified in the following manner. The Agreement Steward reserves the right to
-publish new versions (including revisions) of this Agreement from time to time.
-No one other than the Agreement Steward has the right to modify this Agreement.
-IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
-as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the Agreement
-under which it was received. In addition, after a new version of the Agreement
-is published, Contributor may elect to distribute the Program (including its
-Contributions) under the new version. Except as expressly stated in Sections
-2(a) and 2(b) above, Recipient receives no rights or licenses to the
-intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the
-intellectual property laws of the United States of America. No party to this
-Agreement will bring a legal action under this Agreement more than one year
-after the cause of action arose. Each party waives its rights to a jury trial in
-any resulting litigation.
-
-==========================================================================
-The following license applies to the mockito library
---------------------------------------------------------------------------
-
-The MIT License
-
-Copyright (c) 2007 Mockito contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-==========================================================================
-The following license applies to the hamcrest library
---------------------------------------------------------------------------
-
-The BSD 2-Clause License
-
-Copyright (c) 2000-2006, www.hamcrest.org
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
--   Redistributions of source code must retain the above copyright notice, this
-    list of conditions and the following disclaimer.
--   Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the following disclaimer in the documentation
-    and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/mrunit-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/mrunit-NOTICE.txt b/solr/licenses/mrunit-NOTICE.txt
deleted file mode 100644
index 2dfba62..0000000
--- a/solr/licenses/mrunit-NOTICE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Apache MRUnit
-Copyright 2011-2012 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/netty-3.2.4.Final.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/netty-3.2.4.Final.jar.sha1 b/solr/licenses/netty-3.2.4.Final.jar.sha1
deleted file mode 100644
index 7546dd3..0000000
--- a/solr/licenses/netty-3.2.4.Final.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-d0112ab5206185ca5701f88d25c84927bf53dde1

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/netty-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/netty-LICENSE-ASL.txt b/solr/licenses/netty-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/netty-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/netty-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/netty-NOTICE.txt b/solr/licenses/netty-NOTICE.txt
deleted file mode 100644
index dba84b1..0000000
--- a/solr/licenses/netty-NOTICE.txt
+++ /dev/null
@@ -1,98 +0,0 @@
-
-                            The Netty Project
-                            =================
-
-Please visit the Netty web site for more information:
-
-  * http://www.jboss.org/netty/
-
-Copyright 2009 Red Hat, Inc.
-
-Red Hat licenses this product to you under the Apache License, version 2.0 (the
-"License"); you may not use this product 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.
-
-Also, please refer to each LICENSE.<component>.txt file, which is located in
-the 'license' directory of the distribution file, for the license terms of the
-components that this product depends on.
-
--------------------------------------------------------------------------------
-This product contains the extensions to Java Collections Framework which has
-been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:
-
-  * LICENSE:
-    * license/LICENSE.jsr166y.txt (Public Domain)
-  * HOMEPAGE:
-    * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
-    * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/
-
-This product contains a modified version of Robert Harder's Public Domain
-Base64 Encoder and Decoder, which can be obtained at:
-
-  * LICENSE:
-    * license/LICENSE.base64.txt (Public Domain)
-  * HOMEPAGE:
-    * http://iharder.sourceforge.net/current/java/base64/
-
-This product contains a modified version of 'JZlib', a re-implementation of
-zlib in pure Java, which can be obtained at:
-
-  * LICENSE:
-    * license/LICENSE.jzlib.txt (BSD Style License)
-  * HOMEPAGE:
-    * http://www.jcraft.com/jzlib/
-
-This product optionally depends on 'Protocol Buffers', Google's data
-interchange format, which can be obtained at:
-
-  * LICENSE:
-    * license/LICENSE.protobuf.txt (New BSD License)
-  * HOMEPAGE:
-    * http://code.google.com/p/protobuf/
-
-This product optionally depends on 'SLF4J', a simple logging facade for Java,
-which can be obtained at:
-
-  * LICENSE:
-    * license/LICENSE.slf4j.txt (MIT License)
-  * HOMEPAGE:
-    * http://www.slf4j.org/
-
-This product optionally depends on 'Apache Commons Logging', a logging
-framework, which can be obtained at:
-
-  * LICENSE:
-    * license/LICENSE.commons-logging.txt (Apache License 2.0)
-  * HOMEPAGE:
-    * http://commons.apache.org/logging/
-
-This product optionally depends on 'Apache Log4J', a logging framework,
-which can be obtained at:
-
-  * LICENSE:
-    * license/LICENSE.log4j.txt (Apache License 2.0)
-  * HOMEPAGE:
-    * http://logging.apache.org/log4j/
-
-This product optionally depends on 'JBoss Logging', a logging framework,
-which can be obtained at:
-
-  * LICENSE:
-    * license/LICENSE.jboss-logging.txt (GNU LGPL 2.1)
-  * HOMEPAGE:
-    * http://anonsvn.jboss.org/repos/common/common-logging-spi/
-
-This product optionally depends on 'Apache Felix', an open source OSGi
-framework implementation, which can be obtained at:
-
-  * LICENSE:
-    * license/LICENSE.felix.txt (Apache License 2.0)
-  * HOMEPAGE:
-    * http://felix.apache.org/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/paranamer-2.3.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/paranamer-2.3.jar.sha1 b/solr/licenses/paranamer-2.3.jar.sha1
deleted file mode 100644
index 21c0b26..0000000
--- a/solr/licenses/paranamer-2.3.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4a85963a752c0a2f715c3924bfc686865e7e1bc6

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/paranamer-LICENSE-BSD.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/paranamer-LICENSE-BSD.txt b/solr/licenses/paranamer-LICENSE-BSD.txt
deleted file mode 100644
index fca1847..0000000
--- a/solr/licenses/paranamer-LICENSE-BSD.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-[ ParaNamer used to be 'Pubic Domain', but since it includes a small piece of ASM it is now the same license as that: BSD ]
-
- Copyright (c) 2006 Paul Hammant & ThoughtWorks Inc
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
- 3. Neither the name of the copyright holders nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/paranamer-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/paranamer-NOTICE.txt b/solr/licenses/paranamer-NOTICE.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/rome-1.6.1.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/rome-1.6.1.jar.sha1 b/solr/licenses/rome-1.6.1.jar.sha1
deleted file mode 100644
index 4b54e7c..0000000
--- a/solr/licenses/rome-1.6.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-fb844f8d9b7c1e324d150ca6ebb791cfd9b33243

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/snappy-java-1.0.5.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/snappy-java-1.0.5.jar.sha1 b/solr/licenses/snappy-java-1.0.5.jar.sha1
deleted file mode 100644
index 68bfb2e..0000000
--- a/solr/licenses/snappy-java-1.0.5.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-10cb4550360a0ec6b80f09a5209d00b6058e82bf


[40/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9835: Fixed precommit failure.

Posted by cp...@apache.org.
SOLR-9835: Fixed precommit failure.


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

Branch: refs/heads/jira/solr-6203
Commit: cd66a5ff51b7a9ff55edaa9fb5d7df5af42707e4
Parents: d156aaf
Author: Shalin Shekhar Mangar <sh...@apache.org>
Authored: Mon Mar 27 20:06:01 2017 +0530
Committer: Shalin Shekhar Mangar <sh...@apache.org>
Committed: Mon Mar 27 20:06:01 2017 +0530

----------------------------------------------------------------------
 solr/core/src/java/org/apache/solr/util/TestInjection.java | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cd66a5ff/solr/core/src/java/org/apache/solr/util/TestInjection.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/TestInjection.java b/solr/core/src/java/org/apache/solr/util/TestInjection.java
index 15f5b3d..1299273 100644
--- a/solr/core/src/java/org/apache/solr/util/TestInjection.java
+++ b/solr/core/src/java/org/apache/solr/util/TestInjection.java
@@ -28,7 +28,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.lucene.search.IndexSearcher;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.cloud.ZkController;


[19/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ru.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ru.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ru.txt
deleted file mode 100644
index 6430769..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_ru.txt
+++ /dev/null
@@ -1,241 +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.
-
- | 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 `\u0451' is translated to `\u0435'.
-
-\u0438              | and
-\u0432              | in/into
-\u0432\u043e             | alternative form
-\u043d\u0435             | not
-\u0447\u0442\u043e            | what/that
-\u043e\u043d             | he
-\u043d\u0430             | on/onto
-\u044f              | i
-\u0441              | from
-\u0441\u043e             | alternative form
-\u043a\u0430\u043a            | how
-\u0430              | milder form of `no' (but)
-\u0442\u043e             | conjunction and form of `that'
-\u0432\u0441\u0435            | all
-\u043e\u043d\u0430            | she
-\u0442\u0430\u043a            | so, thus
-\u0435\u0433\u043e            | him
-\u043d\u043e             | but
-\u0434\u0430             | yes/and
-\u0442\u044b             | thou
-\u043a              | towards, by
-\u0443              | around, chez
-\u0436\u0435             | intensifier particle
-\u0432\u044b             | you
-\u0437\u0430             | beyond, behind
-\u0431\u044b             | conditional/subj. particle
-\u043f\u043e             | up to, along
-\u0442\u043e\u043b\u044c\u043a\u043e         | only
-\u0435\u0435             | her
-\u043c\u043d\u0435            | to me
-\u0431\u044b\u043b\u043e           | it was
-\u0432\u043e\u0442            | here is/are, particle
-\u043e\u0442             | away from
-\u043c\u0435\u043d\u044f           | me
-\u0435\u0449\u0435            | still, yet, more
-\u043d\u0435\u0442            | no, there isnt/arent
-\u043e              | about
-\u0438\u0437             | out of
-\u0435\u043c\u0443            | to him
-\u0442\u0435\u043f\u0435\u0440\u044c         | now
-\u043a\u043e\u0433\u0434\u0430          | when
-\u0434\u0430\u0436\u0435           | even
-\u043d\u0443             | so, well
-\u0432\u0434\u0440\u0443\u0433          | suddenly
-\u043b\u0438             | interrogative particle
-\u0435\u0441\u043b\u0438           | if
-\u0443\u0436\u0435            | already, but homonym of `narrower'
-\u0438\u043b\u0438            | or
-\u043d\u0438             | neither
-\u0431\u044b\u0442\u044c           | to be
-\u0431\u044b\u043b            | he was
-\u043d\u0435\u0433\u043e           | prepositional form of \u0435\u0433\u043e
-\u0434\u043e             | up to
-\u0432\u0430\u0441            | you accusative
-\u043d\u0438\u0431\u0443\u0434\u044c         | indef. suffix preceded by hyphen
-\u043e\u043f\u044f\u0442\u044c          | again
-\u0443\u0436             | already, but homonym of `adder'
-\u0432\u0430\u043c            | to you
-\u0441\u043a\u0430\u0437\u0430\u043b         | he said
-\u0432\u0435\u0434\u044c           | particle `after all'
-\u0442\u0430\u043c            | there
-\u043f\u043e\u0442\u043e\u043c          | then
-\u0441\u0435\u0431\u044f           | oneself
-\u043d\u0438\u0447\u0435\u0433\u043e         | nothing
-\u0435\u0439             | to her
-\u043c\u043e\u0436\u0435\u0442          | usually with `\u0431\u044b\u0442\u044c' as `maybe'
-\u043e\u043d\u0438            | they
-\u0442\u0443\u0442            | here
-\u0433\u0434\u0435            | where
-\u0435\u0441\u0442\u044c           | there is/are
-\u043d\u0430\u0434\u043e           | got to, must
-\u043d\u0435\u0439            | prepositional form of  \u0435\u0439
-\u0434\u043b\u044f            | for
-\u043c\u044b             | we
-\u0442\u0435\u0431\u044f           | thee
-\u0438\u0445             | them, their
-\u0447\u0435\u043c            | than
-\u0431\u044b\u043b\u0430           | she was
-\u0441\u0430\u043c            | self
-\u0447\u0442\u043e\u0431           | in order to
-\u0431\u0435\u0437            | without
-\u0431\u0443\u0434\u0442\u043e          | as if
-\u0447\u0435\u043b\u043e\u0432\u0435\u043a        | man, person, one
-\u0447\u0435\u0433\u043e           | genitive form of `what'
-\u0440\u0430\u0437            | once
-\u0442\u043e\u0436\u0435           | also
-\u0441\u0435\u0431\u0435           | to oneself
-\u043f\u043e\u0434            | beneath
-\u0436\u0438\u0437\u043d\u044c          | life
-\u0431\u0443\u0434\u0435\u0442          | will be
-\u0436              | short form of intensifer particle `\u0436\u0435'
-\u0442\u043e\u0433\u0434\u0430          | then
-\u043a\u0442\u043e            | who
-\u044d\u0442\u043e\u0442           | this
-\u0433\u043e\u0432\u043e\u0440\u0438\u043b        | was saying
-\u0442\u043e\u0433\u043e           | genitive form of `that'
-\u043f\u043e\u0442\u043e\u043c\u0443         | for that reason
-\u044d\u0442\u043e\u0433\u043e          | genitive form of `this'
-\u043a\u0430\u043a\u043e\u0439          | which
-\u0441\u043e\u0432\u0441\u0435\u043c         | altogether
-\u043d\u0438\u043c            | prepositional form of `\u0435\u0433\u043e', `\u043e\u043d\u0438'
-\u0437\u0434\u0435\u0441\u044c          | here
-\u044d\u0442\u043e\u043c           | prepositional form of `\u044d\u0442\u043e\u0442'
-\u043e\u0434\u0438\u043d           | one
-\u043f\u043e\u0447\u0442\u0438          | almost
-\u043c\u043e\u0439            | my
-\u0442\u0435\u043c            | instrumental/dative plural of `\u0442\u043e\u0442', `\u0442\u043e'
-\u0447\u0442\u043e\u0431\u044b          | full form of `in order that'
-\u043d\u0435\u0435            | her (acc.)
-\u043a\u0430\u0436\u0435\u0442\u0441\u044f        | it seems
-\u0441\u0435\u0439\u0447\u0430\u0441         | now
-\u0431\u044b\u043b\u0438           | they were
-\u043a\u0443\u0434\u0430           | where to
-\u0437\u0430\u0447\u0435\u043c          | why
-\u0441\u043a\u0430\u0437\u0430\u0442\u044c        | to say
-\u0432\u0441\u0435\u0445           | all (acc., gen. preposn. plural)
-\u043d\u0438\u043a\u043e\u0433\u0434\u0430        | never
-\u0441\u0435\u0433\u043e\u0434\u043d\u044f        | today
-\u043c\u043e\u0436\u043d\u043e          | possible, one can
-\u043f\u0440\u0438            | by
-\u043d\u0430\u043a\u043e\u043d\u0435\u0446        | finally
-\u0434\u0432\u0430            | two
-\u043e\u0431             | alternative form of `\u043e', about
-\u0434\u0440\u0443\u0433\u043e\u0439         | another
-\u0445\u043e\u0442\u044c           | even
-\u043f\u043e\u0441\u043b\u0435          | after
-\u043d\u0430\u0434            | above
-\u0431\u043e\u043b\u044c\u0448\u0435         | more
-\u0442\u043e\u0442            | that one (masc.)
-\u0447\u0435\u0440\u0435\u0437          | across, in
-\u044d\u0442\u0438            | these
-\u043d\u0430\u0441            | us
-\u043f\u0440\u043e            | about
-\u0432\u0441\u0435\u0433\u043e          | in all, only, of all
-\u043d\u0438\u0445            | prepositional form of `\u043e\u043d\u0438' (they)
-\u043a\u0430\u043a\u0430\u044f          | which, feminine
-\u043c\u043d\u043e\u0433\u043e          | lots
-\u0440\u0430\u0437\u0432\u0435          | interrogative particle
-\u0441\u043a\u0430\u0437\u0430\u043b\u0430        | she said
-\u0442\u0440\u0438            | three
-\u044d\u0442\u0443            | this, acc. fem. sing.
-\u043c\u043e\u044f            | my, feminine
-\u0432\u043f\u0440\u043e\u0447\u0435\u043c        | moreover, besides
-\u0445\u043e\u0440\u043e\u0448\u043e         | good
-\u0441\u0432\u043e\u044e           | ones own, acc. fem. sing.
-\u044d\u0442\u043e\u0439           | oblique form of `\u044d\u0442\u0430', fem. `this'
-\u043f\u0435\u0440\u0435\u0434          | in front of
-\u0438\u043d\u043e\u0433\u0434\u0430         | sometimes
-\u043b\u0443\u0447\u0448\u0435          | better
-\u0447\u0443\u0442\u044c           | a little
-\u0442\u043e\u043c            | preposn. form of `that one'
-\u043d\u0435\u043b\u044c\u0437\u044f         | one must not
-\u0442\u0430\u043a\u043e\u0439          | such a one
-\u0438\u043c             | to them
-\u0431\u043e\u043b\u0435\u0435          | more
-\u0432\u0441\u0435\u0433\u0434\u0430         | always
-\u043a\u043e\u043d\u0435\u0447\u043d\u043e        | of course
-\u0432\u0441\u044e            | acc. fem. sing of `all'
-\u043c\u0435\u0436\u0434\u0443          | between
-
-
-  | b: some paradigms
-  |
-  | personal pronouns
-  |
-  | \u044f  \u043c\u0435\u043d\u044f  \u043c\u043d\u0435  \u043c\u043d\u043e\u0439  [\u043c\u043d\u043e\u044e]
-  | \u0442\u044b  \u0442\u0435\u0431\u044f  \u0442\u0435\u0431\u0435  \u0442\u043e\u0431\u043e\u0439  [\u0442\u043e\u0431\u043e\u044e]
-  | \u043e\u043d  \u0435\u0433\u043e  \u0435\u043c\u0443  \u0438\u043c  [\u043d\u0435\u0433\u043e, \u043d\u0435\u043c\u0443, \u043d\u0438\u043c]
-  | \u043e\u043d\u0430  \u0435\u0435  \u044d\u0438  \u0435\u044e  [\u043d\u0435\u0435, \u043d\u044d\u0438, \u043d\u0435\u044e]
-  | \u043e\u043d\u043e  \u0435\u0433\u043e  \u0435\u043c\u0443  \u0438\u043c  [\u043d\u0435\u0433\u043e, \u043d\u0435\u043c\u0443, \u043d\u0438\u043c]
-  |
-  | \u043c\u044b  \u043d\u0430\u0441  \u043d\u0430\u043c  \u043d\u0430\u043c\u0438
-  | \u0432\u044b  \u0432\u0430\u0441  \u0432\u0430\u043c  \u0432\u0430\u043c\u0438
-  | \u043e\u043d\u0438  \u0438\u0445  \u0438\u043c  \u0438\u043c\u0438  [\u043d\u0438\u0445, \u043d\u0438\u043c, \u043d\u0438\u043c\u0438]
-  |
-  |   \u0441\u0435\u0431\u044f  \u0441\u0435\u0431\u0435  \u0441\u043e\u0431\u043e\u0439   [\u0441\u043e\u0431\u043e\u044e]
-  |
-  | demonstrative pronouns: \u044d\u0442\u043e\u0442 (this), \u0442\u043e\u0442 (that)
-  |
-  | \u044d\u0442\u043e\u0442  \u044d\u0442\u0430  \u044d\u0442\u043e  \u044d\u0442\u0438
-  | \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u044b  \u044d\u0442\u043e  \u044d\u0442\u0438
-  | \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u0438\u0445
-  | \u044d\u0442\u043e\u043c\u0443  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u043c\u0443  \u044d\u0442\u0438\u043c
-  | \u044d\u0442\u0438\u043c  \u044d\u0442\u043e\u0439  \u044d\u0442\u0438\u043c  [\u044d\u0442\u043e\u044e]  \u044d\u0442\u0438\u043c\u0438
-  | \u044d\u0442\u043e\u043c  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u043c  \u044d\u0442\u0438\u0445
-  |
-  | \u0442\u043e\u0442  \u0442\u0430  \u0442\u043e  \u0442\u0435
-  | \u0442\u043e\u0433\u043e  \u0442\u0443  \u0442\u043e  \u0442\u0435
-  | \u0442\u043e\u0433\u043e  \u0442\u043e\u0439  \u0442\u043e\u0433\u043e  \u0442\u0435\u0445
-  | \u0442\u043e\u043c\u0443  \u0442\u043e\u0439  \u0442\u043e\u043c\u0443  \u0442\u0435\u043c
-  | \u0442\u0435\u043c  \u0442\u043e\u0439  \u0442\u0435\u043c  [\u0442\u043e\u044e]  \u0442\u0435\u043c\u0438
-  | \u0442\u043e\u043c  \u0442\u043e\u0439  \u0442\u043e\u043c  \u0442\u0435\u0445
-  |
-  | determinative pronouns
-  |
-  | (a) \u0432\u0435\u0441\u044c (all)
-  |
-  | \u0432\u0435\u0441\u044c  \u0432\u0441\u044f  \u0432\u0441\u0435  \u0432\u0441\u0435
-  | \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u044e  \u0432\u0441\u0435  \u0432\u0441\u0435
-  | \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u0435\u0445
-  | \u0432\u0441\u0435\u043c\u0443  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c\u0443  \u0432\u0441\u0435\u043c
-  | \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c  [\u0432\u0441\u0435\u044e]  \u0432\u0441\u0435\u043c\u0438
-  | \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0445
-  |
-  | (b) \u0441\u0430\u043c (himself etc)
-  |
-  | \u0441\u0430\u043c  \u0441\u0430\u043c\u0430  \u0441\u0430\u043c\u043e  \u0441\u0430\u043c\u0438
-  | \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0430\u043c\u0443  \u0441\u0430\u043c\u043e  \u0441\u0430\u043c\u0438\u0445
-  | \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u0433\u043e  \u0441\u0430\u043c\u0438\u0445
-  | \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u043c\u0443  \u0441\u0430\u043c\u0438\u043c
-  | \u0441\u0430\u043c\u0438\u043c  \u0441\u0430\u043c\u043e\u0439  \u0441\u0430\u043c\u0438\u043c  [\u0441\u0430\u043c\u043e\u044e]  \u0441\u0430\u043c\u0438\u043c\u0438
-  | \u0441\u0430\u043c\u043e\u043c \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u043c  \u0441\u0430\u043c\u0438\u0445
-  |
-  | stems of verbs `to be', `to have', `to do' and modal
-  |
-  | \u0431\u044b\u0442\u044c  \u0431\u044b  \u0431\u0443\u0434  \u0431\u044b\u0432  \u0435\u0441\u0442\u044c  \u0441\u0443\u0442\u044c
-  | \u0438\u043c\u0435
-  | \u0434\u0435\u043b
-  | \u043c\u043e\u0433   \u043c\u043e\u0436  \u043c\u043e\u0447\u044c
-  | \u0443\u043c\u0435
-  | \u0445\u043e\u0447  \u0445\u043e\u0442
-  | \u0434\u043e\u043b\u0436
-  | \u043c\u043e\u0436\u043d
-  | \u043d\u0443\u0436\u043d
-  | \u043d\u0435\u043b\u044c\u0437\u044f
-

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_th.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_th.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_th.txt
deleted file mode 100644
index 07f0fab..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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
-\u0e44\u0e27\u0e49
-\u0e44\u0e21\u0e48
-\u0e44\u0e1b
-\u0e44\u0e14\u0e49
-\u0e43\u0e2b\u0e49
-\u0e43\u0e19
-\u0e42\u0e14\u0e22
-\u0e41\u0e2b\u0e48\u0e07
-\u0e41\u0e25\u0e49\u0e27
-\u0e41\u0e25\u0e30
-\u0e41\u0e23\u0e01
-\u0e41\u0e1a\u0e1a
-\u0e41\u0e15\u0e48
-\u0e40\u0e2d\u0e07
-\u0e40\u0e2b\u0e47\u0e19
-\u0e40\u0e25\u0e22
-\u0e40\u0e23\u0e34\u0e48\u0e21
-\u0e40\u0e23\u0e32
-\u0e40\u0e21\u0e37\u0e48\u0e2d
-\u0e40\u0e1e\u0e37\u0e48\u0e2d
-\u0e40\u0e1e\u0e23\u0e32\u0e30
-\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23
-\u0e40\u0e1b\u0e47\u0e19
-\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22
-\u0e40\u0e1b\u0e34\u0e14
-\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01
-\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19
-\u0e40\u0e14\u0e35\u0e22\u0e27
-\u0e40\u0e0a\u0e48\u0e19
-\u0e40\u0e09\u0e1e\u0e32\u0e30
-\u0e40\u0e04\u0e22
-\u0e40\u0e02\u0e49\u0e32
-\u0e40\u0e02\u0e32
-\u0e2d\u0e35\u0e01
-\u0e2d\u0e32\u0e08
-\u0e2d\u0e30\u0e44\u0e23
-\u0e2d\u0e2d\u0e01
-\u0e2d\u0e22\u0e48\u0e32\u0e07
-\u0e2d\u0e22\u0e39\u0e48
-\u0e2d\u0e22\u0e32\u0e01
-\u0e2b\u0e32\u0e01
-\u0e2b\u0e25\u0e32\u0e22
-\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01
-\u0e2b\u0e25\u0e31\u0e07
-\u0e2b\u0e23\u0e37\u0e2d
-\u0e2b\u0e19\u0e36\u0e48\u0e07
-\u0e2a\u0e48\u0e27\u0e19
-\u0e2a\u0e48\u0e07
-\u0e2a\u0e38\u0e14
-\u0e2a\u0e4d\u0e32\u0e2b\u0e23\u0e31\u0e1a
-\u0e27\u0e48\u0e32
-\u0e27\u0e31\u0e19
-\u0e25\u0e07
-\u0e23\u0e48\u0e27\u0e21
-\u0e23\u0e32\u0e22
-\u0e23\u0e31\u0e1a
-\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07
-\u0e23\u0e27\u0e21
-\u0e22\u0e31\u0e07
-\u0e21\u0e35
-\u0e21\u0e32\u0e01
-\u0e21\u0e32
-\u0e1e\u0e23\u0e49\u0e2d\u0e21
-\u0e1e\u0e1a
-\u0e1c\u0e48\u0e32\u0e19
-\u0e1c\u0e25
-\u0e1a\u0e32\u0e07
-\u0e19\u0e48\u0e32
-\u0e19\u0e35\u0e49
-\u0e19\u0e4d\u0e32
-\u0e19\u0e31\u0e49\u0e19
-\u0e19\u0e31\u0e01
-\u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01
-\u0e17\u0e38\u0e01
-\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14
-\u0e17\u0e35\u0e48
-\u0e17\u0e4d\u0e32\u0e43\u0e2b\u0e49
-\u0e17\u0e4d\u0e32
-\u0e17\u0e32\u0e07
-\u0e17\u0e31\u0e49\u0e07\u0e19\u0e35\u0e49
-\u0e17\u0e31\u0e49\u0e07
-\u0e16\u0e49\u0e32
-\u0e16\u0e39\u0e01
-\u0e16\u0e36\u0e07
-\u0e15\u0e49\u0e2d\u0e07
-\u0e15\u0e48\u0e32\u0e07\u0e46
-\u0e15\u0e48\u0e32\u0e07
-\u0e15\u0e48\u0e2d
-\u0e15\u0e32\u0e21
-\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48
-\u0e15\u0e31\u0e49\u0e07
-\u0e14\u0e49\u0e32\u0e19
-\u0e14\u0e49\u0e27\u0e22
-\u0e14\u0e31\u0e07
-\u0e0b\u0e36\u0e48\u0e07
-\u0e0a\u0e48\u0e27\u0e07
-\u0e08\u0e36\u0e07
-\u0e08\u0e32\u0e01
-\u0e08\u0e31\u0e14
-\u0e08\u0e30
-\u0e04\u0e37\u0e2d
-\u0e04\u0e27\u0e32\u0e21
-\u0e04\u0e23\u0e31\u0e49\u0e07
-\u0e04\u0e07
-\u0e02\u0e36\u0e49\u0e19
-\u0e02\u0e2d\u0e07
-\u0e02\u0e2d
-\u0e02\u0e13\u0e30
-\u0e01\u0e48\u0e2d\u0e19
-\u0e01\u0e47
-\u0e01\u0e32\u0e23
-\u0e01\u0e31\u0e1a
-\u0e01\u0e31\u0e19
-\u0e01\u0e27\u0e48\u0e32
-\u0e01\u0e25\u0e48\u0e32\u0e27

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_tr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_tr.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/stopwords_tr.txt
deleted file mode 100644
index 84d9408..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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\u0131\u015f
-alt\u0131
-ama
-ancak
-arada
-asl\u0131nda
-ayr\u0131ca
-bana
-baz\u0131
-belki
-ben
-benden
-beni
-benim
-beri
-be\u015f
-bile
-bin
-bir
-bir�ok
-biri
-birka�
-birkez
-bir\u015fey
-bir\u015feyi
-biz
-bize
-bizden
-bizi
-bizim
-b�yle
-b�ylece
-bu
-buna
-bunda
-bundan
-bunlar
-bunlar\u0131
-bunlar\u0131n
-bunu
-bunun
-burada
-�ok
-��nk�
-da
-daha
-dahi
-de
-defa
-de\u011fil
-di\u011fer
-diye
-doksan
-dokuz
-dolay\u0131
-dolay\u0131s\u0131yla
-d�rt
-edecek
-eden
-ederek
-edilecek
-ediliyor
-edilmesi
-ediyor
-e\u011fer
-elli
-en
-etmesi
-etti
-etti\u011fi
-etti\u011fini
-gibi
-g�re
-halen
-hangi
-hatta
-hem
-hen�z
-hep
-hepsi
-her
-herhangi
-herkesin
-hi�
-hi�bir
-i�in
-iki
-ile
-ilgili
-ise
-i\u015fte
-itibaren
-itibariyle
-kadar
-kar\u015f\u0131n
-katrilyon
-kendi
-kendilerine
-kendini
-kendisi
-kendisine
-kendisini
-kez
-ki
-kim
-kimden
-kime
-kimi
-kimse
-k\u0131rk
-milyar
-milyon
-mu
-m�
-m\u0131
-nas\u0131l
-ne
-neden
-nedenle
-nerde
-nerede
-nereye
-niye
-ni�in
-o
-olan
-olarak
-oldu
-oldu\u011fu
-oldu\u011funu
-olduklar\u0131n\u0131
-olmad\u0131
-olmad\u0131\u011f\u0131
-olmak
-olmas\u0131
-olmayan
-olmaz
-olsa
-olsun
-olup
-olur
-olursa
-oluyor
-on
-ona
-ondan
-onlar
-onlardan
-onlar\u0131
-onlar\u0131n
-onu
-onun
-otuz
-oysa
-�yle
-pek
-ra\u011fmen
-sadece
-sanki
-sekiz
-seksen
-sen
-senden
-seni
-senin
-siz
-sizden
-sizi
-sizin
-\u015fey
-\u015feyden
-\u015feyi
-\u015feyler
-\u015f�yle
-\u015fu
-\u015funa
-\u015funda
-\u015fundan
-\u015funlar\u0131
-\u015funu
-taraf\u0131ndan
-trilyon
-t�m
-��
-�zere
-var
-vard\u0131
-ve
-veya
-ya
-yani
-yapacak
-yap\u0131lan
-yap\u0131lmas\u0131
-yap\u0131yor
-yapmak
-yapt\u0131
-yapt\u0131\u011f\u0131
-yapt\u0131\u011f\u0131n\u0131
-yapt\u0131klar\u0131
-yedi
-yerine
-yetmi\u015f
-yine
-yirmi
-yoksa
-y�z
-zaten

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/userdict_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/userdict_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/lang/userdict_ja.txt
deleted file mode 100644
index 6f0368e..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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
-\u65e5\u672c\u7d4c\u6e08\u65b0\u805e,\u65e5\u672c \u7d4c\u6e08 \u65b0\u805e,\u30cb\u30db\u30f3 \u30b1\u30a4\u30b6\u30a4 \u30b7\u30f3\u30d6\u30f3,\u30ab\u30b9\u30bf\u30e0\u540d\u8a5e
-\u95a2\u897f\u56fd\u969b\u7a7a\u6e2f,\u95a2\u897f \u56fd\u969b \u7a7a\u6e2f,\u30ab\u30f3\u30b5\u30a4 \u30b3\u30af\u30b5\u30a4 \u30af\u30a6\u30b3\u30a6,\u30ab\u30b9\u30bf\u30e0\u540d\u8a5e
-
-# Custom segmentation for compound katakana
-\u30c8\u30fc\u30c8\u30d0\u30c3\u30b0,\u30c8\u30fc\u30c8 \u30d0\u30c3\u30b0,\u30c8\u30fc\u30c8 \u30d0\u30c3\u30b0,\u304b\u305a\u30ab\u30ca\u540d\u8a5e
-\u30b7\u30e7\u30eb\u30c0\u30fc\u30d0\u30c3\u30b0,\u30b7\u30e7\u30eb\u30c0\u30fc \u30d0\u30c3\u30b0,\u30b7\u30e7\u30eb\u30c0\u30fc \u30d0\u30c3\u30b0,\u304b\u305a\u30ab\u30ca\u540d\u8a5e
-
-# Custom reading for former sumo wrestler
-\u671d\u9752\u9f8d,\u671d\u9752\u9f8d,\u30a2\u30b5\u30b7\u30e7\u30a6\u30ea\u30e5\u30a6,\u30ab\u30b9\u30bf\u30e0\u4eba\u540d

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/protwords.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/protwords.txt b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/protwords.txt
deleted file mode 100644
index 1dfc0ab..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/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
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/schema.xml b/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/schema.xml
deleted file mode 100644
index 1dee871..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/minimr/conf/schema.xml
+++ /dev/null
@@ -1,941 +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.
--->
-
-<!--  
- This is the Solr schema file. This file should be named "schema.xml" and
- should be in the conf directory under the solr home
- (i.e. ./solr/conf/schema.xml by default) 
- or located where the classloader for the Solr webapp can find it.
-
- This example schema is the recommended starting point for users.
- It should be kept correct and concise, usable out-of-the-box.
-
- For more information, on how to customize this file, please see
- http://wiki.apache.org/solr/SchemaXml
-
- PERFORMANCE NOTE: this schema includes many optional features and should not
- be used for benchmarking.  To improve performance one could
-  - set stored="false" for all fields possible (esp large fields) when you
-    only need to search on the field but don't need to return the original
-    value.
-  - set indexed="false" if you don't need to search on the field, but only
-    return the field as a result of searching on other indexed fields.
-  - remove all unneeded copyField statements
-  - for best index size and searching performance, set "index" to false
-    for all general text fields, use copyField to copy them to the
-    catchall "text" field, and use that for searching.
-  - For maximum indexing performance, use the ConcurrentUpdateSolrServer
-    java client.
-  - Remember to run the JVM in server mode, and use a higher logging level
-    that avoids logging every request
--->
-
-<schema name="example" version="1.6">
-  <!-- attribute "name" is the name of this schema and is only used for display purposes.
-       version="x.y" is Solr's version number for the schema syntax and 
-       semantics.  It should not normally be changed by applications.
-
-       1.0: multiValued attribute did not exist, all fields are multiValued 
-            by nature
-       1.1: multiValued attribute introduced, false by default 
-       1.2: omitTermFreqAndPositions attribute introduced, true by default 
-            except for text fields.
-       1.3: removed optional field compress feature
-       1.4: autoGeneratePhraseQueries attribute introduced to drive QueryParser
-            behavior when a single string produces multiple tokens.  Defaults 
-            to off for version >= 1.4
-       1.5: omitNorms defaults to true for primitive field types 
-            (int, float, boolean, string...)
-       1.6: useDocValuesAsStored defaults to true.
-     -->
-
-
-  <!-- Valid attributes for fields:
-    name: mandatory - the name for the field
-    type: mandatory - the name of a field type from the 
-      fieldTypes section
-    indexed: true if this field should be indexed (searchable or sortable)
-    stored: true if this field should be retrievable
-    docValues: true if this field should have doc values. Doc values are
-      useful for faceting, grouping, sorting and function queries. Although not
-      required, doc values will make the index faster to load, more
-      NRT-friendly and more memory-efficient. They however come with some
-      limitations: they are currently only supported by StrField, UUIDField
-      and all Trie*Fields, and depending on the field type, they might
-      require the field to be single-valued, be required or have a default
-      value (check the documentation of the field type you're interested in
-      for more information)
-    multiValued: true if this field may contain multiple values per document
-    omitNorms: (expert) set to true to omit the norms associated with
-      this field (this disables length normalization and index-time
-      boosting for the field, and saves some memory).  Only full-text
-      fields or fields that need an index-time boost need norms.
-      Norms are omitted for primitive (non-analyzed) types by default.
-    termVectors: [false] set to true to store the term vector for a
-      given field.
-      When using MoreLikeThis, fields used for similarity should be
-      stored for best performance.
-    termPositions: Store position information with the term vector.  
-      This will increase storage costs.
-    termOffsets: Store offset information with the term vector. This 
-      will increase storage costs.
-    required: The field is required.  It will throw an error if the
-      value does not exist
-    default: a value that should be used if no value is specified
-      when adding a document.
-  -->
-
-  <!-- field names should consist of alphanumeric or underscore characters only and
-     not start with a digit.  This is not currently strictly enforced,
-     but other field names will not have first class support from all components
-     and back compatibility is not guaranteed.  Names with both leading and
-     trailing underscores (e.g. _version_) are reserved.
-  -->
-
-  <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
-  <field name="user_friends_count" type="tint" indexed="true" stored="true"/>
-  <field name="user_location" type="lowercase" indexed="true" stored="true"/>
-  <field name="user_description" type="text_en" indexed="true" stored="false"/>
-  <field name="user_statuses_count" type="tint" indexed="true" stored="true"/>
-  <field name="user_followers_count" type="tint" indexed="true" stored="true"/>
-  <field name="user_name" type="text_en" indexed="true" stored="true"/>
-  <field name="user_screen_name" type="text_en" indexed="true" stored="true"/>
-  <field name="created_at" type="tdate" indexed="true" stored="true"/>
-  <field name="text" type="text_en" indexed="true" stored="true"/>
-  <field name="retweet_count" type="tint" indexed="true" stored="true"/>
-  <field name="retweeted" type="boolean" indexed="true" stored="false"/>
-  <field name="in_reply_to_user_id" type="long" indexed="true" stored="true"/>
-  <field name="source" type="lowercase" indexed="true" stored="true"/>
-  <field name="in_reply_to_status_id" type="long" indexed="true" stored="true" multiValued="true"/>
-  <field name="media_url_https" type="string" indexed="false" stored="true"/>
-  <field name="expanded_url" type="string" indexed="false" stored="true"/>
-
-  <!-- file metadata -->
-  <field name="file_download_url" type="string" indexed="false" stored="true"/>
-  <field name="file_upload_url" type="string" indexed="false" stored="true"/>
-  <field name="file_scheme" type="string" indexed="true" stored="true"/>
-  <field name="file_host" type="string" indexed="true" stored="true"/>
-  <field name="file_port" type="int" indexed="true" stored="true"/>
-  <field name="file_path" type="string" indexed="true" stored="true"/>
-  <field name="file_name" type="string" indexed="true" stored="true"/>
-  <field name="file_length" type="tlong" indexed="true" stored="true"/>
-  <field name="file_last_modified" type="tlong" indexed="true" stored="true"/>
-  <field name="file_owner" type="string" indexed="true" stored="true"/>
-  <field name="file_group" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_user" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_group" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_other" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_stickybit" type="boolean" indexed="true" stored="true"/>
-
-  <!-- tika metadata -->
-  <field name="content_type" type="lowercase" indexed="true" stored="true"/>
-
-  <field name="_version_" type="long" indexed="true" stored="true"/>
-  <dynamicField name="ignored_*" type="ignored"/>
-
-
-  <!-- Field to use to determine and enforce document uniqueness. 
-       Unless this field is marked with required="false", it will be a required field
-    -->
-  <uniqueKey>id</uniqueKey>
-
-  <!-- DEPRECATED: The defaultSearchField is consulted by various query parsers when
-   parsing a query string that isn't explicit about the field.  Machine (non-user)
-   generated queries are best made explicit, or they can use the "df" request parameter
-   which takes precedence over this.
-   Note: Un-commenting defaultSearchField will be insufficient if your request handler
-   in solrconfig.xml defines "df", which takes precedence. That would need to be removed.
-  <defaultSearchField>text</defaultSearchField> -->
-
-  <!-- DEPRECATED: The defaultOperator (AND|OR) is consulted by various query parsers
-   when parsing a query string to determine if a clause of the query should be marked as
-   required or optional, assuming the clause isn't already marked by some operator.
-   The default is OR, which is generally assumed so it is not a good idea to change it
-   globally here.  The "q.op" request parameter takes precedence over this.
-  <solrQueryParser defaultOperator="OR"/> -->
-
-  <!-- copyField commands copy one field to another at the time a document
-        is added to the index.  It's used either to index the same field differently,
-        or to add multiple fields to the same field for easier/faster searching.  -->
-
-
-  <!-- field type definitions. The "name" attribute is
-     just a label to be used by field definitions.  The "class"
-     attribute and any other attributes determine the real
-     behavior of the fieldType.
-       Class names starting with "solr" refer to java classes in a
-     standard package such as org.apache.solr.analysis
-  -->
-
-  <!-- The StrField type is not analyzed, but indexed/stored verbatim.
-     It supports doc values but in that case the field needs to be
-     single-valued and either required or have a default value.
-    -->
-  <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
-
-  <!-- boolean type: "true" or "false" -->
-  <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
-
-  <!-- sortMissingLast and sortMissingFirst attributes are optional attributes are
-       currently supported on types that are sorted internally as strings
-       and on numeric types.
-     This includes "string","boolean", and, as of 3.5 (and 4.x),
-     int, float, long, date, double, including the "Trie" variants.
-     - If sortMissingLast="true", then a sort on this field will cause documents
-       without the field to come after documents with the field,
-       regardless of the requested sort order (asc or desc).
-     - If sortMissingFirst="true", then a sort on this field will cause documents
-       without the field to come before documents with the field,
-       regardless of the requested sort order.
-     - If sortMissingLast="false" and sortMissingFirst="false" (the default),
-       then default lucene sorting will be used which places docs without the
-       field first in an ascending sort and last in a descending sort.
-  -->
-
-  <!--
-    Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
-
-    These fields support doc values, but they require the field to be
-    single-valued and either be required or have a default value.
-  -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!--
-   Numeric field types that index each value at various levels of precision
-   to accelerate range queries when the number of values between the range
-   endpoints is large. See the javadoc for LegacyNumericRangeQuery for internal
-   implementation details.
-
-   Smaller precisionStep values (specified in bits) will lead to more tokens
-   indexed per value, slightly larger index size, and faster range queries.
-   A precisionStep of 0 disables indexing at different precision levels.
-  -->
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
-
-  <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
-       is a more restricted form of the canonical representation of dateTime
-       http://www.w3.org/TR/xmlschema-2/#dateTime    
-       The trailing "Z" designates UTC time and is mandatory.
-       Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
-       All other components are mandatory.
-
-       Expressions can also be used to denote calculations that should be
-       performed relative to "NOW" to determine the value, ie...
-
-             NOW/HOUR
-                ... Round to the start of the current hour
-             NOW-1DAY
-                ... Exactly 1 day prior to now
-             NOW/DAY+6MONTHS+3DAYS
-                ... 6 months and 3 days in the future from the start of
-                    the current day
-                    
-       Consult the TrieDateField javadocs for more information.
-
-       Note: For faster range queries, consider the tdate type
-    -->
-  <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!-- A Trie based date field for faster date range queries and date faceting. -->
-  <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
-
-
-  <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
-  <fieldType name="binary" class="solr.BinaryField"/>
-
-  <!-- The "RandomSortField" is not used to store or search any
-       data.  You can declare fields of this type it in your schema
-       to generate pseudo-random orderings of your docs for sorting 
-       or function purposes.  The ordering is generated based on the field
-       name and the version of the index. As long as the index version
-       remains unchanged, and the same field name is reused,
-       the ordering of the docs will be consistent.  
-       If you want different psuedo-random orderings of documents,
-       for the same version of the index, use a dynamicField and
-       change the field name in the request.
-   -->
-  <fieldType name="random" class="solr.RandomSortField" indexed="true"/>
-
-  <!-- solr.TextField allows the specification of custom text analyzers
-       specified as a tokenizer and a list of token filters. Different
-       analyzers may be specified for indexing and querying.
-
-       The optional positionIncrementGap puts space between multiple fields of
-       this type on the same document, with the purpose of preventing false phrase
-       matching across fields.
-
-       For more info on customizing your analyzer chain, please see
-       http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
-   -->
-
-  <!-- One can also specify an existing Analyzer class that has a
-       default constructor via the class attribute on the analyzer element.
-       Example:
-  <fieldType name="text_greek" class="solr.TextField">
-    <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
-  </fieldType>
-  -->
-
-  <!-- A text field that only splits on whitespace for exact matching of words -->
-  <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A general text field that has reasonable, generic
-       cross-language defaults: it tokenizes with StandardTokenizer,
- removes stop words from case-insensitive "stopwords.txt"
- (empty by default), and down cases.  At query time only, it
- also applies synonyms. -->
-  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A text field with defaults appropriate for English: it
-       tokenizes with StandardTokenizer, removes English stop words
-       (lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
-       finally applies Porter's stemming.  The query time analyzer
-       also applies synonyms from synonyms.txt. -->
-  <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <!-- Case insensitive stop word removal. -->
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.EnglishPossessiveFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
-            <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      -->
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.EnglishPossessiveFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
-            <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      -->
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A text field with defaults appropriate for English, plus
- aggressive word-splitting and autophrase features enabled.
- This field is just like text_en, except it adds
- WordDelimiterFilter to enable splitting and matching of
- words on case-change, alpha numeric boundaries, and
- non-alphanumeric chars.  This means certain compound word
- cases will work, for example query "wi fi" will match
- document "WiFi" or "wi-fi".
-      -->
-  <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100"
-             autoGeneratePhraseQueries="true">
-    <analyzer type="index">
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <!-- Case insensitive stop word removal. -->
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
-              catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
-              catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
-       but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
-  <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100"
-             autoGeneratePhraseQueries="true">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
-              catenateNumbers="1" catenateAll="0"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-           possible with WordDelimiterFilter in conjuncton with stemming. -->
-      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Just like text_general except it reverses the characters of
- each token, to enable more efficient leading wildcard queries. -->
-  <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
-              maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- charFilter + WhitespaceTokenizer  -->
-  <!--
-  <fieldType name="text_char_norm" class="solr.TextField" positionIncrementGap="100" >
-    <analyzer>
-      <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-  -->
-
-  <!-- This is an example of using the KeywordTokenizer along
-       With various TokenFilterFactories to produce a sortable field
-       that does not include some properties of the source text
-    -->
-  <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
-    <analyzer>
-      <!-- KeywordTokenizer does no actual tokenizing, so the entire
-           input string is preserved as a single token
-        -->
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-      <!-- The LowerCase TokenFilter does what you expect, which can be
-           when you want your sorting to be case insensitive
-        -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <!-- The TrimFilter removes any leading or trailing whitespace -->
-      <filter class="solr.TrimFilterFactory"/>
-      <!-- The PatternReplaceFilter gives you the flexibility to use
-           Java Regular expression to replace any sequence of characters
-           matching a pattern with an arbitrary replacement string, 
-           which may include back references to portions of the original
-           string matched by the pattern.
-           
-           See the Java Regular Expression documentation for more
-           information on pattern and replacement string syntax.
-           
-           http://java.sun.com/j2se/1.6.0/docs/api/java/util/regex/package-summary.html
-        -->
-      <filter class="solr.PatternReplaceFilterFactory"
-              pattern="([^a-z])" replacement="" replace="all"
-      />
-    </analyzer>
-  </fieldType>
-
-  <fieldType name="phonetic" stored="false" indexed="true" class="solr.TextField">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
-    </analyzer>
-  </fieldType>
-
-  <fieldType name="payloads" stored="false" indexed="true" class="solr.TextField">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <!--
-      The DelimitedPayloadTokenFilter can put payloads on tokens... for example,
-      a token of "foo|1.4"  would be indexed as "foo" with a payload of 1.4f
-      Attributes of the DelimitedPayloadTokenFilterFactory : 
-       "delimiter" - a one character delimiter. Default is | (pipe)
- "encoder" - how to encode the following value into a playload
-    float -> org.apache.lucene.analysis.payloads.FloatEncoder,
-    integer -> o.a.l.a.p.IntegerEncoder
-    identity -> o.a.l.a.p.IdentityEncoder
-          Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor.
-       -->
-      <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- lowercases the entire field value, keeping it as a single token.  -->
-  <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- 
-    Example of using PathHierarchyTokenizerFactory at index time, so
-    queries for paths match documents at that path, or in descendent paths
-  -->
-  <fieldType name="descendent_path" class="solr.TextField">
-    <analyzer type="index">
-      <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-  <!-- 
-    Example of using PathHierarchyTokenizerFactory at query time, so
-    queries for paths match documents at that path, or in ancestor paths
-  -->
-  <fieldType name="ancestor_path" class="solr.TextField">
-    <analyzer type="index">
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- since fields of this type are by default not stored or indexed,
-       any data added to them will be ignored outright.  -->
-  <fieldType name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField"/>
-
-  <!-- This point type indexes the coordinates as separate fields (subFields)
-    If subFieldType is defined, it references a type, and a dynamic field
-    definition is created matching *___<typename>.  Alternately, if 
-    subFieldSuffix is defined, that is used to create the subFields.
-    Example: if subFieldType="double", then the coordinates would be
-      indexed in fields myloc_0___double,myloc_1___double.
-    Example: if subFieldSuffix="_d" then the coordinates would be indexed
-      in fields myloc_0_d,myloc_1_d
-    The subFields are an implementation detail of the fieldType, and end
-    users normally should not need to know about them.
-   -->
-  <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
-
-  <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
-  <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
-
-  <!-- An alternative geospatial field type new to Solr 4.  It supports multiValued and polygon shapes.
-    For more information about this and other Spatial fields new to Solr 4, see:
-    http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
-  -->
-  <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
-             geo="true" distErrPct="0.025" maxDistErr="0.001" distanceUnits="kilometers"/>
-
-  <!-- Money/currency field type. See http://wiki.apache.org/solr/MoneyFieldType
-       Parameters:
-         defaultCurrency: Specifies the default currency if none specified. Defaults to "USD"
-         precisionStep:   Specifies the precisionStep for the TrieLong field used for the amount
-         providerClass:   Lets you plug in other exchange provider backend:
-                          solr.FileExchangeRateProvider is the default and takes one parameter:
-                            currencyConfig: name of an xml file holding exchange rates
-                          solr.OpenExchangeRatesOrgProvider uses rates from openexchangerates.org:
-                            ratesFileLocation: URL or path to rates JSON file (default latest.json on the web)
-                            refreshInterval: Number of minutes between each rates fetch (default: 1440, min: 60)
-  -->
-  <fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD"
-             currencyConfig="currency.xml"/>
-
-
-  <!-- some examples for different languages (generally ordered by ISO code) -->
-
-  <!-- Arabic -->
-  <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- for any non-arabic -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt"/>
-      <!-- normalizes \ufeef to \ufef1, etc -->
-      <filter class="solr.ArabicNormalizationFilterFactory"/>
-      <filter class="solr.ArabicStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Bulgarian -->
-  <fieldType name="text_bg" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_bg.txt"/>
-      <filter class="solr.BulgarianStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Catalan -->
-  <fieldType name="text_ca" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ca.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ca.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Catalan"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- CJK bigram (see text_ja for a Japanese configuration using morphological analysis) -->
-  <fieldType name="text_cjk" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- normalize width before bigram, as e.g. half-width dakuten combine  -->
-      <filter class="solr.CJKWidthFilterFactory"/>
-      <!-- for any non-CJK -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.CJKBigramFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Czech -->
-  <fieldType name="text_cz" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_cz.txt"/>
-      <filter class="solr.CzechStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Danish -->
-  <fieldType name="text_da" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_da.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Danish"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- German -->
-  <fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" format="snowball"/>
-      <filter class="solr.GermanNormalizationFilterFactory"/>
-      <filter class="solr.GermanLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.GermanMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="German2"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Greek -->
-  <fieldType name="text_el" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- greek specific lowercase for sigma -->
-      <filter class="solr.GreekLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_el.txt"/>
-      <filter class="solr.GreekStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Spanish -->
-  <fieldType name="text_es" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_es.txt" format="snowball"/>
-      <filter class="solr.SpanishLightStemFilterFactory"/>
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Spanish"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Basque -->
-  <fieldType name="text_eu" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_eu.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Basque"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Persian -->
-  <fieldType name="text_fa" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <!-- for ZWNJ -->
-      <charFilter class="solr.PersianCharFilterFactory"/>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.ArabicNormalizationFilterFactory"/>
-      <filter class="solr.PersianNormalizationFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fa.txt"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Finnish -->
-  <fieldType name="text_fi" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fi.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Finnish"/>
-      <!-- less aggressive: <filter class="solr.FinnishLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- French -->
-  <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_fr.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fr.txt" format="snowball"/>
-      <filter class="solr.FrenchLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.FrenchMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="French"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Irish -->
-  <fieldType name="text_ga" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes d', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ga.txt"/>
-      <!-- removes n-, etc. position increments is intentionally false! -->
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/hyphenations_ga.txt"/>
-      <filter class="solr.IrishLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ga.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Irish"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Galician -->
-  <fieldType name="text_gl" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_gl.txt"/>
-      <filter class="solr.GalicianStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.GalicianMinimalStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Hindi -->
-  <fieldType name="text_hi" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <!-- normalizes unicode representation -->
-      <filter class="solr.IndicNormalizationFilterFactory"/>
-      <!-- normalizes variation in spelling -->
-      <filter class="solr.HindiNormalizationFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hi.txt"/>
-      <filter class="solr.HindiStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Hungarian -->
-  <fieldType name="text_hu" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hu.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Hungarian"/>
-      <!-- less aggressive: <filter class="solr.HungarianLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Armenian -->
-  <fieldType name="text_hy" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hy.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Armenian"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Indonesian -->
-  <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_id.txt"/>
-      <!-- for a less aggressive approach (only inflectional suffixes), set stemDerivational to false -->
-      <filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Italian -->
-  <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_it.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_it.txt" format="snowball"/>
-      <filter class="solr.ItalianLightStemFilterFactory"/>
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Italian"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Latvian -->
-  <fieldType name="text_lv" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_lv.txt"/>
-      <filter class="solr.LatvianStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Dutch -->
-  <fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_nl.txt" format="snowball"/>
-      <filter class="solr.StemmerOverrideFilterFactory" dictionary="lang/stemdict_nl.txt" ignoreCase="false"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Dutch"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Norwegian -->
-  <fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Norwegian"/>
-      <!-- less aggressive: <filter class="solr.NorwegianLightStemFilterFactory"/> -->
-      <!-- singular/plural: <filter class="solr.NorwegianMinimalStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Portuguese -->
-  <fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" format="snowball"/>
-      <filter class="solr.PortugueseLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.PortugueseMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Portuguese"/> -->
-      <!-- most aggressive: <filter class="solr.PortugueseStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Romanian -->
-  <fieldType name="text_ro" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ro.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Romanian"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Russian -->
-  <fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ru.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Russian"/>
-      <!-- less aggressive: <filter class="solr.RussianLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Swedish -->
-  <fieldType name="text_sv" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_sv.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Swedish"/>
-      <!-- less aggressive: <filter class="solr.SwedishLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Thai -->
-  <fieldType name="text_th" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.ThaiTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_th.txt"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Turkish -->
-  <fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.TurkishLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_tr.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Turkish"/>
-    </analyzer>
-  </fieldType>
-
-
-  <!-- Similarity is the scoring routine for each document vs. a query.
-       A custom Similarity or SimilarityFactory may be specified here, but 
-       the default is fine for most applications.  
-       For more info: http://wiki.apache.org/solr/SchemaXml#Similarity
-    -->
-  <!--
-     <similarity class="com.example.solr.CustomSimilarityFactory">
-       <str name="paramkey">param value</str>
-     </similarity>
-    -->
-
-</schema>


[06/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-shuffle-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-shuffle-LICENSE-ASL.txt b/solr/licenses/hadoop-mapreduce-client-shuffle-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-mapreduce-client-shuffle-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-shuffle-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-shuffle-NOTICE.txt b/solr/licenses/hadoop-mapreduce-client-shuffle-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-mapreduce-client-shuffle-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-api-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-api-2.7.2.jar.sha1 b/solr/licenses/hadoop-yarn-api-2.7.2.jar.sha1
deleted file mode 100644
index 4e5793d..0000000
--- a/solr/licenses/hadoop-yarn-api-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-373d35254d9e292a36c35f48f8a797359b86e1f7

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-api-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-api-LICENSE-ASL.txt b/solr/licenses/hadoop-yarn-api-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-yarn-api-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-api-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-api-NOTICE.txt b/solr/licenses/hadoop-yarn-api-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-yarn-api-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-client-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-client-2.7.2.jar.sha1 b/solr/licenses/hadoop-yarn-client-2.7.2.jar.sha1
deleted file mode 100644
index 56af937..0000000
--- a/solr/licenses/hadoop-yarn-client-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-6a626356170511385bac2ef4bd60eeea880dec46

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-client-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-client-LICENSE-ASL.txt b/solr/licenses/hadoop-yarn-client-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-yarn-client-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-client-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-client-NOTICE.txt b/solr/licenses/hadoop-yarn-client-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-yarn-client-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-common-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-common-2.7.2.jar.sha1 b/solr/licenses/hadoop-yarn-common-2.7.2.jar.sha1
deleted file mode 100644
index ea11097..0000000
--- a/solr/licenses/hadoop-yarn-common-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ab16767c5c34cfee6ac2780c7fea56207762d2c7

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-common-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-common-LICENSE-ASL.txt b/solr/licenses/hadoop-yarn-common-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-yarn-common-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-common-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-common-NOTICE.txt b/solr/licenses/hadoop-yarn-common-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-yarn-common-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-applicationhistoryservice-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-applicationhistoryservice-2.7.2.jar.sha1 b/solr/licenses/hadoop-yarn-server-applicationhistoryservice-2.7.2.jar.sha1
deleted file mode 100644
index 12bed4a..0000000
--- a/solr/licenses/hadoop-yarn-server-applicationhistoryservice-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5ecdbd3bcc77826e4f4491ce12df722252f04f68

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-applicationhistoryservice-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-applicationhistoryservice-LICENSE-ASL.txt b/solr/licenses/hadoop-yarn-server-applicationhistoryservice-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-yarn-server-applicationhistoryservice-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-applicationhistoryservice-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-applicationhistoryservice-NOTICE.txt b/solr/licenses/hadoop-yarn-server-applicationhistoryservice-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-yarn-server-applicationhistoryservice-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-common-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-common-2.7.2.jar.sha1 b/solr/licenses/hadoop-yarn-server-common-2.7.2.jar.sha1
deleted file mode 100644
index ce515ea..0000000
--- a/solr/licenses/hadoop-yarn-server-common-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-514ebf83b773352e9e662a7b5011c8d947162c5f

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-common-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-common-LICENSE-ASL.txt b/solr/licenses/hadoop-yarn-server-common-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-yarn-server-common-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file


[57/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10341: SQL AVG function mis-interprets field type

Posted by cp...@apache.org.
SOLR-10341: SQL AVG function mis-interprets field type


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

Branch: refs/heads/jira/solr-6203
Commit: aa2b46a62a52c0d0117312add2a667bf6b14a709
Parents: 1a80e4d
Author: Joel Bernstein <jb...@apache.org>
Authored: Tue Mar 28 09:25:25 2017 +0100
Committer: Joel Bernstein <jb...@apache.org>
Committed: Tue Mar 28 18:42:18 2017 +0100

----------------------------------------------------------------------
 .../apache/solr/handler/sql/SolrAggregate.java  |   6 +-
 .../apache/solr/handler/sql/SolrEnumerator.java |   1 +
 .../apache/solr/handler/sql/SolrProject.java    |   2 +-
 .../org/apache/solr/handler/sql/SolrRel.java    |  10 +-
 .../org/apache/solr/handler/sql/SolrSchema.java |   4 +
 .../org/apache/solr/handler/sql/SolrTable.java  |  43 +++-
 .../handler/sql/SolrToEnumerableConverter.java  |   1 +
 .../org/apache/solr/handler/TestSQLHandler.java | 250 ++++++++++++++++---
 .../client/solrj/io/stream/FacetStream.java     |   8 +-
 .../client/solrj/io/stream/StatsStream.java     |  14 +-
 .../solrj/io/stream/metrics/MeanMetric.java     |  35 ++-
 .../client/solrj/io/stream/metrics/Metric.java  |   1 +
 .../stream/StreamExpressionToExpessionTest.java |   8 +-
 13 files changed, 320 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/core/src/java/org/apache/solr/handler/sql/SolrAggregate.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/sql/SolrAggregate.java b/solr/core/src/java/org/apache/solr/handler/sql/SolrAggregate.java
index 8c4d46d..f207eeb 100644
--- a/solr/core/src/java/org/apache/solr/handler/sql/SolrAggregate.java
+++ b/solr/core/src/java/org/apache/solr/handler/sql/SolrAggregate.java
@@ -69,16 +69,18 @@ class SolrAggregate extends Aggregate implements SolrRel {
 
     for(Pair<AggregateCall, String> namedAggCall : getNamedAggCalls()) {
 
-
       AggregateCall aggCall = namedAggCall.getKey();
 
       Pair<String, String> metric = toSolrMetric(implementor, aggCall, inNames);
       implementor.addReverseAggMapping(namedAggCall.getValue(), metric.getKey().toLowerCase(Locale.ROOT)+"("+metric.getValue()+")");
       implementor.addMetricPair(namedAggCall.getValue(), metric.getKey(), metric.getValue());
+      /*
       if(aggCall.getName() == null) {
+        System.out.println("AGG:"+namedAggCall.getValue()+":"+ aggCall.getAggregation().getName() + "(" + inNames.get(aggCall.getArgList().get(0)) + ")");
         implementor.addFieldMapping(namedAggCall.getValue(),
-            aggCall.getAggregation().getName() + "(" + inNames.get(aggCall.getArgList().get(0)) + ")");
+          aggCall.getAggregation().getName() + "(" + inNames.get(aggCall.getArgList().get(0)) + ")");
       }
+      */
     }
 
     for(int group : getGroupSet()) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/core/src/java/org/apache/solr/handler/sql/SolrEnumerator.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/sql/SolrEnumerator.java b/solr/core/src/java/org/apache/solr/handler/sql/SolrEnumerator.java
index be6046c..7ba3838 100644
--- a/solr/core/src/java/org/apache/solr/handler/sql/SolrEnumerator.java
+++ b/solr/core/src/java/org/apache/solr/handler/sql/SolrEnumerator.java
@@ -43,6 +43,7 @@ class SolrEnumerator implements Enumerator<Object> {
    * @param fields Fields to get from each Tuple
    */
   SolrEnumerator(TupleStream tupleStream, List<Map.Entry<String, Class>> fields) {
+
     this.tupleStream = tupleStream;
     try {
       this.tupleStream.open();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/core/src/java/org/apache/solr/handler/sql/SolrProject.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/sql/SolrProject.java b/solr/core/src/java/org/apache/solr/handler/sql/SolrProject.java
index c4217f2..bd36ba8 100644
--- a/solr/core/src/java/org/apache/solr/handler/sql/SolrProject.java
+++ b/solr/core/src/java/org/apache/solr/handler/sql/SolrProject.java
@@ -58,7 +58,7 @@ class SolrProject extends Project implements SolrRel {
     for (Pair<RexNode, String> pair : getNamedProjects()) {
       final String name = pair.right;
       final String expr = pair.left.accept(translator);
-      implementor.addFieldMapping(name, expr);
+      implementor.addFieldMapping(name, expr, false);
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/core/src/java/org/apache/solr/handler/sql/SolrRel.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/sql/SolrRel.java b/solr/core/src/java/org/apache/solr/handler/sql/SolrRel.java
index d4de2c6..370de16 100644
--- a/solr/core/src/java/org/apache/solr/handler/sql/SolrRel.java
+++ b/solr/core/src/java/org/apache/solr/handler/sql/SolrRel.java
@@ -47,9 +47,11 @@ interface SolrRel extends RelNode {
     RelOptTable table;
     SolrTable solrTable;
 
-    void addFieldMapping(String key, String val) {
-      if(key != null && !fieldMappings.containsKey(key)) {
-        this.fieldMappings.put(key, val);
+    void addFieldMapping(String key, String val, boolean overwrite) {
+      if(key != null) {
+        if(overwrite || !fieldMappings.containsKey(key)) {
+          this.fieldMappings.put(key, val);
+        }
       }
     }
 
@@ -83,7 +85,7 @@ interface SolrRel extends RelNode {
 
       String metricIdentifier = metric.toLowerCase(Locale.ROOT) + "(" + column + ")";
       if(outName != null) {
-        this.addFieldMapping(outName, metricIdentifier);
+        this.addFieldMapping(outName, metricIdentifier, true);
       }
     }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/core/src/java/org/apache/solr/handler/sql/SolrSchema.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/sql/SolrSchema.java b/solr/core/src/java/org/apache/solr/handler/sql/SolrSchema.java
index 83fa537..20d01f3 100644
--- a/solr/core/src/java/org/apache/solr/handler/sql/SolrSchema.java
+++ b/solr/core/src/java/org/apache/solr/handler/sql/SolrSchema.java
@@ -99,10 +99,14 @@ class SolrSchema extends AbstractSchema {
         case "string":
           type = typeFactory.createJavaType(String.class);
           break;
+        case "tint":
+        case "tlong":
         case "int":
         case "long":
           type = typeFactory.createJavaType(Long.class);
           break;
+        case "tfloat":
+        case "tdouble":
         case "float":
         case "double":
           type = typeFactory.createJavaType(Double.class);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/core/src/java/org/apache/solr/handler/sql/SolrTable.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/sql/SolrTable.java b/solr/core/src/java/org/apache/solr/handler/sql/SolrTable.java
index e313b44..b7f552b 100644
--- a/solr/core/src/java/org/apache/solr/handler/sql/SolrTable.java
+++ b/solr/core/src/java/org/apache/solr/handler/sql/SolrTable.java
@@ -128,7 +128,7 @@ class SolrTable extends AbstractQueryableTable implements TranslatableTable {
         tupleStream = handleSelect(zk, collection, q, fields, orders, limit);
       } else {
         if(buckets.isEmpty()) {
-          tupleStream = handleStats(zk, collection, q, metricPairs);
+          tupleStream = handleStats(zk, collection, q, metricPairs, fields);
         } else {
           if(mapReduce) {
             tupleStream = handleGroupByMapReduce(zk,
@@ -430,6 +430,11 @@ class SolrTable extends AbstractQueryableTable implements TranslatableTable {
                                              final String limit,
                                              final String havingPredicate) throws IOException {
 
+    Map<String, Class> fmap = new HashMap();
+    for(Map.Entry<String, Class> entry : fields) {
+      fmap.put(entry.getKey(), entry.getValue());
+    }
+
     int numWorkers = Integer.parseInt(properties.getProperty("numWorkers", "1"));
 
     Bucket[] buckets = buildBuckets(_buckets, fields);
@@ -437,6 +442,13 @@ class SolrTable extends AbstractQueryableTable implements TranslatableTable {
 
     if(metrics.length == 0) {
       return handleSelectDistinctMapReduce(zk, collection, properties, fields, query, orders, buckets, limit);
+    } else {
+      for(Metric metric : metrics) {
+        Class c = fmap.get(metric.getIdentifier());
+        if(Long.class.equals(c)) {
+          metric.outputLong = true;
+        }
+      }
     }
 
     Set<String> fieldSet = getFieldSet(metrics, fields);
@@ -556,6 +568,12 @@ class SolrTable extends AbstractQueryableTable implements TranslatableTable {
                                          final String lim,
                                          final String havingPredicate) throws IOException {
 
+
+    Map<String, Class> fmap = new HashMap();
+    for(Map.Entry<String, Class> f : fields) {
+      fmap.put(f.getKey(), f.getValue());
+    }
+
     ModifiableSolrParams solrParams = new ModifiableSolrParams();
     solrParams.add(CommonParams.Q, query);
 
@@ -564,6 +582,13 @@ class SolrTable extends AbstractQueryableTable implements TranslatableTable {
     if(metrics.length == 0) {
       metrics = new Metric[1];
       metrics[0] = new CountMetric();
+    } else {
+      for(Metric metric : metrics) {
+        Class c = fmap.get(metric.getIdentifier());
+        if(Long.class.equals(c)) {
+          metric.outputLong = true;
+        }
+      }
     }
 
     int limit = lim != null ? Integer.parseInt(lim) : 1000;
@@ -767,12 +792,26 @@ class SolrTable extends AbstractQueryableTable implements TranslatableTable {
   private TupleStream handleStats(String zk,
                                   String collection,
                                   String query,
-                                  List<Pair<String, String>> metricPairs) {
+                                  List<Pair<String, String>> metricPairs,
+                                  List<Map.Entry<String, Class>> fields) {
+
 
+    Map<String, Class> fmap = new HashMap();
+    for(Map.Entry<String, Class> entry : fields) {
+      fmap.put(entry.getKey(), entry.getValue());
+    }
 
     ModifiableSolrParams solrParams = new ModifiableSolrParams();
     solrParams.add(CommonParams.Q, query);
     Metric[] metrics = buildMetrics(metricPairs, false).toArray(new Metric[0]);
+
+    for(Metric metric : metrics) {
+      Class c = fmap.get(metric.getIdentifier());
+      if(Long.class.equals(c)) {
+        metric.outputLong = true;
+      }
+    }
+
     return new StatsStream(zk, collection, solrParams, metrics);
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/core/src/java/org/apache/solr/handler/sql/SolrToEnumerableConverter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/sql/SolrToEnumerableConverter.java b/solr/core/src/java/org/apache/solr/handler/sql/SolrToEnumerableConverter.java
index 10d4d4c..c97303b 100644
--- a/solr/core/src/java/org/apache/solr/handler/sql/SolrToEnumerableConverter.java
+++ b/solr/core/src/java/org/apache/solr/handler/sql/SolrToEnumerableConverter.java
@@ -93,6 +93,7 @@ class SolrToEnumerableConverter extends ConverterImpl implements EnumerableRel {
   }
 
   private List<String> generateFields(List<String> queryFields, Map<String, String> fieldMappings) {
+
     if(fieldMappings.isEmpty()) {
       return queryFields;
     } else {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java b/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
index cb16f03..4889c90 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
@@ -88,6 +88,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
     testWhere();
     testMixedCaseFields();
     testBasicGrouping();
+    testBasicGroupingTint();
     testBasicGroupingFacets();
     testSelectDistinct();
     testSelectDistinctFacets();
@@ -669,7 +670,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       commit();
 
       SolrParams sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
-        "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s order by sum(field_i) asc limit 2");
+        "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), avg(field_i) from collection1 where text='XXXX' group by str_s order by sum(field_i) asc limit 2");
 
       SolrStream solrStream = new SolrStream(jetty.url, sParams);
       List<Tuple> tuples = getTuples(solrStream);
@@ -684,7 +685,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       tuple = tuples.get(1);
       assert(tuple.get("str_s").equals("a"));
@@ -692,10 +693,36 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 13.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
+
+
+      sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
+          "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) as blah from collection1 where text='XXXX' group by str_s order by sum(field_i) asc limit 2");
+
+      solrStream = new SolrStream(jetty.url, sParams);
+      tuples = getTuples(solrStream);
+
+      //Only two results because of the limit.
+      assert(tuples.size() == 2);
+
+      tuple = tuples.get(0);
+      assert(tuple.get("str_s").equals("b"));
+      assert(tuple.getDouble("EXPR$1") == 2); //count(*)
+      assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
+      assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
+      assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
+      assert(tuple.getDouble("blah") == 9.5); //avg(field_i)
+
+      tuple = tuples.get(1);
+      assert(tuple.get("str_s").equals("a"));
+      assert(tuple.getDouble("EXPR$1") == 2); //count(*)
+      assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
+      assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
+      assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
+      assert(tuple.getDouble("blah") == 13.5); //avg(field_i)
 
       sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
-          "stmt", "select str_s as myString, count(*), sum(field_i) as mySum, min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s order by mySum asc limit 2");
+          "stmt", "select str_s as myString, count(*), sum(field_i) as mySum, min(field_i), max(field_i), avg(field_i)  from collection1 where text='XXXX' group by str_s order by mySum asc limit 2");
 
       solrStream = new SolrStream(jetty.url, sParams);
       tuples = getTuples(solrStream);
@@ -709,7 +736,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("mySum") == 19);
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       tuple = tuples.get(1);
       assert(tuple.get("myString").equals("a"));
@@ -717,11 +744,11 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("mySum") == 27);
       assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 13.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
 
       sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
         "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), "
-          + "cast(avg(1.0 * field_i) as float) from collection1 where (text='XXXX' AND NOT ((text='XXXY') AND (text='XXXY' OR text='XXXY'))) "
+          + "avg(field_i) from collection1 where (text='XXXX' AND NOT ((text='XXXY') AND (text='XXXY' OR text='XXXY'))) "
           + "group by str_s order by str_s desc");
 
       solrStream = new SolrStream(jetty.url, sParams);
@@ -746,7 +773,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10D); //avg(field_i)
 
       tuple = tuples.get(2);
       assert(tuple.get("str_s").equals("a"));
@@ -755,11 +782,11 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
 
-      assert(tuple.getDouble("EXPR$5") == 13.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
 
       sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
           "stmt", "select str_s as myString, count(*) as myCount, sum(field_i) as mySum, min(field_i) as myMin, "
-          + "max(field_i) as myMax, cast(avg(1.0 * field_i) as float) as myAvg from collection1 "
+          + "max(field_i) as myMax, avg(field_i) as myAvg from collection1 "
           + "where (text='XXXX' AND NOT (text='XXXY')) group by str_s order by str_s desc");
 
       solrStream = new SolrStream(jetty.url, sParams);
@@ -784,7 +811,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("mySum") == 19);
       assert(tuple.getDouble("myMin") == 8);
       assert(tuple.getDouble("myMax") == 11);
-      assert(tuple.getDouble("myAvg") == 9.5D);
+      assert(tuple.getDouble("myAvg") == 10);
 
       tuple = tuples.get(2);
       assert(tuple.get("myString").equals("a"));
@@ -792,10 +819,10 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("mySum") == 27);
       assert(tuple.getDouble("myMin") == 7);
       assert(tuple.getDouble("myMax") == 20);
-      assert(tuple.getDouble("myAvg") == 13.5D);
+      assert(tuple.getDouble("myAvg") == 14);
 
       sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
-          "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) " +
+          "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), avg(field_i) " +
           "from collection1 where text='XXXX' group by str_s having sum(field_i) = 19");
 
       solrStream = new SolrStream(jetty.url, sParams);
@@ -809,10 +836,10 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
-          "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), cast(avg(1.0 * field_i) as float) " +
+          "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), avg(field_i) " +
           "from collection1 where text='XXXX' group by str_s having ((sum(field_i) = 19) AND (min(field_i) = 8))");
 
       solrStream = new SolrStream(jetty.url, sParams);
@@ -826,11 +853,11 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
           "stmt", "select str_s, count(*), sum(field_i) as mySum, min(field_i), max(field_i), " +
-          "cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s " +
+          "avg(field_i) from collection1 where text='XXXX' group by str_s " +
           "having ((sum(field_i) = 19) AND (min(field_i) = 8))");
 
       solrStream = new SolrStream(jetty.url, sParams);
@@ -844,11 +871,11 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("mySum") == 19);
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "map_reduce",
           "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), " +
-          "cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s " +
+          "avg(field_i) from collection1 where text='XXXX' group by str_s " +
           "having ((sum(field_i) = 19) AND (min(field_i) = 100))");
 
       solrStream = new SolrStream(jetty.url, sParams);
@@ -860,6 +887,60 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
     }
   }
 
+
+  private void testBasicGroupingTint() throws Exception {
+    try {
+
+      CloudJettyRunner jetty = this.cloudJettys.get(0);
+
+      del("*:*");
+
+      commit();
+
+      indexr("id", "1", "text", "XXXX XXXX", "str_s", "a", "field_ti", "7");
+      indexr("id", "2", "text", "XXXX XXXX", "str_s", "b", "field_ti", "8");
+      indexr("id", "3", "text", "XXXX XXXX", "str_s", "a", "field_ti", "20");
+      indexr("id", "4", "text", "XXXX XXXX", "str_s", "b", "field_ti", "11");
+      indexr("id", "5", "text", "XXXX XXXX", "str_s", "c", "field_ti", "30");
+      indexr("id", "6", "text", "XXXX XXXX", "str_s", "c", "field_ti", "40");
+      indexr("id", "7", "text", "XXXX XXXX", "str_s", "c", "field_ti", "50");
+      indexr("id", "8", "text", "XXXX XXXX", "str_s", "c", "field_ti", "60");
+      indexr("id", "9", "text", "XXXX XXXY", "str_s", "d", "field_ti", "70");
+      commit();
+
+      SolrParams sParams = mapParams(CommonParams.QT, "/sql",
+          "stmt", "select str_s, count(*), sum(field_ti), min(field_ti), max(field_ti), avg(field_ti) from collection1 where text='XXXX' group by str_s order by sum(field_ti) asc limit 2");
+
+      SolrStream solrStream = new SolrStream(jetty.url, sParams);
+      List<Tuple> tuples = getTuples(solrStream);
+
+      //Only two results because of the limit.
+      assert(tuples.size() == 2);
+      Tuple tuple;
+
+      tuple = tuples.get(0);
+      assert(tuple.get("str_s").equals("b"));
+      assert(tuple.getDouble("EXPR$1") == 2); //count(*)
+      assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
+      assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
+      assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
+
+      tuple = tuples.get(1);
+      assert(tuple.get("str_s").equals("a"));
+      assert(tuple.getDouble("EXPR$1") == 2); //count(*)
+      assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
+      assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
+      assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
+      assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
+
+
+
+    } finally {
+      delete();
+    }
+  }
+
   private void testSelectDistinctFacets() throws Exception {
     try {
       CloudJettyRunner jetty = this.cloudJettys.get(0);
@@ -1506,6 +1587,35 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
       assert(tuple.getDouble("EXPR$5") == 13.5D); //avg(field_i)
 
+
+      sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "facet",
+          "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), " +
+              "avg(field_i) from collection1 where text='XXXX' group by str_s " +
+              "order by sum(field_i) asc limit 2");
+
+      solrStream = new SolrStream(jetty.url, sParams);
+      tuples = getTuples(solrStream);
+
+      //Only two results because of the limit.
+      assert(tuples.size() == 2);
+
+      tuple = tuples.get(0);
+      assert(tuple.get("str_s").equals("b"));
+      assert(tuple.getDouble("EXPR$1") == 2); //count(*)
+      assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
+      assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
+      assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
+
+      tuple = tuples.get(1);
+      assert(tuple.get("str_s").equals("a"));
+      assert(tuple.getDouble("EXPR$1") == 2); //count(*)
+      assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
+      assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
+      assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
+      assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
+
+
       sParams = mapParams(CommonParams.QT, "/sql", "aggregationMode", "facet",
         "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), "
           + "cast(avg(1.0 * field_i) as float) from collection1 where (text='XXXX' AND NOT (text='XXXY')) "
@@ -1667,7 +1777,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
 
       SolrParams sParams = mapParams(CommonParams.QT, "/sql", "numWorkers", "2", "aggregationMode", "map_reduce",
           "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), " +
-          "cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s " +
+          "avg(field_i) from collection1 where text='XXXX' group by str_s " +
           "order by sum(field_i) asc limit 2");
 
       SolrStream solrStream = new SolrStream(jetty.url, sParams);
@@ -1684,7 +1794,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       tuple = tuples.get(1);
       assert(tuple.get("str_s").equals("a"));
@@ -1692,12 +1802,41 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 7);  //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 13.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
+
+
+      sParams = mapParams(CommonParams.QT, "/sql", "numWorkers", "2", "aggregationMode", "map_reduce",
+          "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), " +
+              "cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s " +
+              "order by sum(field_i) asc limit 2");
+
+      solrStream = new SolrStream(jetty.url, sParams);
+      tuples = getTuples(solrStream);
+
+      //Only two results because of the limit.
+      assert(tuples.size() == 2);
+
+      tuple = tuples.get(0);
+      assert(tuple.get("str_s").equals("b"));
+      assert(tuple.getDouble("EXPR$1") == 2); //count(*)
+      assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
+      assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
+      assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
+      assert(tuple.getDouble("EXPR$5") == 9.5); //avg(field_i)
+
+      tuple = tuples.get(1);
+      assert(tuple.get("str_s").equals("a"));
+      assert(tuple.getDouble("EXPR$1") == 2); //count(*)
+      assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
+      assert(tuple.getDouble("EXPR$3") == 7);  //min(field_i)
+      assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
+      assert(tuple.getDouble("EXPR$5") == 13.5); //avg(field_i)
+
 
 
       sParams = mapParams(CommonParams.QT, "/sql", "numWorkers", "2", "aggregationMode", "map_reduce",
           "stmt", "select str_s, count(*), sum(field_i) as mySum, min(field_i), max(field_i), " +
-          "cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s order by mySum asc limit 2");
+          "avg(field_i) from collection1 where text='XXXX' group by str_s order by mySum asc limit 2");
 
       solrStream = new SolrStream(jetty.url, sParams);
       tuples = getTuples(solrStream);
@@ -1711,7 +1850,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("mySum") == 19);
       assert(tuple.getDouble("EXPR$3") == 8);  //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       tuple = tuples.get(1);
       assert(tuple.get("str_s").equals("a"));
@@ -1719,12 +1858,12 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("mySum") == 27);
       assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 13.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
 
 
       sParams = mapParams(CommonParams.QT, "/sql", "numWorkers", "2", "aggregationMode", "map_reduce",
           "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), " +
-          "cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s order by str_s desc");
+          "avg(field_i) from collection1 where text='XXXX' group by str_s order by str_s desc");
 
       solrStream = new SolrStream(jetty.url, sParams);
       tuples = getTuples(solrStream);
@@ -1748,7 +1887,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       tuple = tuples.get(2);
       assert(tuple.get("str_s").equals("a"));
@@ -1756,12 +1895,12 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 13.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
 
 
       sParams = mapParams(CommonParams.QT, "/sql", "numWorkers", "2", "aggregationMode", "map_reduce",
           "stmt", "select str_s as myString, count(*), sum(field_i), min(field_i), max(field_i), " +
-          "cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s order by myString desc");
+          "avg(field_i) from collection1 where text='XXXX' group by str_s order by myString desc");
 
       solrStream = new SolrStream(jetty.url, sParams);
       tuples = getTuples(solrStream);
@@ -1785,7 +1924,7 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       tuple = tuples.get(2);
       assert(tuple.get("myString").equals("a"));
@@ -1793,12 +1932,12 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 27); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 7); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 20); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 13.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 14); //avg(field_i)
 
 
       sParams = mapParams(CommonParams.QT, "/sql", "numWorkers", "2", "aggregationMode", "map_reduce",
           "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), " +
-          "cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s having sum(field_i) = 19");
+          "avg(field_i) from collection1 where text='XXXX' group by str_s having sum(field_i) = 19");
 
       solrStream = new SolrStream(jetty.url, sParams);
       tuples = getTuples(solrStream);
@@ -1811,11 +1950,11 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       sParams = mapParams(CommonParams.QT, "/sql", "numWorkers", "2", "aggregationMode", "map_reduce",
           "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), " +
-          "cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s " +
+          "avg(field_i) from collection1 where text='XXXX' group by str_s " +
           "having ((sum(field_i) = 19) AND (min(field_i) = 8))");
 
       solrStream = new SolrStream(jetty.url, sParams);
@@ -1829,11 +1968,11 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getDouble("EXPR$2") == 19); //sum(field_i)
       assert(tuple.getDouble("EXPR$3") == 8); //min(field_i)
       assert(tuple.getDouble("EXPR$4") == 11); //max(field_i)
-      assert(tuple.getDouble("EXPR$5") == 9.5D); //avg(field_i)
+      assert(tuple.getDouble("EXPR$5") == 10); //avg(field_i)
 
       sParams = mapParams(CommonParams.QT, "/sql", "numWorkers", "2", "aggregationMode", "map_reduce",
           "stmt", "select str_s, count(*), sum(field_i), min(field_i), max(field_i), " +
-          "cast(avg(1.0 * field_i) as float) from collection1 where text='XXXX' group by str_s " +
+          "avg(field_i) from collection1 where text='XXXX' group by str_s " +
           "having ((sum(field_i) = 19) AND (min(field_i) = 100))");
 
       solrStream = new SolrStream(jetty.url, sParams);
@@ -1933,6 +2072,45 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
     assertTrue(maxf == 10.0D);
     assertTrue(avgf == 5.5D);
 
+
+    //Test without cast on average int field
+    sParams = mapParams(CommonParams.QT, "/sql",
+        "stmt", "select count(*) as myCount, sum(a_i) as mySum, min(a_i) as myMin, max(a_i) as myMax, " +
+            "avg(a_i) as myAvg, sum(a_f), min(a_f), max(a_f), avg(a_f) from collection1");
+
+    solrStream = new SolrStream(jetty.url, sParams);
+
+    tuples = getTuples(solrStream);
+
+    assert(tuples.size() == 1);
+
+    //Test Long and Double Sums
+
+    tuple = tuples.get(0);
+
+    count = tuple.getDouble("myCount");
+    sumi = tuple.getDouble("mySum");
+    mini = tuple.getDouble("myMin");
+    maxi = tuple.getDouble("myMax");
+    avgi = tuple.getDouble("myAvg");
+    assertTrue(tuple.get("myAvg") instanceof Long);
+    sumf = tuple.getDouble("EXPR$5"); //sum(a_f)
+    minf = tuple.getDouble("EXPR$6"); //min(a_f)
+    maxf = tuple.getDouble("EXPR$7"); //max(a_f)
+    avgf = tuple.getDouble("EXPR$8"); //avg(a_f)
+
+    assertTrue(count == 10);
+    assertTrue(mini == 0.0D);
+    assertTrue(maxi == 14.0D);
+    assertTrue(sumi == 70);
+    assertTrue(avgi == 7);
+    assertTrue(sumf == 55.0D);
+    assertTrue(minf == 1.0D);
+    assertTrue(maxf == 10.0D);
+    assertTrue(avgf == 5.5D);
+
+
+
     // Test where clause hits
     sParams = mapParams(CommonParams.QT, "/sql",
         "stmt", "select count(*), sum(a_i), min(a_i), max(a_i), cast(avg(1.0 * a_i) as float), sum(a_f), " +

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/FacetStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/FacetStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/FacetStream.java
index 94d937d..0180764 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/FacetStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/FacetStream.java
@@ -234,7 +234,6 @@ public class FacetStream extends TupleStream implements Expressible  {
     this.zkHost  = zkHost;
     this.params = params;
     this.buckets = buckets;
-    System.out.println("####### Bucket count:"+buckets.length);
     this.metrics = metrics;
     this.bucketSizeLimit   = bucketSizeLimit;
     this.collection = collection;
@@ -356,6 +355,7 @@ public class FacetStream extends TupleStream implements Expressible  {
       NamedList response = cloudSolrClient.request(request, collection);
       getTuples(response, buckets, metrics);
       Collections.sort(tuples, getStreamSort());
+
     } catch (Exception e) {
       throw new IOException(e);
     }
@@ -509,7 +509,11 @@ public class FacetStream extends TupleStream implements Expressible  {
           String identifier = metric.getIdentifier();
           if(!identifier.startsWith("count(")) {
             double d = (double)bucket.get("facet_"+m);
-            t.put(identifier, d);
+            if(metric.outputLong) {
+              t.put(identifier, Math.round(d));
+            } else {
+              t.put(identifier, d);
+            }
             ++m;
           } else {
             long l = ((Number)bucket.get("count")).longValue();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/StatsStream.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/StatsStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/StatsStream.java
index 6538902..f6b5818 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/StatsStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/StatsStream.java
@@ -58,6 +58,7 @@ public class StatsStream extends TupleStream implements Expressible  {
   private String collection;
   private boolean done;
   private boolean doCount;
+  private Map<String, Metric> metricMap;
   protected transient SolrClientCache cache;
   protected transient CloudSolrClient cloudSolrClient;
 
@@ -82,6 +83,10 @@ public class StatsStream extends TupleStream implements Expressible  {
     this.params = params;
     this.metrics = metrics;
     this.collection = collection;
+    metricMap = new HashMap();
+    for(Metric metric : metrics) {
+      metricMap.put(metric.getIdentifier(), metric);
+    }
   }
 
   public StatsStream(StreamExpression expression, StreamFactory factory) throws IOException{   
@@ -321,7 +326,14 @@ public class StatsStream extends TupleStream implements Expressible  {
 
   private void addStat(Map<String, Object> map, String field, String stat, Object val) {
     if(stat.equals("mean")) {
-      map.put("avg("+field+")", val);
+      String name = "avg("+field+")";
+      Metric m = metricMap.get(name);
+      if(m.outputLong) {
+        Number num = (Number) val;
+        map.put(name, Math.round(num.doubleValue()));
+      } else {
+        map.put(name, val);
+      }
     } else {
       map.put(stat+"("+field+")", val);
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/metrics/MeanMetric.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/metrics/MeanMetric.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/metrics/MeanMetric.java
index 03c037a..14f93b8 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/metrics/MeanMetric.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/metrics/MeanMetric.java
@@ -37,27 +37,36 @@ public class MeanMetric extends Metric {
   private long count;
 
   public MeanMetric(String columnName){
-    init("avg", columnName);
+    init("avg", columnName, false);
+  }
+
+  public MeanMetric(String columnName, boolean outputLong){
+    init("avg", columnName, outputLong);
   }
 
   public MeanMetric(StreamExpression expression, StreamFactory factory) throws IOException{
     // grab all parameters out
     String functionName = expression.getFunctionName();
     String columnName = factory.getValueOperand(expression, 0);
-    
+    String outputLong = factory.getValueOperand(expression, 1);
+
+
     // validate expression contains only what we want.
     if(null == columnName){
       throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - expected %s(columnName)", expression, functionName));
     }
-    if(1 != expression.getParameters().size()){
-      throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - unknown operands found", expression));
+
+    boolean ol = false;
+    if(outputLong != null) {
+      ol = Boolean.parseBoolean(outputLong);
     }
     
-    init(functionName, columnName);    
+    init(functionName, columnName, ol);
   }
   
-  private void init(String functionName, String columnName){
+  private void init(String functionName, String columnName, boolean outputLong){
     this.columnName = columnName;
+    this.outputLong = outputLong;
     setFunctionName(functionName);
     setIdentifier(functionName, "(", columnName, ")");
   }
@@ -75,25 +84,29 @@ public class MeanMetric extends Metric {
   }
 
   public Metric newInstance() {
-    return new MeanMetric(columnName);
+    return new MeanMetric(columnName, outputLong);
   }
 
   public String[] getColumns() {
     return new String[]{columnName};
   }
 
-  public Double getValue() {
+  public Number getValue() {
     double dcount = (double)count;
     if(longSum == 0) {
       return doubleSum/dcount;
-
     } else {
-      return longSum/dcount;
+      double mean = longSum/dcount;
+      if(outputLong) {
+        return Math.round(mean);
+      } else {
+        return mean;
+      }
     }
   }
   
   @Override
   public StreamExpressionParameter toExpression(StreamFactory factory) throws IOException {
-    return new StreamExpression(getFunctionName()).withParameter(columnName);
+    return new StreamExpression(getFunctionName()).withParameter(columnName).withParameter(Boolean.toString(outputLong));
   }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/metrics/Metric.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/metrics/Metric.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/metrics/Metric.java
index 582b54a..87f7852 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/metrics/Metric.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/metrics/Metric.java
@@ -30,6 +30,7 @@ public abstract class Metric implements Expressible {
   private UUID metricNodeId = UUID.randomUUID();
   private String functionName;
   private String identifier;
+  public boolean outputLong; // This is only used for SQL in facet mode.
 
   public String getFunctionName(){
     return functionName;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/aa2b46a6/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExpessionTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExpessionTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExpessionTest.java
index 4ddf4ce..0a597b7 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExpessionTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/StreamExpressionToExpessionTest.java
@@ -155,7 +155,7 @@ public class StreamExpressionToExpessionTest extends LuceneTestCase {
     assertTrue(expressionString.contains("sort=\"a_f asc, a_i asc\""));
     assertTrue(expressionString.contains("min(a_i)"));
     assertTrue(expressionString.contains("max(a_i)"));
-    assertTrue(expressionString.contains("avg(a_i)"));
+    assertTrue(expressionString.contains("avg(a_i,false)"));
     assertTrue(expressionString.contains("count(*)"));
     assertTrue(expressionString.contains("sum(a_i)"));
     
@@ -274,8 +274,8 @@ public class StreamExpressionToExpessionTest extends LuceneTestCase {
     assertTrue(expressionString.contains("min(a_f)"));
     assertTrue(expressionString.contains("max(a_i)"));
     assertTrue(expressionString.contains("max(a_f)"));
-    assertTrue(expressionString.contains("avg(a_i)"));
-    assertTrue(expressionString.contains("avg(a_f)"));
+    assertTrue(expressionString.contains("avg(a_i,false)"));
+    assertTrue(expressionString.contains("avg(a_f,false)"));
     assertTrue(expressionString.contains("count(*)"));
   }
   
@@ -427,7 +427,7 @@ public class StreamExpressionToExpessionTest extends LuceneTestCase {
     metric = new MeanMetric(StreamExpressionParser.parse("avg(foo)"), factory);
     expressionString = metric.toExpression(factory).toString();
     
-    assertEquals("avg(foo)", expressionString);
+    assertEquals("avg(foo,false)", expressionString);
   }
   
   @Test


[65/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10147: Admin UI -> Cloud -> Graph: Impossible to see shard state

Posted by cp...@apache.org.
SOLR-10147: Admin UI -> Cloud -> Graph: Impossible to see shard state


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

Branch: refs/heads/jira/solr-6203
Commit: a6f27d3e1e457f9bc3bd4b9afcacfc37e9a87e80
Parents: 9b7c8d5
Author: Jan H�ydahl <ja...@apache.org>
Authored: Wed Mar 29 10:51:34 2017 +0200
Committer: Jan H�ydahl <ja...@apache.org>
Committed: Wed Mar 29 10:54:02 2017 +0200

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  2 ++
 solr/webapp/web/css/angular/cloud.css           | 24 ++++++++++++++++++++
 solr/webapp/web/js/angular/controllers/cloud.js | 19 +++++++++++-----
 solr/webapp/web/partials/cloud.html             |  1 +
 4 files changed, 40 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a6f27d3e/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 80c2aa0..3692bd5 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -171,6 +171,8 @@ Other Changes
 * SOLR-10357: Enable edismax and standard query parsers to handle the option combination 
   sow=false / autoGeneratePhraseQueries="true" by setting QueryBuilder.autoGenerateMultiTermSynonymsQuery.
 
+* SOLR-10147: Admin UI -> Cloud -> Graph: Impossible to see shard state (Amrit Sarkar, janhoy)
+
 ==================  6.5.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a6f27d3e/solr/webapp/web/css/angular/cloud.css
----------------------------------------------------------------------
diff --git a/solr/webapp/web/css/angular/cloud.css b/solr/webapp/web/css/angular/cloud.css
index 4017c22..80e53e8 100644
--- a/solr/webapp/web/css/angular/cloud.css
+++ b/solr/webapp/web/css/angular/cloud.css
@@ -331,11 +331,13 @@ limitations under the License.
 {
   color: #C43C35;
   stroke: #C43C35;
+  font-style: italic; 
 }
 
 #content #graph-content .node.recovery_failed text
 {
   fill: #C43C35;
+  font-style: italic; 
 }
 
 #content #cloud #legend .down,
@@ -357,11 +359,13 @@ limitations under the License.
 {
   color: #d5dd00;
   stroke: #d5dd00;
+  font-style: italic; 
 }
 
 #content #graph-content .node.recovering text
 {
   fill: #d5dd00;
+  font-style: italic; 
 }
 
 #content #cloud #legend .active,
@@ -394,6 +398,12 @@ limitations under the License.
   stroke: #c0c0c0;
 }
 
+#content #cloud #legend .leader,
+#content #graph-content .leader text
+{
+  font-weight: bold;
+}
+
 #content #graph-content .node.lvl-0 circle
 {
   stroke: #fff;
@@ -410,3 +420,17 @@ limitations under the License.
   padding-top: 15px;
   padding-bottom: 15px;
 }
+
+#content #cloud #legend .shard-inactive,
+#content #cloud #legend .shard-inactive li,
+#content #cloud #legend .shard-inactive li text,
+#content #graph-content .shard-inactive text
+{
+  text-decoration: line-through;
+}
+#content #cloud #legend .shard-inactive circle,
+#content #graph-content .shard-inactive circle,
+#content #graph-content .link.shard-inactive
+{
+  stroke: #e9e9e9;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a6f27d3e/solr/webapp/web/js/angular/controllers/cloud.js
----------------------------------------------------------------------
diff --git a/solr/webapp/web/js/angular/controllers/cloud.js b/solr/webapp/web/js/angular/controllers/cloud.js
index 2d0dae0..aeaf5d3 100644
--- a/solr/webapp/web/js/angular/controllers/cloud.js
+++ b/solr/webapp/web/js/angular/controllers/cloud.js
@@ -139,6 +139,8 @@ var graphSubController = function ($scope, Zookeeper, isRadial) {
                     for (var c in state) {
                         var shards = [];
                         for (var s in state[c].shards) {
+                            var shard_status = state[c].shards[s].state;
+                            shard_status = shard_status == 'inactive' ? 'shard-inactive' : shard_status;
                             var nodes = [];
                             for (var n in state[c].shards[s].replicas) {
                                 leaf_count++;
@@ -160,17 +162,19 @@ var graphSubController = function ($scope, Zookeeper, isRadial) {
                                 $scope.helperData.port.push(uri_parts.port);
                                 $scope.helperData.pathname.push(uri_parts.pathname);
 
-                                var status = replica.state;
+                                var replica_status = replica.state;
 
                                 if (!live_nodes[replica.node_name]) {
-                                    status = 'gone';
+                                    replica_status = 'gone';
+                                } else if(shard_status=='shard-inactive') {
+                                    replica_status += ' ' + shard_status;
                                 }
 
                                 var node = {
                                     name: uri,
                                     data: {
                                         type: 'node',
-                                        state: status,
+                                        state: replica_status,
                                         leader: 'true' === replica.leader,
                                         uri: uri_parts
                                     }
@@ -179,9 +183,10 @@ var graphSubController = function ($scope, Zookeeper, isRadial) {
                             }
 
                             var shard = {
-                                name: s,
+                                name: shard_status == "shard-inactive" ? s + ' (inactive)' : s,
                                 data: {
-                                    type: 'shard'
+                                    type: 'shard',
+                                    state: shard_status
                                 },
                                 children: nodes
                             };
@@ -280,7 +285,9 @@ solrAdminApp.directive('graph', function(Constants) {
                 }
 
                 if (d.data && d.data.state) {
-                    classes.push(d.data.state);
+                    if(!(d.data.type=='shard' && d.data.state=='active')){
+                        classes.push(d.data.state);
+                    }
                 }
 
                 return classes.join(' ');

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a6f27d3e/solr/webapp/web/partials/cloud.html
----------------------------------------------------------------------
diff --git a/solr/webapp/web/partials/cloud.html b/solr/webapp/web/partials/cloud.html
index 415e123..ea1c6a0 100644
--- a/solr/webapp/web/partials/cloud.html
+++ b/solr/webapp/web/partials/cloud.html
@@ -59,6 +59,7 @@ limitations under the License.
           <li class="recovering"><svg width="15" height="15"><g transform="translate(5,2)"><g transform="translate(0,5)"><circle r="4.5"></circle></g></g></svg> Recovering</li>
           <li class="down"><svg width="15" height="15"><g transform="translate(5,2)"><g transform="translate(0,5)"><circle r="4.5"></circle></g></g></svg> Down</li>
           <li class="recovery_failed"><svg width="15" height="15"><g transform="translate(5,2)"><g transform="translate(0,5)"><circle r="4.5"></circle></g></g></svg> Recovery Failed</li>
+          <li class="shard-inactive"><svg width="15" height="15"><g transform="translate(5,2)"><g transform="translate(0,5)"><circle r="4.5"></circle></g></g></svg> Inactive</li>
           <li class="gone"><svg width="15" height="15"><g transform="translate(5,2)"><g transform="translate(0,5)"><circle r="4.5"></circle></g></g></svg> Gone</li>
         </ul>
       </div>


[30/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/BatchWriter.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/BatchWriter.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/BatchWriter.java
deleted file mode 100644
index 24458d5..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/BatchWriter.java
+++ /dev/null
@@ -1,243 +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.hadoop;
-
-import org.apache.hadoop.mapreduce.TaskAttemptContext;
-import org.apache.hadoop.mapreduce.TaskID;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.util.ExecutorUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Locale;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * Enables adding batches of documents to an EmbeddedSolrServer.
- */
-class BatchWriter {
-  
-  private final EmbeddedSolrServer solr;
-  private volatile Exception batchWriteException = null;
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  public Exception getBatchWriteException() {
-    return batchWriteException;
-  }
-
-  public void setBatchWriteException(Exception batchWriteException) {
-    this.batchWriteException = batchWriteException;
-  }
-
-  /** The number of writing threads. */
-  final int writerThreads;
-
-  /** Queue Size */
-  final int queueSize;
-
-  private final ThreadPoolExecutor batchPool;
-
-  private TaskID taskId = null;
-
-  /**
-   * The number of in progress batches, must be zero before the close can
-   * actually start closing
-   */
-  AtomicInteger executingBatches = new AtomicInteger(0);
-
-  /**
-   * Create the batch writer object, set the thread to daemon mode, and start
-   * it.
-   * 
-   */
-
-  final class Batch implements Runnable {
-    
-    private List<SolrInputDocument> documents;
-    private UpdateResponse result;
-
-    public Batch(Collection<SolrInputDocument> batch) {
-      documents = new ArrayList<>(batch);
-    }
-
-    public void run() {
-      try {
-        executingBatches.getAndIncrement();
-        result = runUpdate(documents);
-      } finally {
-        executingBatches.getAndDecrement();
-      }
-    }
-
-    protected List<SolrInputDocument> getDocuments() {
-      return documents;
-    }
-
-    protected void setDocuments(List<SolrInputDocument> documents) {
-      this.documents = documents;
-    }
-
-    protected UpdateResponse getResult() {
-      return result;
-    }
-
-    protected void setResult(UpdateResponse result) {
-      this.result = result;
-    }
-
-    protected void reset(List<SolrInputDocument> documents) {
-      if (this.documents == null) {
-        this.documents = new ArrayList<>(documents);
-      } else {
-        this.documents.clear();
-        this.documents.addAll(documents);
-      }
-      result = null;
-    }
-
-    protected void reset(SolrInputDocument document) {
-      if (this.documents == null) {
-        this.documents = new ArrayList<>();
-      } else {
-        this.documents.clear();
-      }
-      this.documents.add(document);
-      result = null;
-    }
-  }
-
-  protected UpdateResponse runUpdate(List<SolrInputDocument> batchToWrite) {
-    try {
-      UpdateResponse result = solr.add(batchToWrite);
-      SolrRecordWriter.incrementCounter(taskId, SolrCounters.class.getName(), SolrCounters.BATCHES_WRITTEN.toString(), 1);      
-      SolrRecordWriter.incrementCounter(taskId, SolrCounters.class.getName(), SolrCounters.DOCUMENTS_WRITTEN.toString(), batchToWrite.size());
-      if (LOG.isDebugEnabled()) {
-        SolrRecordWriter.incrementCounter(taskId, SolrCounters.class.getName(), SolrCounters.BATCH_WRITE_TIME.toString(), result.getElapsedTime());
-      }
-      return result;
-    } catch (Throwable e) {
-      if (e instanceof Exception) {
-        setBatchWriteException((Exception) e);
-      } else {
-        setBatchWriteException(new Exception(e));
-      }
-      SolrRecordWriter.incrementCounter(taskId, getClass().getName() + ".errors", e.getClass().getName(), 1);
-      LOG.error("Unable to process batch", e);
-      return null;
-    }
-  }
-
-
-  public BatchWriter(EmbeddedSolrServer solr, int batchSize, TaskID tid,
-      int writerThreads, int queueSize) {
-    this.solr = solr;
-    this.writerThreads = writerThreads;
-    this.queueSize = queueSize;
-    taskId = tid;
-
-    // we need to obtain the settings before the constructor
-    if (writerThreads != 0) {
-      batchPool = new ExecutorUtil.MDCAwareThreadPoolExecutor(writerThreads, writerThreads, 5,
-          TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(queueSize),
-          new ThreadPoolExecutor.CallerRunsPolicy());
-    } else { // single threaded case
-      batchPool = null;
-    }
-  }
-
-  public void queueBatch(Collection<SolrInputDocument> batch)
-      throws IOException, SolrServerException {
-
-    throwIf();
-    Batch b = new Batch(batch);
-    if (batchPool != null) {
-      batchPool.execute(b);
-    } else { // single threaded case
-      b.run();
-      throwIf();
-    }
-  }
-
-  public synchronized void close(TaskAttemptContext context)
-      throws InterruptedException, SolrServerException, IOException {
-
-    if (batchPool != null) {
-      context.setStatus("Waiting for batches to complete");
-      batchPool.shutdown();
-  
-      while (!batchPool.isTerminated()) {
-        LOG.info(String.format(Locale.ENGLISH, 
-            "Waiting for %d items and %d threads to finish executing", batchPool
-                .getQueue().size(), batchPool.getActiveCount()));
-        batchPool.awaitTermination(5, TimeUnit.SECONDS);
-      }
-    }
-    context.setStatus("Committing Solr Phase 1");
-    solr.commit(true, false);
-    context.setStatus("Optimizing Solr");
-    int maxSegments = context.getConfiguration().getInt(SolrOutputFormat.SOLR_RECORD_WRITER_MAX_SEGMENTS, 1);
-    LOG.info("Optimizing Solr: forcing merge down to {} segments", maxSegments);
-    long start = System.nanoTime();
-    solr.optimize(true, false, maxSegments);
-    context.getCounter(SolrCounters.class.getName(), SolrCounters.PHYSICAL_REDUCER_MERGE_TIME.toString()).increment(System.nanoTime() - start);
-    float secs = (System.nanoTime() - start) / (float)(10^9);
-    LOG.info("Optimizing Solr: done forcing merge down to {} segments in {} secs", maxSegments, secs);
-    context.setStatus("Committing Solr Phase 2");
-    solr.commit(true, false);
-    context.setStatus("Shutting down Solr");
-    solr.close();
-  }
-
-  /**
-   * Throw a legal exception if a previous batch write had an exception. The
-   * previous state is cleared. Uses {@link #batchWriteException} for the state
-   * from the last exception.
-   * 
-   * This will loose individual exceptions if the exceptions happen rapidly.
-   * 
-   * @throws IOException On low level IO error
-   * @throws SolrServerException On Solr Exception
-   */
-  private void throwIf() throws IOException, SolrServerException {
-
-    final Exception last = batchWriteException;
-    batchWriteException = null;
-
-    if (last == null) {
-      return;
-    }
-    if (last instanceof SolrServerException) {
-      throw (SolrServerException) last;
-    }
-    if (last instanceof IOException) {
-      throw (IOException) last;
-    }
-    throw new IOException("Batch Write Failure", last);
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DataInputInputStream.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DataInputInputStream.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DataInputInputStream.java
deleted file mode 100644
index d1d46bc..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DataInputInputStream.java
+++ /dev/null
@@ -1,58 +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.hadoop;
-
-import java.io.DataInput;
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.hadoop.classification.InterfaceAudience;
-
-/**
- * An InputStream that wraps a DataInput.
- * @see DataOutputOutputStream
- */
-@InterfaceAudience.Private
-public class DataInputInputStream extends InputStream {
-
-  private DataInput in;
-
-  /**
-   * Construct an InputStream from the given DataInput. If 'in'
-   * is already an InputStream, simply returns it. Otherwise, wraps
-   * it in an InputStream.
-   * @param in the DataInput to wrap
-   * @return an InputStream instance that reads from 'in'
-   */
-  public static InputStream constructInputStream(DataInput in) {
-    if (in instanceof InputStream) {
-      return (InputStream)in;
-    } else {
-      return new DataInputInputStream(in);
-    }
-  }
-
-
-  public DataInputInputStream(DataInput in) {
-    this.in = in;
-  }
-
-  @Override
-  public int read() throws IOException {
-    return in.readUnsignedByte();
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DataOutputOutputStream.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DataOutputOutputStream.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DataOutputOutputStream.java
deleted file mode 100644
index 389c52a..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DataOutputOutputStream.java
+++ /dev/null
@@ -1,66 +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.hadoop;
-
-import java.io.DataOutput;
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.apache.hadoop.classification.InterfaceAudience;
-
-/**
- * OutputStream implementation that wraps a DataOutput.
- */
-@InterfaceAudience.Private
-public class DataOutputOutputStream extends OutputStream {
-
-  private final DataOutput out;
-
-  /**
-   * Construct an OutputStream from the given DataOutput. If 'out'
-   * is already an OutputStream, simply returns it. Otherwise, wraps
-   * it in an OutputStream.
-   * @param out the DataOutput to wrap
-   * @return an OutputStream instance that outputs to 'out'
-   */
-  public static OutputStream constructOutputStream(DataOutput out) {
-    if (out instanceof OutputStream) {
-      return (OutputStream)out;
-    } else {
-      return new DataOutputOutputStream(out);
-    }
-  }
-
-  private DataOutputOutputStream(DataOutput out) {
-    this.out = out;
-  }
-
-  @Override
-  public void write(int b) throws IOException {
-    out.writeByte(b);
-  }
-
-  @Override
-  public void write(byte[] b, int off, int len) throws IOException {
-    out.write(b, off, len);
-  }
-
-  @Override
-  public void write(byte[] b) throws IOException {
-    out.write(b);
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DryRunDocumentLoader.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DryRunDocumentLoader.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DryRunDocumentLoader.java
deleted file mode 100644
index bacf1d0..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/DryRunDocumentLoader.java
+++ /dev/null
@@ -1,57 +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.hadoop;
-
-import org.apache.solr.client.solrj.response.SolrPingResponse;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.morphlines.solr.DocumentLoader;
-
-/**
- * Prints documents to stdout instead of loading them into Solr for quicker turnaround during early
- * trial & debug sessions.
- */
-final class DryRunDocumentLoader implements DocumentLoader {
-
-  @Override
-  public void beginTransaction() {
-  }
-
-  @Override
-  public void load(SolrInputDocument doc) {
-    System.out.println("dryrun: " + doc);
-  }
-
-  @Override
-  public void commitTransaction() {
-  }
-
-  @Override
-  public UpdateResponse rollbackTransaction() {
-    return new UpdateResponse();
-  }
-
-  @Override
-  public void shutdown() {
-  }
-
-  @Override
-  public SolrPingResponse ping() {
-    return new SolrPingResponse();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/GoLive.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/GoLive.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/GoLive.java
deleted file mode 100644
index 5b1c343..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/GoLive.java
+++ /dev/null
@@ -1,182 +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.hadoop;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.Callable;
-import java.util.concurrent.CompletionService;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorCompletionService;
-import java.util.concurrent.Future;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
-import org.apache.solr.client.solrj.request.CoreAdminRequest;
-import org.apache.solr.common.util.ExecutorUtil;
-import org.apache.solr.hadoop.MapReduceIndexerTool.Options;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The optional (parallel) GoLive phase merges the output shards of the previous
- * phase into a set of live customer facing Solr servers, typically a SolrCloud.
- */
-class GoLive {
-
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
-  // TODO: handle clusters with replicas
-  public boolean goLive(Options options, FileStatus[] outDirs) {
-    LOG.info("Live merging of output shards into Solr cluster...");
-    boolean success = false;
-    long start = System.nanoTime();
-    int concurrentMerges = options.goLiveThreads;
-    ThreadPoolExecutor executor = new ExecutorUtil.MDCAwareThreadPoolExecutor(concurrentMerges,
-        concurrentMerges, 1, TimeUnit.SECONDS,
-        new LinkedBlockingQueue<Runnable>());
-    
-    try {
-      CompletionService<Request> completionService = new ExecutorCompletionService<>(executor);
-      Set<Future<Request>> pending = new HashSet<>();
-      int cnt = -1;
-      for (final FileStatus dir : outDirs) {
-        
-        LOG.debug("processing: " + dir.getPath());
-
-        cnt++;
-        List<String> urls = options.shardUrls.get(cnt);
-        
-        for (String url : urls) {
-          
-          String baseUrl = url;
-          if (baseUrl.endsWith("/")) {
-            baseUrl = baseUrl.substring(0, baseUrl.length() - 1);
-          }
-          
-          int lastPathIndex = baseUrl.lastIndexOf("/");
-          if (lastPathIndex == -1) {
-            LOG.error("Found unexpected shardurl, live merge failed: " + baseUrl);
-            return false;
-          }
-          
-          final String name = baseUrl.substring(lastPathIndex + 1);
-          baseUrl = baseUrl.substring(0, lastPathIndex);
-          final String mergeUrl = baseUrl;
-          
-          Callable<Request> task = () -> {
-            Request req = new Request();
-            LOG.info("Live merge " + dir.getPath() + " into " + mergeUrl);
-            try (final HttpSolrClient client = new HttpSolrClient.Builder(mergeUrl).build()) {
-              CoreAdminRequest.MergeIndexes mergeRequest = new CoreAdminRequest.MergeIndexes();
-              mergeRequest.setCoreName(name);
-              mergeRequest.setIndexDirs(Arrays.asList(dir.getPath().toString() + "/data/index"));
-              mergeRequest.process(client);
-              req.success = true;
-            } catch (SolrServerException | IOException e) {
-              req.e = e;
-            }
-            return req;
-          };
-          pending.add(completionService.submit(task));
-        }
-      }
-      
-      while (pending != null && pending.size() > 0) {
-        try {
-          Future<Request> future = completionService.take();
-          if (future == null) break;
-          pending.remove(future);
-          
-          try {
-            Request req = future.get();
-            
-            if (!req.success) {
-              // failed
-              LOG.error("A live merge command failed", req.e);
-              return false;
-            }
-            
-          } catch (ExecutionException e) {
-            LOG.error("Error sending live merge command", e);
-            return false;
-          }
-          
-        } catch (InterruptedException e) {
-          Thread.currentThread().interrupt();
-          LOG.error("Live merge process interrupted", e);
-          return false;
-        }
-      }
-      
-      cnt = -1;
-      
-      
-      try {
-        LOG.info("Committing live merge...");
-        if (options.zkHost != null) {
-          try (CloudSolrClient server = new CloudSolrClient.Builder().withZkHost(options.zkHost).build()) {
-            server.setDefaultCollection(options.collection);
-            server.commit();
-          }
-        } else {
-          for (List<String> urls : options.shardUrls) {
-            for (String url : urls) {
-              // TODO: we should do these concurrently
-              try (HttpSolrClient server = new HttpSolrClient.Builder(url).build()) {
-                server.commit();
-              }
-            }
-          }
-        }
-        LOG.info("Done committing live merge");
-      } catch (Exception e) {
-        LOG.error("Error sending commits to live Solr cluster", e);
-        return false;
-      }
-
-      success = true;
-      return true;
-    } finally {
-      ExecutorUtil.shutdownAndAwaitTermination(executor);
-      float secs = (System.nanoTime() - start) / (float)(10^9);
-      LOG.info("Live merging of index shards into Solr cluster took " + secs + " secs");
-      if (success) {
-        LOG.info("Live merging completed successfully");
-      } else {
-        LOG.info("Live merging failed");
-      }
-    }
-    
-    // if an output dir does not exist, we should fail and do no merge?
-  }
-  
-  private static final class Request {
-    Exception e;
-    boolean success = false;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/HdfsFileFieldNames.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/HdfsFileFieldNames.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/HdfsFileFieldNames.java
deleted file mode 100644
index c9eaef6..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/HdfsFileFieldNames.java
+++ /dev/null
@@ -1,41 +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.hadoop;
-
-
-/**
- * Solr field names for metadata of an HDFS file.
- */
-public interface HdfsFileFieldNames {
-
-  public static final String FILE_UPLOAD_URL = "file_upload_url";
-  public static final String FILE_DOWNLOAD_URL = "file_download_url";
-  public static final String FILE_SCHEME = "file_scheme";
-  public static final String FILE_HOST = "file_host";
-  public static final String FILE_PORT = "file_port";
-  public static final String FILE_PATH = "file_path";
-  public static final String FILE_NAME = "file_name";
-  public static final String FILE_LENGTH = "file_length";
-  public static final String FILE_LAST_MODIFIED = "file_last_modified";
-  public static final String FILE_OWNER = "file_owner";
-  public static final String FILE_GROUP = "file_group";
-  public static final String FILE_PERMISSIONS_USER = "file_permissions_user";
-  public static final String FILE_PERMISSIONS_GROUP = "file_permissions_group";
-  public static final String FILE_PERMISSIONS_OTHER = "file_permissions_other";
-  public static final String FILE_PERMISSIONS_STICKYBIT = "file_permissions_stickybit";
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/HeartBeater.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/HeartBeater.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/HeartBeater.java
deleted file mode 100644
index 66cd3dc..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/HeartBeater.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.hadoop;
-
-import java.lang.invoke.MethodHandles;
-import java.util.Locale;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.hadoop.mapreduce.TaskInputOutputContext;
-import org.apache.hadoop.util.Progressable;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This class runs a background thread that once every 60 seconds checks to see if
- * a progress report is needed. If a report is needed it is issued.
- * 
- * A simple counter {@link #threadsNeedingHeartBeat} handles the number of
- * threads requesting a heart beat.
- * 
- * The expected usage pattern is
- * 
- * <pre>
- *  try {
- *       heartBeater.needHeartBeat();
- *       do something that may take a while
- *    } finally {
- *       heartBeater.cancelHeartBeat();
- *    }
- * </pre>
- * 
- * 
- */
-public class HeartBeater extends Thread {
-  
-  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  /**
-   * count of threads asking for heart beat, at 0 no heart beat done. This could
-   * be an atomic long but then missmatches in need/cancel could result in
-   * negative counts.
-   */
-  private volatile int threadsNeedingHeartBeat = 0;
-
-  private Progressable progress;
-
-  /**
-   * The amount of time to wait between checks for the need to issue a heart
-   * beat. In milliseconds.
-   */
-  private final long waitTimeMs = TimeUnit.MILLISECONDS.convert(60, TimeUnit.SECONDS);
-  
-  private final CountDownLatch isClosing = new CountDownLatch(1);
-
-  /**
-   * Create the heart beat object thread set it to daemon priority and start the
-   * thread. When the count in {@link #threadsNeedingHeartBeat} is positive, the
-   * heart beat will be issued on the progress object every 60 seconds.
-   */
-  public HeartBeater(Progressable progress) {
-    setDaemon(true);
-    this.progress = progress;
-    LOG.info("Heart beat reporting class is " + progress.getClass().getName());
-    start();
-  }
-
-  public Progressable getProgress() {
-    return progress;
-  }
-
-  public void setProgress(Progressable progress) {
-    this.progress = progress;
-  }
-
-  @Override
-  public void run() {
-    LOG.info("HeartBeat thread running");
-    while (true) {
-      try {
-        synchronized (this) {
-          if (threadsNeedingHeartBeat > 0) {
-            progress.progress();
-            if (LOG.isInfoEnabled()) {
-              LOG.info(String.format(Locale.ENGLISH, "Issuing heart beat for %d threads",
-                  threadsNeedingHeartBeat));
-            }
-          } else {
-            if (LOG.isInfoEnabled()) {
-              LOG.info(String.format(Locale.ENGLISH, "heartbeat skipped count %d",
-                  threadsNeedingHeartBeat));
-            }
-          }
-        }
-        if (isClosing.await(waitTimeMs, TimeUnit.MILLISECONDS)) {
-          return;
-        }
-      } catch (Throwable e) {
-        LOG.error("HeartBeat throwable", e);
-      }
-    }
-  }
-
-  /**
-   * inform the background thread that heartbeats are to be issued. Issue a
-   * heart beat also
-   */
-  public synchronized void needHeartBeat() {
-    threadsNeedingHeartBeat++;
-    // Issue a progress report right away,
-    // just in case the the cancel comes before the background thread issues a
-    // report.
-    // If enough cases like this happen the 600 second timeout can occur
-    progress.progress();
-    if (threadsNeedingHeartBeat == 1) {
-      // this.notify(); // wake up the heartbeater
-    }
-  }
-
-  /**
-   * inform the background thread that this heartbeat request is not needed.
-   * This must be called at some point after each {@link #needHeartBeat()}
-   * request.
-   */
-  public synchronized void cancelHeartBeat() {
-    if (threadsNeedingHeartBeat > 0) {
-      threadsNeedingHeartBeat--;
-    } else {
-      Exception e = new Exception("Dummy");
-      e.fillInStackTrace();
-      LOG.warn("extra call to cancelHeartBeat", e);
-    }
-  }
-
-  public void setStatus(String status) {
-    if (progress instanceof TaskInputOutputContext) {
-      ((TaskInputOutputContext<?,?,?,?>) progress).setStatus(status);
-    }
-  }
-  
-  /** Releases any resources */
-  public void close() {
-    isClosing.countDown();
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/LineRandomizerMapper.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/LineRandomizerMapper.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/LineRandomizerMapper.java
deleted file mode 100644
index 6f2638c..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/LineRandomizerMapper.java
+++ /dev/null
@@ -1,67 +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.hadoop;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.Random;
-
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Mapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * MR Mapper that randomizing a list of URLs.
- * 
- * Mapper input is (offset, URL) pairs. Each such pair indicates a file to
- * index.
- * 
- * Mapper output is (randomPosition, URL) pairs. The reducer receives these
- * pairs sorted by randomPosition.
- */
-public class LineRandomizerMapper extends Mapper<LongWritable, Text, LongWritable, Text> {
-
-  private Random random;
-  
-  private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  @Override
-  protected void setup(Context context) throws IOException, InterruptedException {
-    super.setup(context);
-    random = createRandom(context);
-  }
-
-  @Override
-  protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
-    LOGGER.debug("map key: {}, value: {}", key, value);
-    context.write(new LongWritable(random.nextLong()), value);
-  }
-  
-  private Random createRandom(Context context) {
-    long taskId = 0;
-    if (context.getTaskAttemptID() != null) { // MRUnit returns null
-      LOGGER.debug("context.getTaskAttemptID().getId(): {}", context.getTaskAttemptID().getId());
-      LOGGER.debug("context.getTaskAttemptID().getTaskID().getId(): {}", context.getTaskAttemptID().getTaskID().getId());
-      taskId = context.getTaskAttemptID().getTaskID().getId(); // taskId = 0, 1, ..., N
-    }
-    // create a good random seed, yet ensure deterministic PRNG sequence for easy reproducability
-    return new Random(421439783L * (taskId + 1));
-  }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/LineRandomizerReducer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/LineRandomizerReducer.java b/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/LineRandomizerReducer.java
deleted file mode 100644
index cbe194a..0000000
--- a/solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/LineRandomizerReducer.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.hadoop;
-
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Reducer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * MR Reducer that randomizing a list of URLs.
- * 
- * Reducer input is (randomPosition, URL) pairs. Each such pair indicates a file
- * to index.
- * 
- * Reducer output is a list of URLs, each URL in a random position.
- */
-public class LineRandomizerReducer extends Reducer<LongWritable, Text, Text, NullWritable> {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  @Override
-  protected void reduce(LongWritable key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
-    for (Text value : values) {
-      LOGGER.debug("reduce key: {}, value: {}", key, value);
-      context.write(value, NullWritable.get());
-    }
-  }
-}
\ No newline at end of file


[62/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10079: TestInPlaceUpdates(Distrib|Standalone) failures

Posted by cp...@apache.org.
SOLR-10079: TestInPlaceUpdates(Distrib|Standalone) failures


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

Branch: refs/heads/jira/solr-6203
Commit: 144091ad2957d59f83d59c7fcb1afeda65b0f914
Parents: 66bfdcb
Author: Cao Manh Dat <da...@apache.org>
Authored: Wed Mar 29 08:09:40 2017 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Wed Mar 29 08:09:40 2017 +0700

----------------------------------------------------------------------
 .../org/apache/solr/util/TestInjection.java     |  2 +-
 .../solr/update/TestInPlaceUpdatesDistrib.java  | 22 ++++++++------------
 2 files changed, 10 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/144091ad/solr/core/src/java/org/apache/solr/util/TestInjection.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/TestInjection.java b/solr/core/src/java/org/apache/solr/util/TestInjection.java
index 1299273..6b7b1f8 100644
--- a/solr/core/src/java/org/apache/solr/util/TestInjection.java
+++ b/solr/core/src/java/org/apache/solr/util/TestInjection.java
@@ -369,7 +369,7 @@ public class TestInjection {
     Pair<Boolean,Integer> pair = parseValue(waitForReplicasInSync);
     boolean enabled = pair.first();
     if (!enabled) return true;
-    long t = System.currentTimeMillis() - 100;
+    long t = System.currentTimeMillis() - 200;
     try {
       for (int i = 0; i < pair.second(); i++) {
         if (core.isClosed()) return true;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/144091ad/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java b/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java
index cbd7b02..f9f377c 100644
--- a/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java
+++ b/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java
@@ -201,7 +201,7 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
     assertEquals(2, NONLEADERS.size());
   }
 
-  final int NUM_RETRIES = 100, WAIT_TIME = 10;
+  final int NUM_RETRIES = 100, WAIT_TIME = 50;
 
   // The following should work: full update to doc 0, in-place update for doc 0, delete doc 0
   private void reorderedDBQsSimpleTest() throws Exception {
@@ -266,8 +266,6 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
     }
 
     log.info("reorderedDBQsSimpleTest: This test passed fine...");
-    clearIndex();
-    commit();
   }
 
   private void reorderedDBQIndividualReplicaTest() throws Exception {
@@ -324,7 +322,8 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
 
   private void docValuesUpdateTest() throws Exception {
     // number of docs we're testing (0 <= id), index may contain additional random docs (id < 0)
-    final int numDocs = atLeast(100);
+    int numDocs = atLeast(100);
+    if (onlyLeaderIndexes) numDocs = TestUtil.nextInt(random(), 10, 50);
     log.info("Trying num docs = " + numDocs);
     final List<Integer> ids = new ArrayList<Integer>(numDocs);
     for (int id = 0; id < numDocs; id++) {
@@ -667,8 +666,6 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
     }
 
     log.info("outOfOrderUpdatesIndividualReplicaTest: This test passed fine...");
-    clearIndex();
-    commit();
   }
   
   // The following should work: full update to doc 0, in-place update for doc 0, delete doc 0
@@ -733,8 +730,6 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
     }
 
     log.info("reorderedDeletesTest: This test passed fine...");
-    clearIndex();
-    commit();
   }
 
   /* Test for a situation when a document requiring in-place update cannot be "resurrected"
@@ -972,10 +967,11 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
     assertEquals("Field: " + fieldName, expected, rsp.getField());
   }
 
-  private static class AsyncUpdateWithRandomCommit implements Callable<UpdateResponse> {
+  private class AsyncUpdateWithRandomCommit implements Callable<UpdateResponse> {
     UpdateRequest update;
     SolrClient solrClient;
     final Random rnd;
+    int commitBound = onlyLeaderIndexes ? 50 : 3;
 
     public AsyncUpdateWithRandomCommit (UpdateRequest update, SolrClient solrClient, long seed) {
       this.update = update;
@@ -986,7 +982,7 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
     @Override
     public UpdateResponse call() throws Exception {
       UpdateResponse resp = update.process(solrClient); //solrClient.request(update);
-      if (rnd.nextInt(3) == 0)
+      if (rnd.nextInt(commitBound) == 0)
         solrClient.commit();
       return resp;
     }
@@ -1113,9 +1109,9 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
    * @return the versions of each of the specials document returned when indexing it
    */
   protected List<Long> buildRandomIndex(Float initFloat, List<Integer> specialIds) throws Exception {
-    
+
     int id = -1; // used for non special docs
-    final int numPreDocs = rarely() ? TestUtil.nextInt(random(),0,9) : atLeast(10);
+    final int numPreDocs = rarely() || onlyLeaderIndexes ? TestUtil.nextInt(random(),0,9) : atLeast(10);
     for (int i = 1; i <= numPreDocs; i++) {
       addDocAndGetVersion("id", id, "title_s", "title" + id, "id_i", id);
       id--;
@@ -1128,7 +1124,7 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
         versions.add(addDocAndGetVersion("id", special, "title_s", "title" + special, "id_i", special,
                                          "inplace_updatable_float", initFloat));
       }
-      final int numPostDocs = rarely() ? TestUtil.nextInt(random(),0,9) : atLeast(10);
+      final int numPostDocs = rarely() || onlyLeaderIndexes ? TestUtil.nextInt(random(),0,2) : atLeast(10);
       for (int i = 1; i <= numPostDocs; i++) {
         addDocAndGetVersion("id", id, "title_s", "title" + id, "id_i", id);
         id--;


[07/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-app-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-app-LICENSE-ASL.txt b/solr/licenses/hadoop-mapreduce-client-app-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-mapreduce-client-app-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-app-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-app-NOTICE.txt b/solr/licenses/hadoop-mapreduce-client-app-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-mapreduce-client-app-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-common-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-common-2.7.2.jar.sha1 b/solr/licenses/hadoop-mapreduce-client-common-2.7.2.jar.sha1
deleted file mode 100644
index 87b5693..0000000
--- a/solr/licenses/hadoop-mapreduce-client-common-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8021f146b10053f29c2085d0972b115395da1a33

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-common-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-common-LICENSE-ASL.txt b/solr/licenses/hadoop-mapreduce-client-common-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-mapreduce-client-common-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-common-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-common-NOTICE.txt b/solr/licenses/hadoop-mapreduce-client-common-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-mapreduce-client-common-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-core-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-core-2.7.2.jar.sha1 b/solr/licenses/hadoop-mapreduce-client-core-2.7.2.jar.sha1
deleted file mode 100644
index adc7aca..0000000
--- a/solr/licenses/hadoop-mapreduce-client-core-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-accf0f40de77a6d8cece5e3bd6bbc2a579102a4f

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-core-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-core-LICENSE-ASL.txt b/solr/licenses/hadoop-mapreduce-client-core-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-mapreduce-client-core-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-core-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-core-NOTICE.txt b/solr/licenses/hadoop-mapreduce-client-core-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-mapreduce-client-core-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-hs-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-hs-2.7.2.jar.sha1 b/solr/licenses/hadoop-mapreduce-client-hs-2.7.2.jar.sha1
deleted file mode 100644
index fedbe7f..0000000
--- a/solr/licenses/hadoop-mapreduce-client-hs-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-57ccdecef8a4d9075e5f37dc254776e410cc6230

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-hs-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-hs-LICENSE-ASL.txt b/solr/licenses/hadoop-mapreduce-client-hs-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-mapreduce-client-hs-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-hs-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-hs-NOTICE.txt b/solr/licenses/hadoop-mapreduce-client-hs-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-mapreduce-client-hs-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar.sha1 b/solr/licenses/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar.sha1
deleted file mode 100644
index bb4c7d1..0000000
--- a/solr/licenses/hadoop-mapreduce-client-jobclient-2.7.2-tests.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-c686047090283e21bd1d4659e6eabb73d726a4fe

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-jobclient-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-jobclient-2.7.2.jar.sha1 b/solr/licenses/hadoop-mapreduce-client-jobclient-2.7.2.jar.sha1
deleted file mode 100644
index e9d8e63..0000000
--- a/solr/licenses/hadoop-mapreduce-client-jobclient-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-cb2ca1e41075d55ad6dacf2f54cc0f0f97d623b6

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-jobclient-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-jobclient-LICENSE-ASL.txt b/solr/licenses/hadoop-mapreduce-client-jobclient-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-mapreduce-client-jobclient-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-jobclient-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-jobclient-NOTICE.txt b/solr/licenses/hadoop-mapreduce-client-jobclient-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-mapreduce-client-jobclient-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-mapreduce-client-shuffle-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-mapreduce-client-shuffle-2.7.2.jar.sha1 b/solr/licenses/hadoop-mapreduce-client-shuffle-2.7.2.jar.sha1
deleted file mode 100644
index 3efabe6..0000000
--- a/solr/licenses/hadoop-mapreduce-client-shuffle-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-edaf659eaf16effa6c7f759c603ab3e2c0f976f3


[16/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

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

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ro.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ro.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ro.txt
deleted file mode 100644
index 4fdee90..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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\u0103
-aceea
-acei
-aceia
-acel
-acela
-acele
-acelea
-acest
-acesta
-aceste
-acestea
-ace\u015fti
-ace\u015ftia
-acolo
-acum
-ai
-aia
-aib\u0103
-aici
-al
-\u0103la
-ale
-alea
-\u0103lea
-altceva
-altcineva
-am
-ar
-are
-a\u015f
-a\u015fadar
-asemenea
-asta
-\u0103sta
-ast\u0103zi
-astea
-\u0103stea
-\u0103\u015ftia
-asupra
-a\u0163i
-au
-avea
-avem
-ave\u0163i
-azi
-bine
-bucur
-bun\u0103
-ca
-c\u0103
-c\u0103ci
-c�nd
-care
-c\u0103rei
-c\u0103ror
-c\u0103rui
-c�t
-c�te
-c�\u0163i
-c\u0103tre
-c�tva
-ce
-cel
-ceva
-chiar
-c�nd
-cine
-cineva
-c�t
-c�te
-c�\u0163i
-c�tva
-contra
-cu
-cum
-cumva
-cur�nd
-cur�nd
-da
-d\u0103
-dac\u0103
-dar
-datorit\u0103
-de
-deci
-deja
-deoarece
-departe
-de\u015fi
-din
-dinaintea
-dintr
-dintre
-drept
-dup\u0103
-ea
-ei
-el
-ele
-eram
-este
-e\u015fti
-eu
-face
-f\u0103r\u0103
-fi
-fie
-fiecare
-fii
-fim
-fi\u0163i
-iar
-ieri
-�i
-�l
-�mi
-�mpotriva
-�n 
-�nainte
-�naintea
-�nc�t
-�nc�t
-�ncotro
-�ntre
-�ntruc�t
-�ntruc�t
-�\u0163i
-la
-l�ng\u0103
-le
-li
-l�ng\u0103
-lor
-lui
-m\u0103
-m�ine
-mea
-mei
-mele
-mereu
-meu
-mi
-mine
-mult
-mult\u0103
-mul\u0163i
-ne
-nic\u0103ieri
-nici
-nimeni
-ni\u015fte
-noastr\u0103
-noastre
-noi
-no\u015ftri
-nostru
-nu
-ori
-oric�nd
-oricare
-oric�t
-orice
-oric�nd
-oricine
-oric�t
-oricum
-oriunde
-p�n\u0103
-pe
-pentru
-peste
-p�n\u0103
-poate
-pot
-prea
-prima
-primul
-prin
-printr
-sa
-s\u0103
-s\u0103i
-sale
-sau
-s\u0103u
-se
-\u015fi
-s�nt
-s�ntem
-s�nte\u0163i
-spre
-sub
-sunt
-suntem
-sunte\u0163i
-ta
-t\u0103i
-tale
-t\u0103u
-te
-\u0163i
-\u0163ie
-tine
-toat\u0103
-toate
-tot
-to\u0163i
-totu\u015fi
-tu
-un
-una
-unde
-undeva
-unei
-unele
-uneori
-unor
-v\u0103
-vi
-voastr\u0103
-voastre
-voi
-vo\u015ftri
-vostru
-vou\u0103
-vreo
-vreun

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ru.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ru.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ru.txt
deleted file mode 100644
index 6430769..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_ru.txt
+++ /dev/null
@@ -1,241 +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.
-
- | 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 `\u0451' is translated to `\u0435'.
-
-\u0438              | and
-\u0432              | in/into
-\u0432\u043e             | alternative form
-\u043d\u0435             | not
-\u0447\u0442\u043e            | what/that
-\u043e\u043d             | he
-\u043d\u0430             | on/onto
-\u044f              | i
-\u0441              | from
-\u0441\u043e             | alternative form
-\u043a\u0430\u043a            | how
-\u0430              | milder form of `no' (but)
-\u0442\u043e             | conjunction and form of `that'
-\u0432\u0441\u0435            | all
-\u043e\u043d\u0430            | she
-\u0442\u0430\u043a            | so, thus
-\u0435\u0433\u043e            | him
-\u043d\u043e             | but
-\u0434\u0430             | yes/and
-\u0442\u044b             | thou
-\u043a              | towards, by
-\u0443              | around, chez
-\u0436\u0435             | intensifier particle
-\u0432\u044b             | you
-\u0437\u0430             | beyond, behind
-\u0431\u044b             | conditional/subj. particle
-\u043f\u043e             | up to, along
-\u0442\u043e\u043b\u044c\u043a\u043e         | only
-\u0435\u0435             | her
-\u043c\u043d\u0435            | to me
-\u0431\u044b\u043b\u043e           | it was
-\u0432\u043e\u0442            | here is/are, particle
-\u043e\u0442             | away from
-\u043c\u0435\u043d\u044f           | me
-\u0435\u0449\u0435            | still, yet, more
-\u043d\u0435\u0442            | no, there isnt/arent
-\u043e              | about
-\u0438\u0437             | out of
-\u0435\u043c\u0443            | to him
-\u0442\u0435\u043f\u0435\u0440\u044c         | now
-\u043a\u043e\u0433\u0434\u0430          | when
-\u0434\u0430\u0436\u0435           | even
-\u043d\u0443             | so, well
-\u0432\u0434\u0440\u0443\u0433          | suddenly
-\u043b\u0438             | interrogative particle
-\u0435\u0441\u043b\u0438           | if
-\u0443\u0436\u0435            | already, but homonym of `narrower'
-\u0438\u043b\u0438            | or
-\u043d\u0438             | neither
-\u0431\u044b\u0442\u044c           | to be
-\u0431\u044b\u043b            | he was
-\u043d\u0435\u0433\u043e           | prepositional form of \u0435\u0433\u043e
-\u0434\u043e             | up to
-\u0432\u0430\u0441            | you accusative
-\u043d\u0438\u0431\u0443\u0434\u044c         | indef. suffix preceded by hyphen
-\u043e\u043f\u044f\u0442\u044c          | again
-\u0443\u0436             | already, but homonym of `adder'
-\u0432\u0430\u043c            | to you
-\u0441\u043a\u0430\u0437\u0430\u043b         | he said
-\u0432\u0435\u0434\u044c           | particle `after all'
-\u0442\u0430\u043c            | there
-\u043f\u043e\u0442\u043e\u043c          | then
-\u0441\u0435\u0431\u044f           | oneself
-\u043d\u0438\u0447\u0435\u0433\u043e         | nothing
-\u0435\u0439             | to her
-\u043c\u043e\u0436\u0435\u0442          | usually with `\u0431\u044b\u0442\u044c' as `maybe'
-\u043e\u043d\u0438            | they
-\u0442\u0443\u0442            | here
-\u0433\u0434\u0435            | where
-\u0435\u0441\u0442\u044c           | there is/are
-\u043d\u0430\u0434\u043e           | got to, must
-\u043d\u0435\u0439            | prepositional form of  \u0435\u0439
-\u0434\u043b\u044f            | for
-\u043c\u044b             | we
-\u0442\u0435\u0431\u044f           | thee
-\u0438\u0445             | them, their
-\u0447\u0435\u043c            | than
-\u0431\u044b\u043b\u0430           | she was
-\u0441\u0430\u043c            | self
-\u0447\u0442\u043e\u0431           | in order to
-\u0431\u0435\u0437            | without
-\u0431\u0443\u0434\u0442\u043e          | as if
-\u0447\u0435\u043b\u043e\u0432\u0435\u043a        | man, person, one
-\u0447\u0435\u0433\u043e           | genitive form of `what'
-\u0440\u0430\u0437            | once
-\u0442\u043e\u0436\u0435           | also
-\u0441\u0435\u0431\u0435           | to oneself
-\u043f\u043e\u0434            | beneath
-\u0436\u0438\u0437\u043d\u044c          | life
-\u0431\u0443\u0434\u0435\u0442          | will be
-\u0436              | short form of intensifer particle `\u0436\u0435'
-\u0442\u043e\u0433\u0434\u0430          | then
-\u043a\u0442\u043e            | who
-\u044d\u0442\u043e\u0442           | this
-\u0433\u043e\u0432\u043e\u0440\u0438\u043b        | was saying
-\u0442\u043e\u0433\u043e           | genitive form of `that'
-\u043f\u043e\u0442\u043e\u043c\u0443         | for that reason
-\u044d\u0442\u043e\u0433\u043e          | genitive form of `this'
-\u043a\u0430\u043a\u043e\u0439          | which
-\u0441\u043e\u0432\u0441\u0435\u043c         | altogether
-\u043d\u0438\u043c            | prepositional form of `\u0435\u0433\u043e', `\u043e\u043d\u0438'
-\u0437\u0434\u0435\u0441\u044c          | here
-\u044d\u0442\u043e\u043c           | prepositional form of `\u044d\u0442\u043e\u0442'
-\u043e\u0434\u0438\u043d           | one
-\u043f\u043e\u0447\u0442\u0438          | almost
-\u043c\u043e\u0439            | my
-\u0442\u0435\u043c            | instrumental/dative plural of `\u0442\u043e\u0442', `\u0442\u043e'
-\u0447\u0442\u043e\u0431\u044b          | full form of `in order that'
-\u043d\u0435\u0435            | her (acc.)
-\u043a\u0430\u0436\u0435\u0442\u0441\u044f        | it seems
-\u0441\u0435\u0439\u0447\u0430\u0441         | now
-\u0431\u044b\u043b\u0438           | they were
-\u043a\u0443\u0434\u0430           | where to
-\u0437\u0430\u0447\u0435\u043c          | why
-\u0441\u043a\u0430\u0437\u0430\u0442\u044c        | to say
-\u0432\u0441\u0435\u0445           | all (acc., gen. preposn. plural)
-\u043d\u0438\u043a\u043e\u0433\u0434\u0430        | never
-\u0441\u0435\u0433\u043e\u0434\u043d\u044f        | today
-\u043c\u043e\u0436\u043d\u043e          | possible, one can
-\u043f\u0440\u0438            | by
-\u043d\u0430\u043a\u043e\u043d\u0435\u0446        | finally
-\u0434\u0432\u0430            | two
-\u043e\u0431             | alternative form of `\u043e', about
-\u0434\u0440\u0443\u0433\u043e\u0439         | another
-\u0445\u043e\u0442\u044c           | even
-\u043f\u043e\u0441\u043b\u0435          | after
-\u043d\u0430\u0434            | above
-\u0431\u043e\u043b\u044c\u0448\u0435         | more
-\u0442\u043e\u0442            | that one (masc.)
-\u0447\u0435\u0440\u0435\u0437          | across, in
-\u044d\u0442\u0438            | these
-\u043d\u0430\u0441            | us
-\u043f\u0440\u043e            | about
-\u0432\u0441\u0435\u0433\u043e          | in all, only, of all
-\u043d\u0438\u0445            | prepositional form of `\u043e\u043d\u0438' (they)
-\u043a\u0430\u043a\u0430\u044f          | which, feminine
-\u043c\u043d\u043e\u0433\u043e          | lots
-\u0440\u0430\u0437\u0432\u0435          | interrogative particle
-\u0441\u043a\u0430\u0437\u0430\u043b\u0430        | she said
-\u0442\u0440\u0438            | three
-\u044d\u0442\u0443            | this, acc. fem. sing.
-\u043c\u043e\u044f            | my, feminine
-\u0432\u043f\u0440\u043e\u0447\u0435\u043c        | moreover, besides
-\u0445\u043e\u0440\u043e\u0448\u043e         | good
-\u0441\u0432\u043e\u044e           | ones own, acc. fem. sing.
-\u044d\u0442\u043e\u0439           | oblique form of `\u044d\u0442\u0430', fem. `this'
-\u043f\u0435\u0440\u0435\u0434          | in front of
-\u0438\u043d\u043e\u0433\u0434\u0430         | sometimes
-\u043b\u0443\u0447\u0448\u0435          | better
-\u0447\u0443\u0442\u044c           | a little
-\u0442\u043e\u043c            | preposn. form of `that one'
-\u043d\u0435\u043b\u044c\u0437\u044f         | one must not
-\u0442\u0430\u043a\u043e\u0439          | such a one
-\u0438\u043c             | to them
-\u0431\u043e\u043b\u0435\u0435          | more
-\u0432\u0441\u0435\u0433\u0434\u0430         | always
-\u043a\u043e\u043d\u0435\u0447\u043d\u043e        | of course
-\u0432\u0441\u044e            | acc. fem. sing of `all'
-\u043c\u0435\u0436\u0434\u0443          | between
-
-
-  | b: some paradigms
-  |
-  | personal pronouns
-  |
-  | \u044f  \u043c\u0435\u043d\u044f  \u043c\u043d\u0435  \u043c\u043d\u043e\u0439  [\u043c\u043d\u043e\u044e]
-  | \u0442\u044b  \u0442\u0435\u0431\u044f  \u0442\u0435\u0431\u0435  \u0442\u043e\u0431\u043e\u0439  [\u0442\u043e\u0431\u043e\u044e]
-  | \u043e\u043d  \u0435\u0433\u043e  \u0435\u043c\u0443  \u0438\u043c  [\u043d\u0435\u0433\u043e, \u043d\u0435\u043c\u0443, \u043d\u0438\u043c]
-  | \u043e\u043d\u0430  \u0435\u0435  \u044d\u0438  \u0435\u044e  [\u043d\u0435\u0435, \u043d\u044d\u0438, \u043d\u0435\u044e]
-  | \u043e\u043d\u043e  \u0435\u0433\u043e  \u0435\u043c\u0443  \u0438\u043c  [\u043d\u0435\u0433\u043e, \u043d\u0435\u043c\u0443, \u043d\u0438\u043c]
-  |
-  | \u043c\u044b  \u043d\u0430\u0441  \u043d\u0430\u043c  \u043d\u0430\u043c\u0438
-  | \u0432\u044b  \u0432\u0430\u0441  \u0432\u0430\u043c  \u0432\u0430\u043c\u0438
-  | \u043e\u043d\u0438  \u0438\u0445  \u0438\u043c  \u0438\u043c\u0438  [\u043d\u0438\u0445, \u043d\u0438\u043c, \u043d\u0438\u043c\u0438]
-  |
-  |   \u0441\u0435\u0431\u044f  \u0441\u0435\u0431\u0435  \u0441\u043e\u0431\u043e\u0439   [\u0441\u043e\u0431\u043e\u044e]
-  |
-  | demonstrative pronouns: \u044d\u0442\u043e\u0442 (this), \u0442\u043e\u0442 (that)
-  |
-  | \u044d\u0442\u043e\u0442  \u044d\u0442\u0430  \u044d\u0442\u043e  \u044d\u0442\u0438
-  | \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u044b  \u044d\u0442\u043e  \u044d\u0442\u0438
-  | \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u0433\u043e  \u044d\u0442\u0438\u0445
-  | \u044d\u0442\u043e\u043c\u0443  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u043c\u0443  \u044d\u0442\u0438\u043c
-  | \u044d\u0442\u0438\u043c  \u044d\u0442\u043e\u0439  \u044d\u0442\u0438\u043c  [\u044d\u0442\u043e\u044e]  \u044d\u0442\u0438\u043c\u0438
-  | \u044d\u0442\u043e\u043c  \u044d\u0442\u043e\u0439  \u044d\u0442\u043e\u043c  \u044d\u0442\u0438\u0445
-  |
-  | \u0442\u043e\u0442  \u0442\u0430  \u0442\u043e  \u0442\u0435
-  | \u0442\u043e\u0433\u043e  \u0442\u0443  \u0442\u043e  \u0442\u0435
-  | \u0442\u043e\u0433\u043e  \u0442\u043e\u0439  \u0442\u043e\u0433\u043e  \u0442\u0435\u0445
-  | \u0442\u043e\u043c\u0443  \u0442\u043e\u0439  \u0442\u043e\u043c\u0443  \u0442\u0435\u043c
-  | \u0442\u0435\u043c  \u0442\u043e\u0439  \u0442\u0435\u043c  [\u0442\u043e\u044e]  \u0442\u0435\u043c\u0438
-  | \u0442\u043e\u043c  \u0442\u043e\u0439  \u0442\u043e\u043c  \u0442\u0435\u0445
-  |
-  | determinative pronouns
-  |
-  | (a) \u0432\u0435\u0441\u044c (all)
-  |
-  | \u0432\u0435\u0441\u044c  \u0432\u0441\u044f  \u0432\u0441\u0435  \u0432\u0441\u0435
-  | \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u044e  \u0432\u0441\u0435  \u0432\u0441\u0435
-  | \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u0433\u043e  \u0432\u0441\u0435\u0445
-  | \u0432\u0441\u0435\u043c\u0443  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c\u0443  \u0432\u0441\u0435\u043c
-  | \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c  [\u0432\u0441\u0435\u044e]  \u0432\u0441\u0435\u043c\u0438
-  | \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0439  \u0432\u0441\u0435\u043c  \u0432\u0441\u0435\u0445
-  |
-  | (b) \u0441\u0430\u043c (himself etc)
-  |
-  | \u0441\u0430\u043c  \u0441\u0430\u043c\u0430  \u0441\u0430\u043c\u043e  \u0441\u0430\u043c\u0438
-  | \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0430\u043c\u0443  \u0441\u0430\u043c\u043e  \u0441\u0430\u043c\u0438\u0445
-  | \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u0433\u043e  \u0441\u0430\u043c\u0438\u0445
-  | \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u043c\u0443  \u0441\u0430\u043c\u0438\u043c
-  | \u0441\u0430\u043c\u0438\u043c  \u0441\u0430\u043c\u043e\u0439  \u0441\u0430\u043c\u0438\u043c  [\u0441\u0430\u043c\u043e\u044e]  \u0441\u0430\u043c\u0438\u043c\u0438
-  | \u0441\u0430\u043c\u043e\u043c \u0441\u0430\u043c\u043e\u0439 \u0441\u0430\u043c\u043e\u043c  \u0441\u0430\u043c\u0438\u0445
-  |
-  | stems of verbs `to be', `to have', `to do' and modal
-  |
-  | \u0431\u044b\u0442\u044c  \u0431\u044b  \u0431\u0443\u0434  \u0431\u044b\u0432  \u0435\u0441\u0442\u044c  \u0441\u0443\u0442\u044c
-  | \u0438\u043c\u0435
-  | \u0434\u0435\u043b
-  | \u043c\u043e\u0433   \u043c\u043e\u0436  \u043c\u043e\u0447\u044c
-  | \u0443\u043c\u0435
-  | \u0445\u043e\u0447  \u0445\u043e\u0442
-  | \u0434\u043e\u043b\u0436
-  | \u043c\u043e\u0436\u043d
-  | \u043d\u0443\u0436\u043d
-  | \u043d\u0435\u043b\u044c\u0437\u044f
-

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

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_th.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_th.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_th.txt
deleted file mode 100644
index 07f0fab..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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
-\u0e44\u0e27\u0e49
-\u0e44\u0e21\u0e48
-\u0e44\u0e1b
-\u0e44\u0e14\u0e49
-\u0e43\u0e2b\u0e49
-\u0e43\u0e19
-\u0e42\u0e14\u0e22
-\u0e41\u0e2b\u0e48\u0e07
-\u0e41\u0e25\u0e49\u0e27
-\u0e41\u0e25\u0e30
-\u0e41\u0e23\u0e01
-\u0e41\u0e1a\u0e1a
-\u0e41\u0e15\u0e48
-\u0e40\u0e2d\u0e07
-\u0e40\u0e2b\u0e47\u0e19
-\u0e40\u0e25\u0e22
-\u0e40\u0e23\u0e34\u0e48\u0e21
-\u0e40\u0e23\u0e32
-\u0e40\u0e21\u0e37\u0e48\u0e2d
-\u0e40\u0e1e\u0e37\u0e48\u0e2d
-\u0e40\u0e1e\u0e23\u0e32\u0e30
-\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23
-\u0e40\u0e1b\u0e47\u0e19
-\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22
-\u0e40\u0e1b\u0e34\u0e14
-\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01
-\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19
-\u0e40\u0e14\u0e35\u0e22\u0e27
-\u0e40\u0e0a\u0e48\u0e19
-\u0e40\u0e09\u0e1e\u0e32\u0e30
-\u0e40\u0e04\u0e22
-\u0e40\u0e02\u0e49\u0e32
-\u0e40\u0e02\u0e32
-\u0e2d\u0e35\u0e01
-\u0e2d\u0e32\u0e08
-\u0e2d\u0e30\u0e44\u0e23
-\u0e2d\u0e2d\u0e01
-\u0e2d\u0e22\u0e48\u0e32\u0e07
-\u0e2d\u0e22\u0e39\u0e48
-\u0e2d\u0e22\u0e32\u0e01
-\u0e2b\u0e32\u0e01
-\u0e2b\u0e25\u0e32\u0e22
-\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01
-\u0e2b\u0e25\u0e31\u0e07
-\u0e2b\u0e23\u0e37\u0e2d
-\u0e2b\u0e19\u0e36\u0e48\u0e07
-\u0e2a\u0e48\u0e27\u0e19
-\u0e2a\u0e48\u0e07
-\u0e2a\u0e38\u0e14
-\u0e2a\u0e4d\u0e32\u0e2b\u0e23\u0e31\u0e1a
-\u0e27\u0e48\u0e32
-\u0e27\u0e31\u0e19
-\u0e25\u0e07
-\u0e23\u0e48\u0e27\u0e21
-\u0e23\u0e32\u0e22
-\u0e23\u0e31\u0e1a
-\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07
-\u0e23\u0e27\u0e21
-\u0e22\u0e31\u0e07
-\u0e21\u0e35
-\u0e21\u0e32\u0e01
-\u0e21\u0e32
-\u0e1e\u0e23\u0e49\u0e2d\u0e21
-\u0e1e\u0e1a
-\u0e1c\u0e48\u0e32\u0e19
-\u0e1c\u0e25
-\u0e1a\u0e32\u0e07
-\u0e19\u0e48\u0e32
-\u0e19\u0e35\u0e49
-\u0e19\u0e4d\u0e32
-\u0e19\u0e31\u0e49\u0e19
-\u0e19\u0e31\u0e01
-\u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01
-\u0e17\u0e38\u0e01
-\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14
-\u0e17\u0e35\u0e48
-\u0e17\u0e4d\u0e32\u0e43\u0e2b\u0e49
-\u0e17\u0e4d\u0e32
-\u0e17\u0e32\u0e07
-\u0e17\u0e31\u0e49\u0e07\u0e19\u0e35\u0e49
-\u0e17\u0e31\u0e49\u0e07
-\u0e16\u0e49\u0e32
-\u0e16\u0e39\u0e01
-\u0e16\u0e36\u0e07
-\u0e15\u0e49\u0e2d\u0e07
-\u0e15\u0e48\u0e32\u0e07\u0e46
-\u0e15\u0e48\u0e32\u0e07
-\u0e15\u0e48\u0e2d
-\u0e15\u0e32\u0e21
-\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48
-\u0e15\u0e31\u0e49\u0e07
-\u0e14\u0e49\u0e32\u0e19
-\u0e14\u0e49\u0e27\u0e22
-\u0e14\u0e31\u0e07
-\u0e0b\u0e36\u0e48\u0e07
-\u0e0a\u0e48\u0e27\u0e07
-\u0e08\u0e36\u0e07
-\u0e08\u0e32\u0e01
-\u0e08\u0e31\u0e14
-\u0e08\u0e30
-\u0e04\u0e37\u0e2d
-\u0e04\u0e27\u0e32\u0e21
-\u0e04\u0e23\u0e31\u0e49\u0e07
-\u0e04\u0e07
-\u0e02\u0e36\u0e49\u0e19
-\u0e02\u0e2d\u0e07
-\u0e02\u0e2d
-\u0e02\u0e13\u0e30
-\u0e01\u0e48\u0e2d\u0e19
-\u0e01\u0e47
-\u0e01\u0e32\u0e23
-\u0e01\u0e31\u0e1a
-\u0e01\u0e31\u0e19
-\u0e01\u0e27\u0e48\u0e32
-\u0e01\u0e25\u0e48\u0e32\u0e27

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_tr.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_tr.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/stopwords_tr.txt
deleted file mode 100644
index 84d9408..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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\u0131\u015f
-alt\u0131
-ama
-ancak
-arada
-asl\u0131nda
-ayr\u0131ca
-bana
-baz\u0131
-belki
-ben
-benden
-beni
-benim
-beri
-be\u015f
-bile
-bin
-bir
-bir�ok
-biri
-birka�
-birkez
-bir\u015fey
-bir\u015feyi
-biz
-bize
-bizden
-bizi
-bizim
-b�yle
-b�ylece
-bu
-buna
-bunda
-bundan
-bunlar
-bunlar\u0131
-bunlar\u0131n
-bunu
-bunun
-burada
-�ok
-��nk�
-da
-daha
-dahi
-de
-defa
-de\u011fil
-di\u011fer
-diye
-doksan
-dokuz
-dolay\u0131
-dolay\u0131s\u0131yla
-d�rt
-edecek
-eden
-ederek
-edilecek
-ediliyor
-edilmesi
-ediyor
-e\u011fer
-elli
-en
-etmesi
-etti
-etti\u011fi
-etti\u011fini
-gibi
-g�re
-halen
-hangi
-hatta
-hem
-hen�z
-hep
-hepsi
-her
-herhangi
-herkesin
-hi�
-hi�bir
-i�in
-iki
-ile
-ilgili
-ise
-i\u015fte
-itibaren
-itibariyle
-kadar
-kar\u015f\u0131n
-katrilyon
-kendi
-kendilerine
-kendini
-kendisi
-kendisine
-kendisini
-kez
-ki
-kim
-kimden
-kime
-kimi
-kimse
-k\u0131rk
-milyar
-milyon
-mu
-m�
-m\u0131
-nas\u0131l
-ne
-neden
-nedenle
-nerde
-nerede
-nereye
-niye
-ni�in
-o
-olan
-olarak
-oldu
-oldu\u011fu
-oldu\u011funu
-olduklar\u0131n\u0131
-olmad\u0131
-olmad\u0131\u011f\u0131
-olmak
-olmas\u0131
-olmayan
-olmaz
-olsa
-olsun
-olup
-olur
-olursa
-oluyor
-on
-ona
-ondan
-onlar
-onlardan
-onlar\u0131
-onlar\u0131n
-onu
-onun
-otuz
-oysa
-�yle
-pek
-ra\u011fmen
-sadece
-sanki
-sekiz
-seksen
-sen
-senden
-seni
-senin
-siz
-sizden
-sizi
-sizin
-\u015fey
-\u015feyden
-\u015feyi
-\u015feyler
-\u015f�yle
-\u015fu
-\u015funa
-\u015funda
-\u015fundan
-\u015funlar\u0131
-\u015funu
-taraf\u0131ndan
-trilyon
-t�m
-��
-�zere
-var
-vard\u0131
-ve
-veya
-ya
-yani
-yapacak
-yap\u0131lan
-yap\u0131lmas\u0131
-yap\u0131yor
-yapmak
-yapt\u0131
-yapt\u0131\u011f\u0131
-yapt\u0131\u011f\u0131n\u0131
-yapt\u0131klar\u0131
-yedi
-yerine
-yetmi\u015f
-yine
-yirmi
-yoksa
-y�z
-zaten

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/userdict_ja.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/userdict_ja.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/lang/userdict_ja.txt
deleted file mode 100644
index 6f0368e..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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
-\u65e5\u672c\u7d4c\u6e08\u65b0\u805e,\u65e5\u672c \u7d4c\u6e08 \u65b0\u805e,\u30cb\u30db\u30f3 \u30b1\u30a4\u30b6\u30a4 \u30b7\u30f3\u30d6\u30f3,\u30ab\u30b9\u30bf\u30e0\u540d\u8a5e
-\u95a2\u897f\u56fd\u969b\u7a7a\u6e2f,\u95a2\u897f \u56fd\u969b \u7a7a\u6e2f,\u30ab\u30f3\u30b5\u30a4 \u30b3\u30af\u30b5\u30a4 \u30af\u30a6\u30b3\u30a6,\u30ab\u30b9\u30bf\u30e0\u540d\u8a5e
-
-# Custom segmentation for compound katakana
-\u30c8\u30fc\u30c8\u30d0\u30c3\u30b0,\u30c8\u30fc\u30c8 \u30d0\u30c3\u30b0,\u30c8\u30fc\u30c8 \u30d0\u30c3\u30b0,\u304b\u305a\u30ab\u30ca\u540d\u8a5e
-\u30b7\u30e7\u30eb\u30c0\u30fc\u30d0\u30c3\u30b0,\u30b7\u30e7\u30eb\u30c0\u30fc \u30d0\u30c3\u30b0,\u30b7\u30e7\u30eb\u30c0\u30fc \u30d0\u30c3\u30b0,\u304b\u305a\u30ab\u30ca\u540d\u8a5e
-
-# Custom reading for former sumo wrestler
-\u671d\u9752\u9f8d,\u671d\u9752\u9f8d,\u30a2\u30b5\u30b7\u30e7\u30a6\u30ea\u30e5\u30a6,\u30ab\u30b9\u30bf\u30e0\u4eba\u540d

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/protwords.txt
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/protwords.txt b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/protwords.txt
deleted file mode 100644
index 1dfc0ab..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/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
-

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/schema.xml b/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/schema.xml
deleted file mode 100644
index bb2f803..0000000
--- a/solr/contrib/morphlines-core/src/test-files/solr/mrunit/conf/schema.xml
+++ /dev/null
@@ -1,940 +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.
--->
-
-<!--  
- This is the Solr schema file. This file should be named "schema.xml" and
- should be in the conf directory under the solr home
- (i.e. ./solr/conf/schema.xml by default) 
- or located where the classloader for the Solr webapp can find it.
-
- This example schema is the recommended starting point for users.
- It should be kept correct and concise, usable out-of-the-box.
-
- For more information, on how to customize this file, please see
- http://wiki.apache.org/solr/SchemaXml
-
- PERFORMANCE NOTE: this schema includes many optional features and should not
- be used for benchmarking.  To improve performance one could
-  - set stored="false" for all fields possible (esp large fields) when you
-    only need to search on the field but don't need to return the original
-    value.
-  - set indexed="false" if you don't need to search on the field, but only
-    return the field as a result of searching on other indexed fields.
-  - remove all unneeded copyField statements
-  - for best index size and searching performance, set "index" to false
-    for all general text fields, use copyField to copy them to the
-    catchall "text" field, and use that for searching.
-  - For maximum indexing performance, use the ConcurrentUpdateSolrServer
-    java client.
-  - Remember to run the JVM in server mode, and use a higher logging level
-    that avoids logging every request
--->
-
-<schema name="example" version="1.6">
-  <!-- attribute "name" is the name of this schema and is only used for display purposes.
-       version="x.y" is Solr's version number for the schema syntax and 
-       semantics.  It should not normally be changed by applications.
-
-       1.0: multiValued attribute did not exist, all fields are multiValued 
-            by nature
-       1.1: multiValued attribute introduced, false by default 
-       1.2: omitTermFreqAndPositions attribute introduced, true by default 
-            except for text fields.
-       1.3: removed optional field compress feature
-       1.4: autoGeneratePhraseQueries attribute introduced to drive QueryParser
-            behavior when a single string produces multiple tokens.  Defaults 
-            to off for version >= 1.4
-       1.5: omitNorms defaults to true for primitive field types 
-            (int, float, boolean, string...)
-       1.6: useDocValuesAsStored defaults to true.
-     -->
-
-
-  <!-- Valid attributes for fields:
-    name: mandatory - the name for the field
-    type: mandatory - the name of a field type from the 
-      fieldTypes section
-    indexed: true if this field should be indexed (searchable or sortable)
-    stored: true if this field should be retrievable
-    docValues: true if this field should have doc values. Doc values are
-      useful for faceting, grouping, sorting and function queries. Although not
-      required, doc values will make the index faster to load, more
-      NRT-friendly and more memory-efficient. They however come with some
-      limitations: they are currently only supported by StrField, UUIDField
-      and all Trie*Fields, and depending on the field type, they might
-      require the field to be single-valued, be required or have a default
-      value (check the documentation of the field type you're interested in
-      for more information)
-    multiValued: true if this field may contain multiple values per document
-    omitNorms: (expert) set to true to omit the norms associated with
-      this field (this disables length normalization and index-time
-      boosting for the field, and saves some memory).  Only full-text
-      fields or fields that need an index-time boost need norms.
-      Norms are omitted for primitive (non-analyzed) types by default.
-    termVectors: [false] set to true to store the term vector for a
-      given field.
-      When using MoreLikeThis, fields used for similarity should be
-      stored for best performance.
-    termPositions: Store position information with the term vector.  
-      This will increase storage costs.
-    termOffsets: Store offset information with the term vector. This 
-      will increase storage costs.
-    required: The field is required.  It will throw an error if the
-      value does not exist
-    default: a value that should be used if no value is specified
-      when adding a document.
-  -->
-
-  <!-- field names should consist of alphanumeric or underscore characters only and
-     not start with a digit.  This is not currently strictly enforced,
-     but other field names will not have first class support from all components
-     and back compatibility is not guaranteed.  Names with both leading and
-     trailing underscores (e.g. _version_) are reserved.
-  -->
-
-  <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
-  <field name="user_friends_count" type="tint" indexed="true" stored="true"/>
-  <field name="user_location" type="lowercase" indexed="true" stored="true"/>
-  <field name="user_description" type="text_en" indexed="true" stored="false"/>
-  <field name="user_statuses_count" type="tint" indexed="true" stored="true"/>
-  <field name="user_followers_count" type="tint" indexed="true" stored="true"/>
-  <field name="user_name" type="text_en" indexed="true" stored="true"/>
-  <field name="user_screen_name" type="text_en" indexed="true" stored="true"/>
-  <field name="created_at" type="tdate" indexed="true" stored="true"/>
-  <field name="text" type="text_en" indexed="true" stored="true"/>
-  <field name="retweet_count" type="tint" indexed="true" stored="true"/>
-  <field name="retweeted" type="boolean" indexed="true" stored="false"/>
-  <field name="in_reply_to_user_id" type="long" indexed="true" stored="true"/>
-  <field name="source" type="lowercase" indexed="true" stored="true"/>
-  <field name="in_reply_to_status_id" type="long" indexed="true" stored="true" multiValued="true"/>
-  <field name="media_url_https" type="string" indexed="false" stored="true"/>
-  <field name="expanded_url" type="string" indexed="false" stored="true"/>
-
-  <!-- file metadata -->
-  <field name="file_download_url" type="string" indexed="false" stored="true"/>
-  <field name="file_upload_url" type="string" indexed="false" stored="true"/>
-  <field name="file_scheme" type="string" indexed="true" stored="true"/>
-  <field name="file_host" type="string" indexed="true" stored="true"/>
-  <field name="file_port" type="int" indexed="true" stored="true"/>
-  <field name="file_path" type="string" indexed="true" stored="true"/>
-  <field name="file_name" type="string" indexed="true" stored="true"/>
-  <field name="file_length" type="tlong" indexed="true" stored="true"/>
-  <field name="file_last_modified" type="tlong" indexed="true" stored="true"/>
-  <field name="file_owner" type="string" indexed="true" stored="true"/>
-  <field name="file_group" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_user" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_group" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_other" type="string" indexed="true" stored="true"/>
-  <field name="file_permissions_stickybit" type="boolean" indexed="true" stored="true"/>
-
-  <!-- tika metadata -->
-  <field name="content_type" type="lowercase" indexed="true" stored="true"/>
-
-  <field name="_version_" type="long" indexed="true" stored="true"/>
-  <dynamicField name="ignored_*" type="ignored"/>
-
-  <!-- Field to use to determine and enforce document uniqueness. 
-       Unless this field is marked with required="false", it will be a required field
-    -->
-  <uniqueKey>id</uniqueKey>
-
-  <!-- DEPRECATED: The defaultSearchField is consulted by various query parsers when
-   parsing a query string that isn't explicit about the field.  Machine (non-user)
-   generated queries are best made explicit, or they can use the "df" request parameter
-   which takes precedence over this.
-   Note: Un-commenting defaultSearchField will be insufficient if your request handler
-   in solrconfig.xml defines "df", which takes precedence. That would need to be removed.
-  <defaultSearchField>text</defaultSearchField> -->
-
-  <!-- DEPRECATED: The defaultOperator (AND|OR) is consulted by various query parsers
-   when parsing a query string to determine if a clause of the query should be marked as
-   required or optional, assuming the clause isn't already marked by some operator.
-   The default is OR, which is generally assumed so it is not a good idea to change it
-   globally here.  The "q.op" request parameter takes precedence over this.
-  <solrQueryParser defaultOperator="OR"/> -->
-
-  <!-- copyField commands copy one field to another at the time a document
-        is added to the index.  It's used either to index the same field differently,
-        or to add multiple fields to the same field for easier/faster searching.  -->
-
-
-  <!-- field type definitions. The "name" attribute is
-     just a label to be used by field definitions.  The "class"
-     attribute and any other attributes determine the real
-     behavior of the fieldType.
-       Class names starting with "solr" refer to java classes in a
-     standard package such as org.apache.solr.analysis
-  -->
-
-  <!-- The StrField type is not analyzed, but indexed/stored verbatim.
-     It supports doc values but in that case the field needs to be
-     single-valued and either required or have a default value.
-    -->
-  <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
-
-  <!-- boolean type: "true" or "false" -->
-  <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
-
-  <!-- sortMissingLast and sortMissingFirst attributes are optional attributes are
-       currently supported on types that are sorted internally as strings
-       and on numeric types.
-     This includes "string","boolean", and, as of 3.5 (and 4.x),
-     int, float, long, date, double, including the "Trie" variants.
-     - If sortMissingLast="true", then a sort on this field will cause documents
-       without the field to come after documents with the field,
-       regardless of the requested sort order (asc or desc).
-     - If sortMissingFirst="true", then a sort on this field will cause documents
-       without the field to come before documents with the field,
-       regardless of the requested sort order.
-     - If sortMissingLast="false" and sortMissingFirst="false" (the default),
-       then default lucene sorting will be used which places docs without the
-       field first in an ascending sort and last in a descending sort.
-  -->
-
-  <!--
-    Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
-
-    These fields support doc values, but they require the field to be
-    single-valued and either be required or have a default value.
-  -->
-  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
-  <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!--
-   Numeric field types that index each value at various levels of precision
-   to accelerate range queries when the number of values between the range
-   endpoints is large. See the javadoc for LegacyNumericRangeQuery for internal
-   implementation details.
-
-   Smaller precisionStep values (specified in bits) will lead to more tokens
-   indexed per value, slightly larger index size, and faster range queries.
-   A precisionStep of 0 disables indexing at different precision levels.
-  -->
-  <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
-  <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
-
-  <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
-       is a more restricted form of the canonical representation of dateTime
-       http://www.w3.org/TR/xmlschema-2/#dateTime    
-       The trailing "Z" designates UTC time and is mandatory.
-       Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
-       All other components are mandatory.
-
-       Expressions can also be used to denote calculations that should be
-       performed relative to "NOW" to determine the value, ie...
-
-             NOW/HOUR
-                ... Round to the start of the current hour
-             NOW-1DAY
-                ... Exactly 1 day prior to now
-             NOW/DAY+6MONTHS+3DAYS
-                ... 6 months and 3 days in the future from the start of
-                    the current day
-                    
-       Consult the TrieDateField javadocs for more information.
-
-       Note: For faster range queries, consider the tdate type
-    -->
-  <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
-
-  <!-- A Trie based date field for faster date range queries and date faceting. -->
-  <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
-
-
-  <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
-  <fieldType name="binary" class="solr.BinaryField"/>
-
-  <!-- The "RandomSortField" is not used to store or search any
-       data.  You can declare fields of this type it in your schema
-       to generate pseudo-random orderings of your docs for sorting 
-       or function purposes.  The ordering is generated based on the field
-       name and the version of the index. As long as the index version
-       remains unchanged, and the same field name is reused,
-       the ordering of the docs will be consistent.  
-       If you want different psuedo-random orderings of documents,
-       for the same version of the index, use a dynamicField and
-       change the field name in the request.
-   -->
-  <fieldType name="random" class="solr.RandomSortField" indexed="true"/>
-
-  <!-- solr.TextField allows the specification of custom text analyzers
-       specified as a tokenizer and a list of token filters. Different
-       analyzers may be specified for indexing and querying.
-
-       The optional positionIncrementGap puts space between multiple fields of
-       this type on the same document, with the purpose of preventing false phrase
-       matching across fields.
-
-       For more info on customizing your analyzer chain, please see
-       http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
-   -->
-
-  <!-- One can also specify an existing Analyzer class that has a
-       default constructor via the class attribute on the analyzer element.
-       Example:
-  <fieldType name="text_greek" class="solr.TextField">
-    <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
-  </fieldType>
-  -->
-
-  <!-- A text field that only splits on whitespace for exact matching of words -->
-  <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A general text field that has reasonable, generic
-       cross-language defaults: it tokenizes with StandardTokenizer,
- removes stop words from case-insensitive "stopwords.txt"
- (empty by default), and down cases.  At query time only, it
- also applies synonyms. -->
-  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A text field with defaults appropriate for English: it
-       tokenizes with StandardTokenizer, removes English stop words
-       (lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
-       finally applies Porter's stemming.  The query time analyzer
-       also applies synonyms from synonyms.txt. -->
-  <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <!-- Case insensitive stop word removal. -->
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.EnglishPossessiveFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
-            <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      -->
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.EnglishPossessiveFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
-            <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      -->
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- A text field with defaults appropriate for English, plus
- aggressive word-splitting and autophrase features enabled.
- This field is just like text_en, except it adds
- WordDelimiterFilter to enable splitting and matching of
- words on case-change, alpha numeric boundaries, and
- non-alphanumeric chars.  This means certain compound word
- cases will work, for example query "wi fi" will match
- document "WiFi" or "wi-fi".
-      -->
-  <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100"
-             autoGeneratePhraseQueries="true">
-    <analyzer type="index">
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-      -->
-      <!-- Case insensitive stop word removal. -->
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
-              catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory"
-              ignoreCase="true"
-              words="lang/stopwords_en.txt"
-
-      />
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
-              catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.PorterStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
-       but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
-  <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100"
-             autoGeneratePhraseQueries="true">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
-      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
-              catenateNumbers="1" catenateAll="0"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-      <filter class="solr.EnglishMinimalStemFilterFactory"/>
-      <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
-           possible with WordDelimiterFilter in conjuncton with stemming. -->
-      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Just like text_general except it reverses the characters of
- each token, to enable more efficient leading wildcard queries. -->
-  <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
-    <analyzer type="index">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
-              maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- charFilter + WhitespaceTokenizer  -->
-  <!--
-  <fieldType name="text_char_norm" class="solr.TextField" positionIncrementGap="100" >
-    <analyzer>
-      <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-  -->
-
-  <!-- This is an example of using the KeywordTokenizer along
-       With various TokenFilterFactories to produce a sortable field
-       that does not include some properties of the source text
-    -->
-  <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
-    <analyzer>
-      <!-- KeywordTokenizer does no actual tokenizing, so the entire
-           input string is preserved as a single token
-        -->
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-      <!-- The LowerCase TokenFilter does what you expect, which can be
-           when you want your sorting to be case insensitive
-        -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <!-- The TrimFilter removes any leading or trailing whitespace -->
-      <filter class="solr.TrimFilterFactory"/>
-      <!-- The PatternReplaceFilter gives you the flexibility to use
-           Java Regular expression to replace any sequence of characters
-           matching a pattern with an arbitrary replacement string, 
-           which may include back references to portions of the original
-           string matched by the pattern.
-           
-           See the Java Regular Expression documentation for more
-           information on pattern and replacement string syntax.
-           
-           http://java.sun.com/j2se/1.6.0/docs/api/java/util/regex/package-summary.html
-        -->
-      <filter class="solr.PatternReplaceFilterFactory"
-              pattern="([^a-z])" replacement="" replace="all"
-      />
-    </analyzer>
-  </fieldType>
-
-  <fieldType name="phonetic" stored="false" indexed="true" class="solr.TextField">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
-    </analyzer>
-  </fieldType>
-
-  <fieldType name="payloads" stored="false" indexed="true" class="solr.TextField">
-    <analyzer>
-      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <!--
-      The DelimitedPayloadTokenFilter can put payloads on tokens... for example,
-      a token of "foo|1.4"  would be indexed as "foo" with a payload of 1.4f
-      Attributes of the DelimitedPayloadTokenFilterFactory : 
-       "delimiter" - a one character delimiter. Default is | (pipe)
- "encoder" - how to encode the following value into a playload
-    float -> org.apache.lucene.analysis.payloads.FloatEncoder,
-    integer -> o.a.l.a.p.IntegerEncoder
-    identity -> o.a.l.a.p.IdentityEncoder
-          Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor.
-       -->
-      <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- lowercases the entire field value, keeping it as a single token.  -->
-  <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- 
-    Example of using PathHierarchyTokenizerFactory at index time, so
-    queries for paths match documents at that path, or in descendent paths
-  -->
-  <fieldType name="descendent_path" class="solr.TextField">
-    <analyzer type="index">
-      <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-    </analyzer>
-  </fieldType>
-  <!-- 
-    Example of using PathHierarchyTokenizerFactory at query time, so
-    queries for paths match documents at that path, or in ancestor paths
-  -->
-  <fieldType name="ancestor_path" class="solr.TextField">
-    <analyzer type="index">
-      <tokenizer class="solr.KeywordTokenizerFactory"/>
-    </analyzer>
-    <analyzer type="query">
-      <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- since fields of this type are by default not stored or indexed,
-       any data added to them will be ignored outright.  -->
-  <fieldType name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField"/>
-
-  <!-- This point type indexes the coordinates as separate fields (subFields)
-    If subFieldType is defined, it references a type, and a dynamic field
-    definition is created matching *___<typename>.  Alternately, if 
-    subFieldSuffix is defined, that is used to create the subFields.
-    Example: if subFieldType="double", then the coordinates would be
-      indexed in fields myloc_0___double,myloc_1___double.
-    Example: if subFieldSuffix="_d" then the coordinates would be indexed
-      in fields myloc_0_d,myloc_1_d
-    The subFields are an implementation detail of the fieldType, and end
-    users normally should not need to know about them.
-   -->
-  <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
-
-  <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
-  <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
-
-  <!-- An alternative geospatial field type new to Solr 4.  It supports multiValued and polygon shapes.
-    For more information about this and other Spatial fields new to Solr 4, see:
-    http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
-  -->
-  <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
-             geo="true" distErrPct="0.025" maxDistErr="0.001" distanceUnits="kilometers"/>
-
-  <!-- Money/currency field type. See http://wiki.apache.org/solr/MoneyFieldType
-       Parameters:
-         defaultCurrency: Specifies the default currency if none specified. Defaults to "USD"
-         precisionStep:   Specifies the precisionStep for the TrieLong field used for the amount
-         providerClass:   Lets you plug in other exchange provider backend:
-                          solr.FileExchangeRateProvider is the default and takes one parameter:
-                            currencyConfig: name of an xml file holding exchange rates
-                          solr.OpenExchangeRatesOrgProvider uses rates from openexchangerates.org:
-                            ratesFileLocation: URL or path to rates JSON file (default latest.json on the web)
-                            refreshInterval: Number of minutes between each rates fetch (default: 1440, min: 60)
-  -->
-  <fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD"
-             currencyConfig="currency.xml"/>
-
-
-  <!-- some examples for different languages (generally ordered by ISO code) -->
-
-  <!-- Arabic -->
-  <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- for any non-arabic -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt"/>
-      <!-- normalizes \ufeef to \ufef1, etc -->
-      <filter class="solr.ArabicNormalizationFilterFactory"/>
-      <filter class="solr.ArabicStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Bulgarian -->
-  <fieldType name="text_bg" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_bg.txt"/>
-      <filter class="solr.BulgarianStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Catalan -->
-  <fieldType name="text_ca" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ca.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ca.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Catalan"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- CJK bigram (see text_ja for a Japanese configuration using morphological analysis) -->
-  <fieldType name="text_cjk" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- normalize width before bigram, as e.g. half-width dakuten combine  -->
-      <filter class="solr.CJKWidthFilterFactory"/>
-      <!-- for any non-CJK -->
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.CJKBigramFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Czech -->
-  <fieldType name="text_cz" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_cz.txt"/>
-      <filter class="solr.CzechStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Danish -->
-  <fieldType name="text_da" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_da.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Danish"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- German -->
-  <fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" format="snowball"/>
-      <filter class="solr.GermanNormalizationFilterFactory"/>
-      <filter class="solr.GermanLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.GermanMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="German2"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Greek -->
-  <fieldType name="text_el" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- greek specific lowercase for sigma -->
-      <filter class="solr.GreekLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_el.txt"/>
-      <filter class="solr.GreekStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Spanish -->
-  <fieldType name="text_es" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_es.txt" format="snowball"/>
-      <filter class="solr.SpanishLightStemFilterFactory"/>
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Spanish"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Basque -->
-  <fieldType name="text_eu" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_eu.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Basque"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Persian -->
-  <fieldType name="text_fa" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <!-- for ZWNJ -->
-      <charFilter class="solr.PersianCharFilterFactory"/>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.ArabicNormalizationFilterFactory"/>
-      <filter class="solr.PersianNormalizationFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fa.txt"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Finnish -->
-  <fieldType name="text_fi" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fi.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Finnish"/>
-      <!-- less aggressive: <filter class="solr.FinnishLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- French -->
-  <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_fr.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fr.txt" format="snowball"/>
-      <filter class="solr.FrenchLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.FrenchMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="French"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Irish -->
-  <fieldType name="text_ga" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes d', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ga.txt"/>
-      <!-- removes n-, etc. position increments is intentionally false! -->
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/hyphenations_ga.txt"/>
-      <filter class="solr.IrishLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ga.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Irish"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Galician -->
-  <fieldType name="text_gl" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_gl.txt"/>
-      <filter class="solr.GalicianStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.GalicianMinimalStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Hindi -->
-  <fieldType name="text_hi" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <!-- normalizes unicode representation -->
-      <filter class="solr.IndicNormalizationFilterFactory"/>
-      <!-- normalizes variation in spelling -->
-      <filter class="solr.HindiNormalizationFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hi.txt"/>
-      <filter class="solr.HindiStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Hungarian -->
-  <fieldType name="text_hu" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hu.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Hungarian"/>
-      <!-- less aggressive: <filter class="solr.HungarianLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Armenian -->
-  <fieldType name="text_hy" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hy.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Armenian"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Indonesian -->
-  <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_id.txt"/>
-      <!-- for a less aggressive approach (only inflectional suffixes), set stemDerivational to false -->
-      <filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Italian -->
-  <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <!-- removes l', etc -->
-      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_it.txt"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_it.txt" format="snowball"/>
-      <filter class="solr.ItalianLightStemFilterFactory"/>
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Italian"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Latvian -->
-  <fieldType name="text_lv" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_lv.txt"/>
-      <filter class="solr.LatvianStemFilterFactory"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Dutch -->
-  <fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_nl.txt" format="snowball"/>
-      <filter class="solr.StemmerOverrideFilterFactory" dictionary="lang/stemdict_nl.txt" ignoreCase="false"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Dutch"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Norwegian -->
-  <fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Norwegian"/>
-      <!-- less aggressive: <filter class="solr.NorwegianLightStemFilterFactory"/> -->
-      <!-- singular/plural: <filter class="solr.NorwegianMinimalStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Portuguese -->
-  <fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" format="snowball"/>
-      <filter class="solr.PortugueseLightStemFilterFactory"/>
-      <!-- less aggressive: <filter class="solr.PortugueseMinimalStemFilterFactory"/> -->
-      <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Portuguese"/> -->
-      <!-- most aggressive: <filter class="solr.PortugueseStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Romanian -->
-  <fieldType name="text_ro" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ro.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Romanian"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Russian -->
-  <fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ru.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Russian"/>
-      <!-- less aggressive: <filter class="solr.RussianLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Swedish -->
-  <fieldType name="text_sv" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_sv.txt" format="snowball"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Swedish"/>
-      <!-- less aggressive: <filter class="solr.SwedishLightStemFilterFactory"/> -->
-    </analyzer>
-  </fieldType>
-
-  <!-- Thai -->
-  <fieldType name="text_th" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.ThaiTokenizerFactory"/>
-      <filter class="solr.LowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_th.txt"/>
-    </analyzer>
-  </fieldType>
-
-  <!-- Turkish -->
-  <fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
-    <analyzer>
-      <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.TurkishLowerCaseFilterFactory"/>
-      <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_tr.txt"/>
-      <filter class="solr.SnowballPorterFilterFactory" language="Turkish"/>
-    </analyzer>
-  </fieldType>
-
-
-  <!-- Similarity is the scoring routine for each document vs. a query.
-       A custom Similarity or SimilarityFactory may be specified here, but 
-       the default is fine for most applications.  
-       For more info: http://wiki.apache.org/solr/SchemaXml#Similarity
-    -->
-  <!--
-     <similarity class="com.example.solr.CustomSimilarityFactory">
-       <str name="paramkey">param value</str>
-     </similarity>
-    -->
-
-</schema>


[67/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10362 Be more specific when catching this exception.

Posted by cp...@apache.org.
SOLR-10362 Be more specific when catching this exception.


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

Branch: refs/heads/jira/solr-6203
Commit: 30f7914c3b8ed990fcc0812f10de21722e96469f
Parents: 1ace174
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Wed Mar 29 14:42:20 2017 +0200
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Wed Mar 29 15:26:33 2017 +0200

----------------------------------------------------------------------
 .../src/java/org/apache/solr/util/stats/MetricUtils.java     | 8 ++++++--
 .../src/test/org/apache/solr/util/stats/MetricUtilsTest.java | 8 ++++----
 2 files changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30f7914c/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java b/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
index 9809070..491932d 100644
--- a/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
@@ -215,8 +215,12 @@ public class MetricUtils {
             try {
               consumer.accept(n, convertGauge(gauge, compact));
             } catch (InternalError ie) {
-              LOG.warn("Error converting gauge '" + n + "', possible JDK bug: SOLR-10362", ie);
-              consumer.accept(n, null);
+              if (n.startsWith("memory.") && ie.getMessage().contains("Memory Pool not found")) {
+                LOG.warn("Error converting gauge '" + n + "', possible JDK bug: SOLR-10362", ie);
+                consumer.accept(n, null);
+              } else {
+                throw ie;
+              }
             }
           } else if (metric instanceof Meter) {
             Meter meter = (Meter) metric;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/30f7914c/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java b/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
index fe98157..aa02de5 100644
--- a/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
+++ b/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
@@ -81,8 +81,8 @@ public class MetricUtilsTest extends SolrTestCaseJ4 {
     am.set("bar", 2);
     Gauge<String> gauge = () -> "foobar";
     registry.register("gauge", gauge);
-    Gauge<Long> error = () -> {throw new InternalError("expected error");};
-    registry.register("expected.error", error);
+    Gauge<Long> error = () -> {throw new InternalError("Memory Pool not found error");};
+    registry.register("memory.expected.error", error);
     MetricUtils.toMaps(registry, Collections.singletonList(MetricFilter.ALL), MetricFilter.ALL,
         false, false, false, (k, o) -> {
       Map v = (Map)o;
@@ -108,7 +108,7 @@ public class MetricUtilsTest extends SolrTestCaseJ4 {
         update = (Map<String, Object>)values.get("bar");
         assertEquals(2, update.get("value"));
         assertEquals(2, update.get("updateCount"));
-      } else if (k.startsWith("expected.error")) {
+      } else if (k.startsWith("memory.expected.error")) {
         assertNull(v);
       }
     });
@@ -147,7 +147,7 @@ public class MetricUtilsTest extends SolrTestCaseJ4 {
             update = (Map<String, Object>)values.get("bar");
             assertEquals(2, update.get("value"));
             assertEquals(2, update.get("updateCount"));
-          } else if (k.startsWith("expected.error")) {
+          } else if (k.startsWith("memory.expected.error")) {
             assertNull(o);
           } else {
             Map v = (Map)o;


[45/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10362: "Memory Pool not found" error when reporting JVM metrics.

Posted by cp...@apache.org.
SOLR-10362: "Memory Pool not found" error when reporting JVM metrics.


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

Branch: refs/heads/jira/solr-6203
Commit: cb20eae1789442286f680f8dcfaf914394aed7a3
Parents: 0b3ca1b
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Mon Mar 27 22:17:34 2017 +0200
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Mon Mar 27 22:19:03 2017 +0200

----------------------------------------------------------------------
 solr/CHANGES.txt                                         |  2 ++
 .../src/java/org/apache/solr/util/stats/MetricUtils.java | 11 ++++++++++-
 .../test/org/apache/solr/util/stats/MetricUtilsTest.java |  6 ++++++
 3 files changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cb20eae1/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 0b6faf8..b380e6b 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -137,6 +137,8 @@ Bug Fixes
 
 * SOLR-10108: bin/solr script recursive copy broken (Erick Erickson)
 
+* SOLR-10362: "Memory Pool not found" error when reporting JVM metrics. (ab)
+
 Other Changes
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cb20eae1/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java b/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
index ba1284e..9809070 100644
--- a/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/stats/MetricUtils.java
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.util.stats;
 
+import java.lang.invoke.MethodHandles;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -40,11 +41,14 @@ import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.metrics.AggregateMetric;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Metrics specific utility functions.
  */
 public class MetricUtils {
+  private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   public static final String METRIC_NAME = "metric";
   public static final String VALUE = "value";
@@ -208,7 +212,12 @@ public class MetricUtils {
             consumer.accept(n, convertCounter(counter, compact));
           } else if (metric instanceof Gauge) {
             Gauge gauge = (Gauge) metric;
-            consumer.accept(n, convertGauge(gauge, compact));
+            try {
+              consumer.accept(n, convertGauge(gauge, compact));
+            } catch (InternalError ie) {
+              LOG.warn("Error converting gauge '" + n + "', possible JDK bug: SOLR-10362", ie);
+              consumer.accept(n, null);
+            }
           } else if (metric instanceof Meter) {
             Meter meter = (Meter) metric;
             consumer.accept(n, convertMeter(meter));

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cb20eae1/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java b/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
index 35caef8..fe98157 100644
--- a/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
+++ b/solr/core/src/test/org/apache/solr/util/stats/MetricUtilsTest.java
@@ -81,6 +81,8 @@ public class MetricUtilsTest extends SolrTestCaseJ4 {
     am.set("bar", 2);
     Gauge<String> gauge = () -> "foobar";
     registry.register("gauge", gauge);
+    Gauge<Long> error = () -> {throw new InternalError("expected error");};
+    registry.register("expected.error", error);
     MetricUtils.toMaps(registry, Collections.singletonList(MetricFilter.ALL), MetricFilter.ALL,
         false, false, false, (k, o) -> {
       Map v = (Map)o;
@@ -106,6 +108,8 @@ public class MetricUtilsTest extends SolrTestCaseJ4 {
         update = (Map<String, Object>)values.get("bar");
         assertEquals(2, update.get("value"));
         assertEquals(2, update.get("updateCount"));
+      } else if (k.startsWith("expected.error")) {
+        assertNull(v);
       }
     });
     // test compact format
@@ -143,6 +147,8 @@ public class MetricUtilsTest extends SolrTestCaseJ4 {
             update = (Map<String, Object>)values.get("bar");
             assertEquals(2, update.get("value"));
             assertEquals(2, update.get("updateCount"));
+          } else if (k.startsWith("expected.error")) {
+            assertNull(o);
           } else {
             Map v = (Map)o;
             assertEquals(1L, v.get("count"));


[56/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10343: Update Solr default/example and test configs to use SynonymGraphFilterFactory

Posted by cp...@apache.org.
SOLR-10343: Update Solr default/example and test configs to use SynonymGraphFilterFactory


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

Branch: refs/heads/jira/solr-6203
Commit: 1a80e4d6942dd7af214c999e0e6540564efc02ac
Parents: 390ef9a
Author: Steve Rowe <sa...@gmail.com>
Authored: Tue Mar 28 11:47:02 2017 -0400
Committer: Steve Rowe <sa...@gmail.com>
Committed: Tue Mar 28 11:47:02 2017 -0400

----------------------------------------------------------------------
 solr/CHANGES.txt                                |  2 ++
 .../clustering/solr/collection1/conf/schema.xml |  8 ++---
 .../conf/dataimport-schema-no-unique-key.xml    |  4 +--
 .../conf/dataimport-solr_id-schema.xml          |  8 ++---
 .../extraction/solr/collection1/conf/schema.xml | 21 +++++++++---
 .../test-files/solr/collection1/conf/schema.xml |  2 +-
 .../uima/solr/collection1/conf/schema.xml       | 12 +++----
 .../test-files/uima/uima-tokenizers-schema.xml  |  2 +-
 .../conf/schema-HighlighterMaxOffsetTest.xml    |  4 +--
 .../collection1/conf/schema-copyfield-test.xml  | 21 +++++++++---
 .../collection1/conf/schema-docValuesJoin.xml   |  2 +-
 .../collection1/conf/schema-psuedo-fields.xml   |  2 +-
 .../collection1/conf/schema-required-fields.xml | 21 +++++++++---
 .../solr/collection1/conf/schema-rest.xml       | 34 ++++++++++++++------
 .../conf/schema-single-dynamic-copy-field.xml   | 34 ++++++++++++++------
 .../collection1/conf/schema-spellchecker.xml    |  2 +-
 .../conf/schema-synonym-tokenizer.xml           |  5 +--
 .../solr/collection1/conf/schema-trie.xml       |  8 ++---
 .../test-files/solr/collection1/conf/schema.xml | 25 ++++++++++----
 .../solr/collection1/conf/schema11.xml          | 12 +++----
 .../solr/collection1/conf/schema12.xml          | 29 ++++++++++++-----
 .../solr/collection1/conf/schema15.xml          | 29 ++++++++++++-----
 .../solr/collection1/conf/schema_latest.xml     | 20 ++++++------
 .../solr/collection1/conf/schemasurround.xml    | 31 ++++++++++++------
 .../example-DIH/solr/db/conf/managed-schema     | 20 ++++++------
 .../example-DIH/solr/mail/conf/managed-schema   | 21 ++++++------
 .../example-DIH/solr/rss/conf/managed-schema    | 24 +++++++-------
 .../example-DIH/solr/solr/conf/managed-schema   | 20 ++++++------
 solr/example/files/conf/managed-schema          | 12 +++----
 .../basic_configs/conf/managed-schema           | 20 ++++++------
 .../conf/managed-schema                         | 20 ++++++------
 .../conf/managed-schema                         | 20 ++++++------
 32 files changed, 317 insertions(+), 178 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index b68c62f..2d180a3 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -156,6 +156,8 @@ Other Changes
   
 * SOLR-10344: Update Solr default/example and test configs to use WordDelimiterGraphFilterFactory. (Steve Rowe)
 
+* SOLR-10343: Update Solr default/example and test configs to use SynonymGraphFilterFactory. (Steve Rowe)
+
 ==================  6.5.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml b/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
index 02626a0..e9ef115 100644
--- a/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
+++ b/solr/contrib/clustering/src/test-files/clustering/solr/collection1/conf/schema.xml
@@ -166,7 +166,7 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!-- Case insensitive stop word removal.
       -->
@@ -184,7 +184,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
+      <!--<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
@@ -201,7 +201,7 @@
   <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+      <!--<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
@@ -213,7 +213,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+      <!--<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-schema-no-unique-key.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-schema-no-unique-key.xml b/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-schema-no-unique-key.xml
index 84d0dbe..5ef7eda 100644
--- a/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-schema-no-unique-key.xml
+++ b/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/collection1/conf/dataimport-schema-no-unique-key.xml
@@ -169,7 +169,7 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
@@ -182,7 +182,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
+      <!--<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solr_id-schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solr_id-schema.xml b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solr_id-schema.xml
index da4bd39..a99a0b4 100644
--- a/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solr_id-schema.xml
+++ b/solr/contrib/dataimporthandler/src/test-files/dih/solr/collection1/conf/dataimport-solr_id-schema.xml
@@ -167,7 +167,7 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
@@ -180,7 +180,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
+      <!--<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
@@ -197,7 +197,7 @@
   <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>-->
+      <!--<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>-->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
@@ -209,7 +209,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>-->
+      <!--<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>-->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/schema.xml b/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/schema.xml
index b743ed8..b65c345 100644
--- a/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/schema.xml
+++ b/solr/contrib/extraction/src/test-files/extraction/solr/collection1/conf/schema.xml
@@ -301,9 +301,14 @@
 
   <!-- less flexible in matching skus, but less chance of a false match -->
   <fieldType name="syn" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
     </analyzer>
   </fieldType>
 
@@ -311,9 +316,17 @@
        synonyms "better"
     -->
   <fieldType name="dedup" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory"
+              synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory"
+      <filter class="solr.SynonymGraphFilterFactory"
               synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/contrib/ltr/src/test-files/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test-files/solr/collection1/conf/schema.xml b/solr/contrib/ltr/src/test-files/solr/collection1/conf/schema.xml
index 0b958c0..f27f092 100644
--- a/solr/contrib/ltr/src/test-files/solr/collection1/conf/schema.xml
+++ b/solr/contrib/ltr/src/test-files/solr/collection1/conf/schema.xml
@@ -63,7 +63,7 @@
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"  />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/schema.xml b/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/schema.xml
index 89d44e6..f1aebb6 100644
--- a/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/schema.xml
+++ b/solr/contrib/uima/src/test-files/uima/solr/collection1/conf/schema.xml
@@ -203,7 +203,7 @@
         <tokenizer class="solr.MockTokenizerFactory" />
         <!--
           in this example, we will only use synonyms at query time
-          <filter class="solr.SynonymFilterFactory"
+          <filter class="solr.SynonymGraphFilterFactory"
           synonyms="index_synonyms.txt" ignoreCase="true"
           expand="false"/>
         -->
@@ -220,7 +220,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"
           ignoreCase="true" expand="true" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />
@@ -242,7 +242,7 @@
       positionIncrementGap="100">
       <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"
           ignoreCase="true" expand="false" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />
@@ -261,7 +261,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"
                 ignoreCase="true" expand="false" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
                 words="stopwords.txt" />
@@ -292,7 +292,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"
           ignoreCase="true" expand="true" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />
@@ -326,7 +326,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"
           ignoreCase="true" expand="true" />
         <filter class="solr.StopFilterFactory" ignoreCase="true"
           words="stopwords.txt" />

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml b/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml
index 229d69b..a6a4943 100644
--- a/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml
+++ b/solr/contrib/uima/src/test-files/uima/uima-tokenizers-schema.xml
@@ -203,7 +203,7 @@
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!--
         in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory"
+        <filter class="solr.SynonymGraphFilterFactory"
         synonyms="index_synonyms.txt" ignoreCase="true"
         expand="false"/>
       -->

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml b/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml
index 122d4ce..fce717c 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-HighlighterMaxOffsetTest.xml
@@ -57,7 +57,7 @@ Test for HighlighterMaxOffsetTest which requires the use of ReversedWildcardFilt
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
@@ -76,7 +76,7 @@ Test for HighlighterMaxOffsetTest which requires the use of ReversedWildcardFilt
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml b/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
index a9df7f8..665114a 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-copyfield-test.xml
@@ -290,9 +290,14 @@
 
   <!-- less flexible in matching skus, but less chance of a false match -->
   <fieldType name="syn" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
     </analyzer>
   </fieldType>
 
@@ -300,9 +305,17 @@
        synonyms "better"
     -->
   <fieldType name="dedup" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory"
+              synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory"
+      <filter class="solr.SynonymGraphFilterFactory"
               synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
index baed872..d152d98 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-docValuesJoin.xml
@@ -51,7 +51,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema-psuedo-fields.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-psuedo-fields.xml b/solr/core/src/test-files/solr/collection1/conf/schema-psuedo-fields.xml
index 8491ce8..f3b0e30 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-psuedo-fields.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-psuedo-fields.xml
@@ -59,7 +59,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml b/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
index c92b901..cf980ca 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-required-fields.xml
@@ -273,9 +273,14 @@
 
   <!-- less flexible in matching skus, but less chance of a false match -->
   <fieldType name="syn" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index\u2248">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
     </analyzer>
   </fieldType>
 
@@ -283,9 +288,17 @@
        synonyms "better"
     -->
   <fieldType name="dedup" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory"
+              synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory"
+      <filter class="solr.SynonymGraphFilterFactory"
               synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema-rest.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-rest.xml b/solr/core/src/test-files/solr/collection1/conf/schema-rest.xml
index 7d9bf02..aa4c21d 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-rest.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-rest.xml
@@ -114,7 +114,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -137,7 +137,8 @@
     <analyzer type="index">
       <tokenizer class="solr.StandardTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
       -->
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.EnglishPossessiveFilterFactory"/>
@@ -149,7 +150,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.EnglishPossessiveFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -178,7 +179,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -408,9 +409,14 @@
 
   <!-- less flexible in matching skus, but less chance of a false match -->
   <fieldType name="syn" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
     </analyzer>
   </fieldType>
 
@@ -420,7 +426,7 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
@@ -431,7 +437,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
@@ -445,9 +451,17 @@
        synonyms "better"
     -->
   <fieldType name="dedup" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory"
+              synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory"
+      <filter class="solr.SynonymGraphFilterFactory"
               synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema-single-dynamic-copy-field.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-single-dynamic-copy-field.xml b/solr/core/src/test-files/solr/collection1/conf/schema-single-dynamic-copy-field.xml
index 72dc723..96be1d9 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-single-dynamic-copy-field.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-single-dynamic-copy-field.xml
@@ -114,7 +114,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -137,7 +137,8 @@
     <analyzer type="index">
       <tokenizer class="solr.StandardTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-              <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+              <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+              <filter class="solr.FlattenGraphFilterFactory"/>
               -->
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.EnglishPossessiveFilterFactory"/>
@@ -149,7 +150,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.EnglishPossessiveFilterFactory"/>
       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
@@ -178,7 +179,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -408,9 +409,14 @@
 
   <!-- less flexible in matching skus, but less chance of a false match -->
   <fieldType name="syn" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
     </analyzer>
   </fieldType>
 
@@ -420,7 +426,7 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-              <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+              <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
               -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
@@ -431,7 +437,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
@@ -445,9 +451,17 @@
            synonyms "better"
         -->
   <fieldType name="dedup" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory"
+              synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory"
+      <filter class="solr.SynonymGraphFilterFactory"
               synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema-spellchecker.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-spellchecker.xml b/solr/core/src/test-files/solr/collection1/conf/schema-spellchecker.xml
index 11e7dba..42c17da 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-spellchecker.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-spellchecker.xml
@@ -54,7 +54,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.StandardFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema-synonym-tokenizer.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-synonym-tokenizer.xml b/solr/core/src/test-files/solr/collection1/conf/schema-synonym-tokenizer.xml
index b443138..e3ff5ec 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-synonym-tokenizer.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-synonym-tokenizer.xml
@@ -15,7 +15,7 @@
   limitations under the License.
   -->
 
-<!-- Test schema file for SynonymFilterFactory argument "tokenizerFactory" -->
+<!-- Test schema file for SynonymGraphFilterFactory argument "tokenizerFactory" -->
 
 <schema name="synonym-test" version="1.0">
   <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
@@ -23,8 +23,9 @@
   <fieldType name="text_synonyms" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"
               tokenizerFactory="solr.StandardTokenizerFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema-trie.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema-trie.xml b/solr/core/src/test-files/solr/collection1/conf/schema-trie.xml
index 375036f..f3d4c10 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema-trie.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema-trie.xml
@@ -162,7 +162,7 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
@@ -175,7 +175,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
@@ -192,7 +192,7 @@
   <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
@@ -204,7 +204,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema.xml b/solr/core/src/test-files/solr/collection1/conf/schema.xml
index 23ac326..bdda244 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema.xml
@@ -213,7 +213,7 @@
   <fieldType name="lowerpunctfilt" class="solr.TextField">
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
@@ -221,7 +221,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
               catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
       <filter class="solr.LowerCaseFilterFactory"/>
@@ -388,9 +388,14 @@
 
   <!-- less flexible in matching skus, but less chance of a false match -->
   <fieldType name="syn" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="old_synonyms.txt"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="old_synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="old_synonyms.txt"/>
     </analyzer>
   </fieldType>
 
@@ -398,9 +403,17 @@
        synonyms "better"
     -->
   <fieldType name="dedup" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory"
+              synonyms="old_synonyms.txt" expand="true"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory"
+      <filter class="solr.SynonymGraphFilterFactory"
               synonyms="old_synonyms.txt" expand="true"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema11.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema11.xml b/solr/core/src/test-files/solr/collection1/conf/schema11.xml
index db0770b..cccf79a 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema11.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema11.xml
@@ -158,7 +158,7 @@
       <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
@@ -170,7 +170,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -186,7 +186,7 @@
     <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100" >
       <analyzer type="index">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -197,7 +197,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.MockTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -426,7 +426,7 @@ valued. -->
      <analyzer type="index">
        <tokenizer class="solr.MockTokenizerFactory"/>
        <!-- in this example, we will only use synonyms at query time
-            <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+            <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
@@ -438,7 +438,7 @@ valued. -->
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.MockTokenizerFactory"/>
-       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+       <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
        <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema12.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema12.xml b/solr/core/src/test-files/solr/collection1/conf/schema12.xml
index db91377..7ea770b 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema12.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema12.xml
@@ -123,7 +123,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -154,7 +154,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -378,9 +378,14 @@
 
   <!-- less flexible in matching skus, but less chance of a false match -->
   <fieldType name="syn" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
     </analyzer>
   </fieldType>
 
@@ -390,7 +395,7 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
@@ -401,7 +406,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
@@ -415,9 +420,17 @@
        synonyms "better"
     -->
   <fieldType name="dedup" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory"
+              synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory"
+      <filter class="solr.SynonymGraphFilterFactory"
               synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema15.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema15.xml b/solr/core/src/test-files/solr/collection1/conf/schema15.xml
index 8fb8d44..57c6bf1 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema15.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema15.xml
@@ -115,7 +115,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -146,7 +146,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -376,9 +376,14 @@
 
   <!-- less flexible in matching skus, but less chance of a false match -->
   <fieldType name="syn" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
     </analyzer>
   </fieldType>
 
@@ -388,7 +393,7 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
@@ -399,7 +404,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
@@ -413,9 +418,17 @@
        synonyms "better"
     -->
   <fieldType name="dedup" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory"
+              synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory"
+      <filter class="solr.SynonymGraphFilterFactory"
               synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schema_latest.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema_latest.xml b/solr/core/src/test-files/solr/collection1/conf/schema_latest.xml
index 1163ab5..b19a512 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema_latest.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema_latest.xml
@@ -484,14 +484,15 @@
       <tokenizer class="solr.StandardTokenizerFactory"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
       -->
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
   </fieldType>
@@ -505,7 +506,8 @@
     <analyzer type="index">
       <tokenizer class="solr.StandardTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
       -->
       <!-- Case insensitive stop word removal.
       -->
@@ -523,7 +525,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -552,7 +554,7 @@
     <analyzer type="index">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!-- Case insensitive stop word removal.
       -->
@@ -569,7 +571,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -588,7 +590,7 @@
              autoGeneratePhraseQueries="true">
     <analyzer type="index">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
@@ -602,7 +604,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1"
               catenateNumbers="1" catenateAll="0"/>
@@ -627,7 +629,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/core/src/test-files/solr/collection1/conf/schemasurround.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/collection1/conf/schemasurround.xml b/solr/core/src/test-files/solr/collection1/conf/schemasurround.xml
index 3071968..a0c29c9 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schemasurround.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schemasurround.xml
@@ -116,7 +116,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -147,7 +147,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
@@ -371,9 +371,14 @@
 
   <!-- less flexible in matching skus, but less chance of a false match -->
   <fieldType name="syn" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
     </analyzer>
   </fieldType>
 
@@ -383,7 +388,7 @@
     <analyzer type="index">
       <tokenizer class="solr.MockTokenizerFactory"/>
       <!-- in this example, we will only use synonyms at query time
-      <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
       <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>-->
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
@@ -394,7 +399,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
@@ -415,7 +420,7 @@
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
               catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
       <filter class="solr.LowerCaseFilterFactory"/>
@@ -427,9 +432,17 @@
        synonyms "better"
     -->
   <fieldType name="dedup" class="solr.TextField">
-    <analyzer>
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.SynonymGraphFilterFactory"
+              synonyms="synonyms.txt" expand="true"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
       <tokenizer class="solr.MockTokenizerFactory"/>
-      <filter class="solr.SynonymFilterFactory"
+      <filter class="solr.SynonymGraphFilterFactory"
               synonyms="synonyms.txt" expand="true"/>
       <filter class="solr.PorterStemFilterFactory"/>
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/example/example-DIH/solr/db/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/db/conf/managed-schema b/solr/example/example-DIH/solr/db/conf/managed-schema
index 1a1012f..067767e 100644
--- a/solr/example/example-DIH/solr/db/conf/managed-schema
+++ b/solr/example/example-DIH/solr/db/conf/managed-schema
@@ -443,14 +443,15 @@
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>
@@ -464,7 +465,8 @@
       <analyzer type="index">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -482,7 +484,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -510,7 +512,7 @@
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -526,7 +528,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -543,7 +545,7 @@
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -556,7 +558,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -580,7 +582,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/example/example-DIH/solr/mail/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/mail/conf/managed-schema b/solr/example/example-DIH/solr/mail/conf/managed-schema
index 016f105..382dacf 100644
--- a/solr/example/example-DIH/solr/mail/conf/managed-schema
+++ b/solr/example/example-DIH/solr/mail/conf/managed-schema
@@ -362,14 +362,15 @@
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>
@@ -383,7 +384,8 @@
       <analyzer type="index">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -401,7 +403,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -429,7 +431,8 @@
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -445,7 +448,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -462,7 +465,7 @@
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -475,7 +478,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -499,7 +502,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1a80e4d6/solr/example/example-DIH/solr/rss/conf/managed-schema
----------------------------------------------------------------------
diff --git a/solr/example/example-DIH/solr/rss/conf/managed-schema b/solr/example/example-DIH/solr/rss/conf/managed-schema
index 2064c58..9417902 100644
--- a/solr/example/example-DIH/solr/rss/conf/managed-schema
+++ b/solr/example/example-DIH/solr/rss/conf/managed-schema
@@ -239,7 +239,7 @@
         <charFilter class="solr.HTMLStripCharFilterFactory"/>
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
@@ -252,7 +252,7 @@
       <analyzer type="query">
         <charFilter class="solr.HTMLStripCharFilterFactory"/>
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -394,14 +394,15 @@
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>
@@ -415,7 +416,8 @@
       <analyzer type="index">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.FlattenGraphFilterFactory"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -433,7 +435,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -461,7 +463,7 @@
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <!-- in this example, we will only use synonyms at query time
-        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <!-- Case insensitive stop word removal.
         -->
@@ -477,7 +479,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="lang/stopwords_en.txt"
@@ -494,7 +496,7 @@
     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
       <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -507,7 +509,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
         <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
         <filter class="solr.LowerCaseFilterFactory"/>
@@ -531,7 +533,7 @@
       </analyzer>
       <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
         <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>


[72/73] [abbrv] lucene-solr:jira/solr-6203: Merge branch 'master' into jira/solr-6203

Posted by cp...@apache.org.
Merge branch 'master' into jira/solr-6203

Yet To Be Resolved Conflicts:
	solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java


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

Branch: refs/heads/jira/solr-6203
Commit: 770265fb33178e4002bee6c67e710cff37a46751
Parents: 2cd3f71 edafcba
Author: Christine Poerschke <cp...@apache.org>
Authored: Thu Mar 30 17:18:22 2017 +0100
Committer: Christine Poerschke <cp...@apache.org>
Committed: Thu Mar 30 17:18:22 2017 +0100

----------------------------------------------------------------------
 .gitignore                                      |    1 -
 build.xml                                       |   10 +-
 dev-tools/doap/lucene.rdf                       |   14 +
 dev-tools/doap/solr.rdf                         |   14 +
 dev-tools/idea/.idea/ant.xml                    |    3 -
 .../libraries/Solr_morphlines_cell_library.xml  |   10 -
 .../libraries/Solr_morphlines_core_library.xml  |   10 -
 .../Solr_morphlines_core_test_library.xml       |   10 -
 dev-tools/idea/.idea/modules.xml                |    3 -
 dev-tools/idea/.idea/workspace.xml              |   37 +-
 .../idea/solr/contrib/map-reduce/map-reduce.iml |   43 -
 .../contrib/morphlines-cell/morphlines-cell.iml |   29 -
 .../contrib/morphlines-core/morphlines-core.iml |   28 -
 .../maven/solr/contrib/ltr/pom.xml.template     |   10 +-
 .../solr/contrib/map-reduce/pom.xml.template    |   90 --
 .../contrib/morphlines-cell/pom.xml.template    |   90 --
 .../contrib/morphlines-core/pom.xml.template    |   91 --
 dev-tools/maven/solr/contrib/pom.xml.template   |    3 -
 dev-tools/maven/solr/pom.xml.template           |    9 -
 dev-tools/scripts/buildAndPushRelease.py        |   66 +-
 dev-tools/scripts/smokeTestRelease.py           |    4 +
 lucene/CHANGES.txt                              |   99 +-
 lucene/MIGRATE.txt                              |   14 +
 .../charfilter/HTMLStripCharFilter.java         |    2 +-
 .../charfilter/HTMLStripCharFilter.jflex        |    7 +-
 .../compound/hyphenation/TernaryTree.java       |    2 +-
 .../lucene/analysis/shingle/ShingleFilter.java  |    9 +-
 .../analysis/hunspell/TestDictionary.java       |    2 +-
 .../miscellaneous/TestWordDelimiterFilter.java  |    2 +-
 .../TestWordDelimiterGraphFilter.java           |    2 +-
 .../payloads/NumericPayloadTokenFilterTest.java |    2 +-
 .../payloads/TypeAsPayloadTokenFilterTest.java  |    2 +-
 .../analysis/shingle/ShingleFilterTest.java     |   94 +-
 .../analysis/sinks/TestTeeSinkTokenFilter.java  |    4 +-
 .../lucene/analysis/snowball/TestSnowball.java  |    2 +-
 .../standard/TestUAX29URLEmailTokenizer.java    |    4 +-
 .../lucene/analysis/icu/ICUTransformFilter.java |    2 +-
 .../lucene/analysis/cn/smart/Utility.java       |    8 +-
 .../apache/lucene/index/FixBrokenOffsets.java   |   10 +
 .../index/TestBackwardsCompatibility.java       |   55 +-
 .../lucene/index/TestFixBrokenOffsets.java      |    7 +-
 .../lucene/index/TestIndexWriterOnOldIndex.java |   55 +
 .../org/apache/lucene/index/index.6.4.2-cfs.zip |  Bin 0 -> 15856 bytes
 .../apache/lucene/index/index.6.4.2-nocfs.zip   |  Bin 0 -> 15886 bytes
 .../org/apache/lucene/index/index.6.5.0-cfs.zip |  Bin 0 -> 15832 bytes
 .../apache/lucene/index/index.6.5.0-nocfs.zip   |  Bin 0 -> 15836 bytes
 .../lucene/index/index.single-empty-doc.630.zip |  Bin 0 -> 1363 bytes
 .../apache/lucene/legacy/TestLegacyField.java   |   10 -
 .../byTask/feeds/EnwikiContentSource.java       |    2 +-
 .../benchmark/byTask/tasks/ForceMergeTask.java  |    2 +-
 lucene/build.xml                                |    6 +-
 .../CachingNaiveBayesClassifierTest.java        |    2 +-
 .../SimpleNaiveBayesClassifierTest.java         |    2 +-
 .../bloom/BloomFilteringPostingsFormat.java     |    8 +-
 .../codecs/memory/MemoryPostingsFormat.java     |    2 +-
 .../simpletext/SimpleTextTermVectorsReader.java |    2 +-
 lucene/common-build.xml                         |   65 +-
 .../apache/lucene/codecs/DocValuesConsumer.java |    4 +-
 .../lucene/codecs/StoredFieldsWriter.java       |    5 -
 .../codecs/blocktree/BlockTreeTermsReader.java  |   30 +-
 .../blocktree/IntersectTermsEnumFrame.java      |   70 +-
 .../codecs/blocktree/SegmentTermsEnumFrame.java |  154 +-
 .../CompressingStoredFieldsReader.java          |   19 +-
 .../CompressingStoredFieldsWriter.java          |    5 +-
 .../CompressingTermVectorsReader.java           |   21 +-
 .../CompressingTermVectorsWriter.java           |    5 +-
 .../org/apache/lucene/document/DoubleRange.java |  271 ++++
 .../java/org/apache/lucene/document/Field.java  |   32 -
 .../org/apache/lucene/document/FieldType.java   |    6 +-
 .../org/apache/lucene/document/FloatRange.java  |  271 ++++
 .../org/apache/lucene/document/IntRange.java    |  271 ++++
 .../org/apache/lucene/document/LongRange.java   |  269 ++++
 .../apache/lucene/document/RangeFieldQuery.java |  340 ++++
 .../lucene/index/ConcurrentMergeScheduler.java  |   75 +-
 .../lucene/index/DefaultIndexingChain.java      |    8 -
 .../lucene/index/ExitableDirectoryReader.java   |   21 +-
 .../apache/lucene/index/FieldInvertState.java   |   20 +-
 .../apache/lucene/index/FilterCodecReader.java  |   13 +-
 .../apache/lucene/index/FilterLeafReader.java   |   73 +-
 .../org/apache/lucene/index/IndexReader.java    |  115 +-
 .../apache/lucene/index/IndexReaderContext.java |   10 +-
 .../org/apache/lucene/index/IndexWriter.java    |  116 +-
 .../org/apache/lucene/index/IndexableField.java |   24 -
 .../org/apache/lucene/index/LeafReader.java     |   84 +-
 .../org/apache/lucene/index/MergePolicy.java    |  184 ++-
 .../apache/lucene/index/MergeRateLimiter.java   |  177 +--
 .../apache/lucene/index/MergeReaderWrapper.java |   20 +-
 .../org/apache/lucene/index/MergeScheduler.java |   12 +
 .../org/apache/lucene/index/MultiDocValues.java |   22 +-
 .../org/apache/lucene/index/MultiReader.java    |   11 +
 .../apache/lucene/index/NoMergeScheduler.java   |    7 +
 .../lucene/index/ParallelCompositeReader.java   |   16 +-
 .../apache/lucene/index/ParallelLeafReader.java |   38 +-
 .../org/apache/lucene/index/PointValues.java    |    2 +-
 .../apache/lucene/index/SegmentCoreReaders.java |   39 +-
 .../org/apache/lucene/index/SegmentInfos.java   |   77 +-
 .../org/apache/lucene/index/SegmentReader.java  |   57 +-
 .../lucene/index/SlowCodecReaderWrapper.java    |    8 +-
 .../apache/lucene/index/SortingLeafReader.java  |   12 +
 .../index/SortingStoredFieldsConsumer.java      |    5 -
 .../lucene/index/StandardDirectoryReader.java   |   42 +
 .../org/apache/lucene/search/BooleanQuery.java  |    1 -
 .../lucene/search/ConstantScoreQuery.java       |    2 +-
 .../java/org/apache/lucene/search/FieldDoc.java |    6 +-
 .../org/apache/lucene/search/IndexSearcher.java |    5 +-
 .../org/apache/lucene/search/LRUQueryCache.java |   39 +-
 .../lucene/search/MultiLeafFieldComparator.java |   92 ++
 .../java/org/apache/lucene/search/TopDocs.java  |   68 +-
 .../apache/lucene/search/TopFieldCollector.java |  212 +--
 .../org/apache/lucene/search/package-info.java  |   25 +-
 .../search/similarities/BM25Similarity.java     |   12 +-
 .../search/similarities/ClassicSimilarity.java  |    5 +-
 .../search/similarities/SimilarityBase.java     |    8 +-
 .../search/similarities/TFIDFSimilarity.java    |   46 +-
 .../lucene/search/spans/NearSpansUnordered.java |  211 +--
 .../org/apache/lucene/util/QueryBuilder.java    |   46 +-
 .../java/org/apache/lucene/util/Version.java    |   14 +
 .../org/apache/lucene/util/VirtualMethod.java   |    2 +-
 .../lucene/util/packed/BlockPackedReader.java   |    3 +-
 .../org/apache/lucene/document/TestField.java   |   30 -
 .../org/apache/lucene/index/TestCodecs.java     |    8 +-
 .../apache/lucene/index/TestCustomNorms.java    |   14 +-
 .../index/TestDemoParallelLeafReader.java       |   11 +-
 .../lucene/index/TestDirectoryReader.java       |    8 +-
 .../lucene/index/TestDirectoryReaderReopen.java |   12 +-
 .../index/TestExitableDirectoryReader.java      |   10 +
 .../org/apache/lucene/index/TestFieldReuse.java |    5 -
 .../lucene/index/TestFilterDirectoryReader.java |    5 +
 .../lucene/index/TestFilterLeafReader.java      |   21 +-
 .../index/TestFlushByRamOrCountsPolicy.java     |    2 +-
 .../lucene/index/TestIndexReaderClose.java      |   62 +-
 .../apache/lucene/index/TestIndexSorting.java   |    8 +-
 .../apache/lucene/index/TestIndexWriter.java    |   13 +-
 .../lucene/index/TestIndexWriterExceptions.java |   68 +-
 .../lucene/index/TestIndexWriterMerging.java    |    2 +-
 .../index/TestIndexWriterWithThreads.java       |    2 +-
 .../apache/lucene/index/TestIndexableField.java |   12 +-
 .../lucene/index/TestMaxTermFrequency.java      |    2 +-
 .../lucene/index/TestMergeRateLimiter.java      |    4 +-
 .../apache/lucene/index/TestMultiTermsEnum.java |   10 +
 .../test/org/apache/lucene/index/TestNorms.java |   15 +-
 .../org/apache/lucene/index/TestOmitTf.java     |    2 +-
 .../index/TestParallelCompositeReader.java      |   33 +-
 .../lucene/index/TestPerSegmentDeletes.java     |    2 +-
 .../apache/lucene/index/TestReadOnlyIndex.java  |    2 +-
 .../apache/lucene/index/TestReaderClosed.java   |    8 +-
 .../apache/lucene/index/TestSegmentInfos.java   |   11 +-
 .../lucene/index/TestStressIndexing2.java       |    2 +-
 .../lucene/index/TestTermVectorsReader.java     |    2 +-
 .../lucene/index/TestTransactionRollback.java   |    6 +-
 .../lucene/index/TestUniqueTermCount.java       |    2 +-
 .../lucene/search/TermInSetQueryTest.java       |   17 +-
 .../lucene/search/TestCustomSearcherSort.java   |    4 +-
 .../lucene/search/TestDisjunctionMaxQuery.java  |    2 +-
 .../org/apache/lucene/search/TestDocBoost.java  |   98 --
 .../search/TestDoubleRangeFieldQueries.java     |  251 +++
 .../TestEarlyTerminatingSortingCollector.java   |    4 +-
 .../search/TestFloatRangeFieldQueries.java      |  251 +++
 .../apache/lucene/search/TestFuzzyQuery.java    |    5 +-
 .../lucene/search/TestIntRangeFieldQueries.java |  251 +++
 .../apache/lucene/search/TestLRUQueryCache.java |   61 +-
 .../search/TestLongRangeFieldQueries.java       |  251 +++
 .../lucene/search/TestMatchAllDocsQuery.java    |    9 +-
 .../apache/lucene/search/TestPrefixRandom.java  |    4 +-
 .../apache/lucene/search/TestRegexpRandom2.java |    2 +-
 .../lucene/search/TestSearcherManager.java      |   15 +
 .../apache/lucene/search/TestSimilarity.java    |    2 +-
 .../lucene/search/TestSimilarityProvider.java   |    6 +-
 .../org/apache/lucene/search/TestTermQuery.java |   15 +
 .../apache/lucene/search/TestTermScorer.java    |   12 +-
 .../search/TestTimeLimitingCollector.java       |    2 +-
 .../apache/lucene/search/TestTopDocsMerge.java  |   38 +-
 .../similarities/TestBooleanSimilarity.java     |    3 +-
 .../search/similarities/TestSimilarityBase.java |    1 -
 .../apache/lucene/store/TestLockFactory.java    |    4 +-
 .../lucene/util/TestCloseableThreadLocal.java   |    2 +-
 .../apache/lucene/util/TestQueryBuilder.java    |    2 +-
 .../lucene/util/TestRamUsageEstimator.java      |    8 +-
 .../org/apache/lucene/util/fst/TestFSTs.java    |    6 +-
 .../apache/lucene/expressions/Expression.java   |   24 +-
 .../DefaultSortedSetDocValuesReaderState.java   |    3 +-
 .../facet/taxonomy/CachedOrdinalsReader.java    |    7 +-
 .../taxonomy/OrdinalMappingLeafReader.java      |   10 +
 .../taxonomy/writercache/CollisionMap.java      |    2 +-
 .../grouping/GroupFacetCollectorTest.java       |    4 +-
 .../search/highlight/TermVectorLeafReader.java  |   20 +-
 .../highlight/WeightedSpanTermExtractor.java    |   10 +
 .../MultiTermHighlighting.java                  |   20 +-
 .../uhighlight/MultiTermHighlighting.java       |   20 +-
 .../lucene/search/uhighlight/PhraseHelper.java  |   10 +
 .../TermVectorFilteredLeafReader.java           |   10 +
 .../search/uhighlight/UnifiedHighlighter.java   |   15 +
 .../uhighlight/TestUnifiedHighlighterMTQ.java   |   30 +-
 .../TestUnifiedHighlighterTermVec.java          |   15 +
 .../TestUnifiedHighlighterExtensibility.java    |    2 +-
 lucene/ivy-ignore-conflicts.properties          |    1 -
 lucene/ivy-versions.properties                  |   59 -
 .../lucene/search/join/GlobalOrdinalsQuery.java |   16 +-
 .../join/GlobalOrdinalsWithScoreQuery.java      |   16 +-
 .../org/apache/lucene/search/join/JoinUtil.java |    8 +-
 .../lucene/search/join/QueryBitSetProducer.java |   14 +-
 .../lucene/search/join/TestBlockJoin.java       |    2 +-
 .../apache/lucene/search/join/TestJoinUtil.java |   10 +-
 .../search/join/TestQueryBitSetProducer.java    |  110 ++
 .../apache/lucene/index/memory/MemoryIndex.java |   92 +-
 .../lucene/index/memory/TestMemoryIndex.java    |    8 +-
 .../memory/TestMemoryIndexAgainstRAMDir.java    |    5 +-
 .../lucene/document/InetAddressPoint.java       |  313 ++++
 .../lucene/document/InetAddressRange.java       |  168 ++
 .../apache/lucene/document/LazyDocument.java    |    5 -
 .../org/apache/lucene/index/IndexSplitter.java  |    4 +-
 .../lucene/index/MultiPassIndexSplitter.java    |   15 +
 .../apache/lucene/index/PKIndexSplitter.java    |   10 +
 .../apache/lucene/misc/SweetSpotSimilarity.java |    2 +-
 .../lucene/document/TestInetAddressPoint.java   |  176 +++
 .../lucene/misc/SweetSpotSimilarityTest.java    |    8 -
 .../search/TestDiversifiedTopDocsCollector.java |    2 +-
 .../search/TestInetAddressRangeQueries.java     |  215 +++
 .../apache/lucene/queries/BoostingQuery.java    |    2 +-
 .../apache/lucene/queries/CustomScoreQuery.java |    2 +-
 .../lucene/queries/TestCustomScoreQuery.java    |    2 +-
 .../function/TestLongNormValueSource.java       |    3 +-
 .../queries/function/TestValueSources.java      |    6 +-
 .../queries/payloads/TestPayloadScoreQuery.java |    2 +-
 .../queries/payloads/TestPayloadSpans.java      |    6 +-
 .../queries/payloads/TestPayloadTermQuery.java  |    2 +-
 .../queryparser/classic/QueryParserBase.java    |    6 +-
 .../complexPhrase/ComplexPhraseQueryParser.java |   21 +-
 .../standard/parser/StandardSyntaxParser.java   |    8 +-
 .../standard/parser/StandardSyntaxParser.jj     |    8 +-
 .../queryparser/simple/SimpleQueryParser.java   |    8 +-
 .../surround/parser/QueryParser.java            |    2 +-
 .../queryparser/surround/parser/QueryParser.jj  |    2 +-
 .../xml/builders/PointRangeQueryBuilder.java    |   16 +-
 .../queryparser/classic/TestMultiAnalyzer.java  |    8 +-
 .../classic/TestMultiFieldQueryParser.java      |    2 +-
 .../queryparser/classic/TestQueryParser.java    |    2 +-
 .../complexPhrase/TestComplexPhraseQuery.java   |   36 +-
 .../standard/TestMultiAnalyzerQPHelper.java     |    8 +-
 .../flexible/standard/TestQPHelper.java         |    8 +-
 .../simple/TestSimpleQueryParser.java           |    2 +-
 .../queryparser/util/QueryParserTestBase.java   |   10 +-
 .../xml/CoreParserTestIndexData.java            |    2 +-
 .../lucene/replicator/nrt/ReplicaNode.java      |    3 +-
 .../nrt/SegmentInfosSearcherManager.java        |    8 +-
 .../lucene/document/DoubleRangeField.java       |  282 ----
 .../apache/lucene/document/FloatRangeField.java |  282 ----
 .../lucene/document/InetAddressPoint.java       |  313 ----
 .../apache/lucene/document/IntRangeField.java   |  282 ----
 .../lucene/document/LatLonDocValuesField.java   |    2 +-
 .../apache/lucene/document/LongRangeField.java  |  280 ----
 .../apache/lucene/document/RangeFieldQuery.java |  340 ----
 .../org/apache/lucene/document/package.html     |    3 +-
 .../sandbox/queries/FuzzyLikeThisQuery.java     |    2 +-
 .../lucene/document/TestDoubleRangeField.java   |   10 +-
 .../lucene/document/TestInetAddressPoint.java   |  176 ---
 .../lucene/payloads/TestPayloadSpanUtil.java    |    4 +-
 .../search/BaseRangeFieldQueryTestCase.java     |  344 -----
 .../search/TestDoubleRangeFieldQueries.java     |  251 ---
 .../search/TestFloatRangeFieldQueries.java      |  251 ---
 .../lucene/search/TestIntRangeFieldQueries.java |  251 ---
 .../search/TestLongRangeFieldQueries.java       |  251 ---
 .../lucene/spatial3d/Geo3DDocValuesField.java   |    2 +-
 .../search/spell/WordBreakSpellChecker.java     |   10 +-
 .../lucene/search/suggest/FileDictionary.java   |    8 +-
 .../search/suggest/document/ContextQuery.java   |    2 +-
 .../search/suggest/document/SuggestField.java   |    2 +-
 .../search/suggest/fst/ExternalRefSorter.java   |    2 +-
 .../suggest/fst/WFSTCompletionLookup.java       |    2 +-
 .../search/suggest/jaspell/JaspellLookup.java   |    8 +-
 .../jaspell/JaspellTernarySearchTrie.java       |    2 +-
 .../search/suggest/DocumentDictionaryTest.java  |    2 +-
 .../analyzing/AnalyzingInfixSuggesterTest.java  |    2 +-
 .../suggest/analyzing/FuzzySuggesterTest.java   |    2 +-
 .../lucene/index/AllDeletedFilterReader.java    |   10 +
 .../lucene/index/AssertingDirectoryReader.java  |    9 +-
 .../lucene/index/AssertingLeafReader.java       |   30 +-
 .../index/BaseStoredFieldsFormatTestCase.java   |   15 +
 .../lucene/index/FieldFilterLeafReader.java     |   12 +-
 .../lucene/index/MismatchedDirectoryReader.java |    5 +
 .../lucene/index/MismatchedLeafReader.java      |   10 +
 .../lucene/index/MockRandomMergePolicy.java     |   13 +-
 .../lucene/index/OwnCacheKeyMultiReader.java    |   76 +
 .../lucene/search/BaseExplanationTestCase.java  |    1 -
 .../search/BaseRangeFieldQueryTestCase.java     |  346 +++++
 .../org/apache/lucene/search/QueryUtils.java    |   43 +-
 .../lucene/store/BaseLockFactoryTestCase.java   |    2 +-
 .../org/apache/lucene/util/LuceneTestCase.java  |   30 +-
 .../dependencies/GetMavenDependenciesTask.java  |    2 +-
 .../lucene/validation/LibVersionsCheckTask.java |    2 +-
 solr/CHANGES.txt                                |  247 ++-
 solr/bin/install_solr_service.sh                |    2 +-
 solr/bin/solr                                   |   89 +-
 solr/bin/solr.cmd                               |   31 +-
 solr/bin/solr.in.sh                             |   11 +-
 solr/build.xml                                  |    9 +-
 solr/common-build.xml                           |    9 +-
 .../apache/solr/schema/ICUCollationField.java   |   11 +-
 .../solr/analytics/request/AnalyticsStats.java  |    2 +-
 .../analytics/util/RangeEndpointCalculator.java |    8 +-
 .../handler/clustering/ClusteringComponent.java |   64 +-
 .../clustering/solr/collection1/conf/schema.xml |   40 +-
 .../solr/collection1/conf/synonyms.txt          |    2 +-
 .../clustering/ClusteringComponentTest.java     |   68 +-
 .../carrot2/CarrotClusteringEngineTest.java     |    3 +-
 .../handler/dataimport/MailEntityProcessor.java |    6 +-
 .../conf/dataimport-schema-no-unique-key.xml    |   11 +-
 .../solr/handler/dataimport/DocBuilder.java     |   24 +-
 .../dataimport/EntityProcessorWrapper.java      |   23 +
 .../handler/dataimport/VariableResolver.java    |    2 +-
 .../handler/dataimport/XPathRecordReader.java   |   10 +-
 .../handler/dataimport/config/EntityField.java  |    6 -
 .../solr/collection1/conf/dataimport-schema.xml |   17 +-
 .../conf/dataimport-solr_id-schema.xml          |   29 +-
 .../dataimport/AbstractDIHCacheTestCase.java    |    4 +-
 .../AbstractSqlEntityProcessorTestCase.java     |    4 +-
 .../dataimport/TestContentStreamDataSource.java |    2 +-
 .../handler/dataimport/TestJdbcDataSource.java  |   80 +-
 .../handler/extraction/ExtractingParams.java    |   13 -
 .../handler/extraction/SolrContentHandler.java  |   17 +-
 .../handler/extraction/XLSXResponseWriter.java  |    2 +-
 .../extraction/solr/collection1/conf/schema.xml |   61 +-
 .../ExtractingRequestHandlerTest.java           |    4 +-
 .../LanguageIdentifierUpdateProcessor.java      |    2 +-
 .../TikaLanguageIdentifierUpdateProcessor.java  |    5 +-
 .../org/apache/solr/ltr/LTRScoringQuery.java    |    2 +-
 .../apache/solr/ltr/feature/SolrFeature.java    |    3 +
 .../featureExamples/external_features.json      |    6 +
 .../test-files/solr/collection1/conf/schema.xml |    2 +-
 .../solr/collection1/conf/synonyms.txt          |    2 +-
 .../solr/ltr/TestLTRReRankingPipeline.java      |    2 +-
 .../solr/ltr/TestSelectiveWeightCreation.java   |    8 +-
 .../solr/ltr/feature/TestExternalFeatures.java  |   25 +-
 solr/contrib/map-reduce/README.txt              |   20 -
 solr/contrib/map-reduce/build.xml               |  157 --
 solr/contrib/map-reduce/ivy.xml                 |   37 -
 .../map-reduce/src/java/assembly/hadoop-job.xml |   39 -
 .../solr/hadoop/AlphaNumericComparator.java     |   75 -
 .../org/apache/solr/hadoop/BatchWriter.java     |  243 ---
 .../solr/hadoop/DataInputInputStream.java       |   58 -
 .../solr/hadoop/DataOutputOutputStream.java     |   66 -
 .../solr/hadoop/DryRunDocumentLoader.java       |   57 -
 .../src/java/org/apache/solr/hadoop/GoLive.java |  182 ---
 .../apache/solr/hadoop/HdfsFileFieldNames.java  |   41 -
 .../org/apache/solr/hadoop/HeartBeater.java     |  159 --
 .../solr/hadoop/LineRandomizerMapper.java       |   67 -
 .../solr/hadoop/LineRandomizerReducer.java      |   48 -
 .../solr/hadoop/MapReduceIndexerTool.java       | 1388 -----------------
 .../apache/solr/hadoop/PathArgumentType.java    |  233 ---
 .../java/org/apache/solr/hadoop/PathParts.java  |  130 --
 .../solr/hadoop/SolrCloudPartitioner.java       |  143 --
 .../org/apache/solr/hadoop/SolrCounters.java    |   53 -
 .../solr/hadoop/SolrInputDocumentWritable.java  |   66 -
 .../java/org/apache/solr/hadoop/SolrMapper.java |   39 -
 .../apache/solr/hadoop/SolrOutputFormat.java    |  280 ----
 .../apache/solr/hadoop/SolrRecordWriter.java    |  479 ------
 .../org/apache/solr/hadoop/SolrReducer.java     |  188 ---
 .../solr/hadoop/ToolRunnerHelpFormatter.java    |   90 --
 .../org/apache/solr/hadoop/TreeMergeMapper.java |   46 -
 .../solr/hadoop/TreeMergeOutputFormat.java      |  200 ---
 .../hadoop/UnbufferedDataInputInputStream.java  |  114 --
 .../src/java/org/apache/solr/hadoop/Utils.java  |   59 -
 .../apache/solr/hadoop/ZooKeeperInspector.java  |  213 ---
 .../dedup/NoChangeUpdateConflictResolver.java   |   36 -
 .../dedup/RejectingUpdateConflictResolver.java  |   48 -
 .../RetainMostRecentUpdateConflictResolver.java |  114 --
 .../dedup/SolrInputDocumentComparator.java      |   84 -
 .../dedup/SortingUpdateConflictResolver.java    |   79 -
 .../hadoop/dedup/UpdateConflictResolver.java    |   71 -
 .../apache/solr/hadoop/dedup/package-info.java  |   25 -
 .../hadoop/morphline/MorphlineCounters.java     |   47 -
 .../hadoop/morphline/MorphlineMapRunner.java    |  268 ----
 .../solr/hadoop/morphline/MorphlineMapper.java  |  193 ---
 .../solr/hadoop/morphline/package-info.java     |   25 -
 .../org/apache/solr/hadoop/package-info.java    |   25 -
 solr/contrib/map-reduce/src/java/overview.html  |   21 -
 .../map-reduce/src/test-files/README.txt        |    1 -
 .../solr/hadoop/AlphaNumericComparatorTest.java |   46 -
 .../org/apache/solr/hadoop/IdentityMapper.java  |   38 -
 .../org/apache/solr/hadoop/IdentityReducer.java |   37 -
 .../hadoop/LineRandomizerMapperReducerTest.java |   94 --
 .../test/org/apache/solr/hadoop/MRUnitBase.java |   66 -
 .../MapReduceIndexerToolArgumentParserTest.java |  469 ------
 .../solr/hadoop/MorphlineBasicMiniMRTest.java   |  416 -----
 .../solr/hadoop/MorphlineGoLiveMiniMRTest.java  |  881 -----------
 .../apache/solr/hadoop/MorphlineMapperTest.java |   76 -
 .../solr/hadoop/MorphlineReducerTest.java       |  131 --
 .../org/apache/solr/hadoop/UtilsForTests.java   |   57 -
 .../solr/hadoop/hack/MiniMRClientCluster.java   |   41 -
 .../hadoop/hack/MiniMRClientClusterFactory.java |   88 --
 .../apache/solr/hadoop/hack/MiniMRCluster.java  |  266 ----
 .../solr/hadoop/hack/MiniMRYarnCluster.java     |  205 ---
 .../hadoop/hack/MiniMRYarnClusterAdapter.java   |   78 -
 .../solr/hadoop/hack/MiniYARNCluster.java       |  409 -----
 solr/contrib/morphlines-cell/README.txt         |    6 -
 solr/contrib/morphlines-cell/build.xml          |  144 --
 solr/contrib/morphlines-cell/ivy.xml            |   35 -
 .../solr/morphlines/cell/SolrCellBuilder.java   |  348 -----
 .../StripNonCharSolrContentHandlerFactory.java  |   81 -
 .../cell/TrimSolrContentHandlerFactory.java     |   58 -
 .../solr/morphlines/cell/package-info.java      |   25 -
 .../morphlines-cell/src/java/overview.html      |   21 -
 .../morphlines-cell/src/test-files/README.txt   |    1 -
 .../morphlines/cell/SolrCellMorphlineTest.java  |  294 ----
 solr/contrib/morphlines-core/README.txt         |    6 -
 solr/contrib/morphlines-core/build.xml          |  105 --
 solr/contrib/morphlines-core/ivy.xml            |  128 --
 .../solr/morphlines/solr/DocumentLoader.java    |   73 -
 .../apache/solr/morphlines/solr/FileUtils.java  |  140 --
 .../solr/GenerateSolrSequenceKeyBuilder.java    |  143 --
 .../solr/morphlines/solr/LoadSolrBuilder.java   |  153 --
 .../solr/SafeConcurrentUpdateSolrClient.java    |   70 -
 .../solr/SanitizeUnknownSolrFieldsBuilder.java  |  101 --
 .../solr/SolrClientDocumentLoader.java          |  124 --
 .../solr/morphlines/solr/SolrLocator.java       |  254 ---
 .../morphlines/solr/SolrMorphlineContext.java   |   80 -
 .../morphlines/solr/TokenizeTextBuilder.java    |  154 --
 .../morphlines/solr/ZooKeeperDownloader.java    |  142 --
 .../solr/morphlines/solr/package-info.java      |   25 -
 .../morphlines-core/src/java/overview.html      |   21 -
 .../src/test-files/custom-mimetypes.xml         |   38 -
 .../src/test-files/log4j.properties             |    7 -
 .../src/test-files/morphlines-core.marker       |    1 -
 .../solr/collection1/conf/currency.xml          |   67 -
 .../solr/collection1/conf/elevate.xml           |   42 -
 .../collection1/conf/lang/contractions_ca.txt   |    8 -
 .../collection1/conf/lang/contractions_fr.txt   |    9 -
 .../collection1/conf/lang/contractions_ga.txt   |    5 -
 .../collection1/conf/lang/contractions_it.txt   |   23 -
 .../collection1/conf/lang/hyphenations_ga.txt   |    5 -
 .../solr/collection1/conf/lang/stemdict_nl.txt  |    6 -
 .../solr/collection1/conf/lang/stoptags_ja.txt  |  420 -----
 .../solr/collection1/conf/lang/stopwords_ar.txt |  125 --
 .../solr/collection1/conf/lang/stopwords_bg.txt |  193 ---
 .../solr/collection1/conf/lang/stopwords_ca.txt |  220 ---
 .../solr/collection1/conf/lang/stopwords_cz.txt |  172 ---
 .../solr/collection1/conf/lang/stopwords_da.txt |  108 --
 .../solr/collection1/conf/lang/stopwords_de.txt |  292 ----
 .../solr/collection1/conf/lang/stopwords_el.txt |   78 -
 .../solr/collection1/conf/lang/stopwords_en.txt |   54 -
 .../solr/collection1/conf/lang/stopwords_es.txt |  354 -----
 .../solr/collection1/conf/lang/stopwords_eu.txt |   99 --
 .../solr/collection1/conf/lang/stopwords_fa.txt |  313 ----
 .../solr/collection1/conf/lang/stopwords_fi.txt |   95 --
 .../solr/collection1/conf/lang/stopwords_fr.txt |  183 ---
 .../solr/collection1/conf/lang/stopwords_ga.txt |  110 --
 .../solr/collection1/conf/lang/stopwords_gl.txt |  161 --
 .../solr/collection1/conf/lang/stopwords_hi.txt |  235 ---
 .../solr/collection1/conf/lang/stopwords_hu.txt |  209 ---
 .../solr/collection1/conf/lang/stopwords_hy.txt |   46 -
 .../solr/collection1/conf/lang/stopwords_id.txt |  359 -----
 .../solr/collection1/conf/lang/stopwords_it.txt |  301 ----
 .../solr/collection1/conf/lang/stopwords_ja.txt |  127 --
 .../solr/collection1/conf/lang/stopwords_lv.txt |  172 ---
 .../solr/collection1/conf/lang/stopwords_nl.txt |  117 --
 .../solr/collection1/conf/lang/stopwords_no.txt |  192 ---
 .../solr/collection1/conf/lang/stopwords_pt.txt |  251 ---
 .../solr/collection1/conf/lang/stopwords_ro.txt |  233 ---
 .../solr/collection1/conf/lang/stopwords_ru.txt |  241 ---
 .../solr/collection1/conf/lang/stopwords_sv.txt |  131 --
 .../solr/collection1/conf/lang/stopwords_th.txt |  119 --
 .../solr/collection1/conf/lang/stopwords_tr.txt |  212 ---
 .../solr/collection1/conf/lang/userdict_ja.txt  |   29 -
 .../solr/collection1/conf/protwords.txt         |   21 -
 .../test-files/solr/collection1/conf/schema.xml |  927 -----------
 .../solr/collection1/conf/solrconfig.xml        | 1426 -----------------
 .../solr/collection1/conf/stopwords.txt         |   14 -
 .../solr/collection1/conf/synonyms.txt          |   29 -
 .../test-files/solr/minimr/conf/currency.xml    |   67 -
 .../src/test-files/solr/minimr/conf/elevate.xml |   42 -
 .../solr/minimr/conf/lang/contractions_ca.txt   |    8 -
 .../solr/minimr/conf/lang/contractions_fr.txt   |    9 -
 .../solr/minimr/conf/lang/contractions_ga.txt   |    5 -
 .../solr/minimr/conf/lang/contractions_it.txt   |   23 -
 .../solr/minimr/conf/lang/hyphenations_ga.txt   |    5 -
 .../solr/minimr/conf/lang/stemdict_nl.txt       |    6 -
 .../solr/minimr/conf/lang/stoptags_ja.txt       |  420 -----
 .../solr/minimr/conf/lang/stopwords_ar.txt      |  125 --
 .../solr/minimr/conf/lang/stopwords_bg.txt      |  193 ---
 .../solr/minimr/conf/lang/stopwords_ca.txt      |  220 ---
 .../solr/minimr/conf/lang/stopwords_cz.txt      |  172 ---
 .../solr/minimr/conf/lang/stopwords_da.txt      |  108 --
 .../solr/minimr/conf/lang/stopwords_de.txt      |  292 ----
 .../solr/minimr/conf/lang/stopwords_el.txt      |   78 -
 .../solr/minimr/conf/lang/stopwords_en.txt      |   54 -
 .../solr/minimr/conf/lang/stopwords_es.txt      |  354 -----
 .../solr/minimr/conf/lang/stopwords_eu.txt      |   99 --
 .../solr/minimr/conf/lang/stopwords_fa.txt      |  313 ----
 .../solr/minimr/conf/lang/stopwords_fi.txt      |   95 --
 .../solr/minimr/conf/lang/stopwords_fr.txt      |  183 ---
 .../solr/minimr/conf/lang/stopwords_ga.txt      |  110 --
 .../solr/minimr/conf/lang/stopwords_gl.txt      |  161 --
 .../solr/minimr/conf/lang/stopwords_hi.txt      |  235 ---
 .../solr/minimr/conf/lang/stopwords_hu.txt      |  209 ---
 .../solr/minimr/conf/lang/stopwords_hy.txt      |   46 -
 .../solr/minimr/conf/lang/stopwords_id.txt      |  359 -----
 .../solr/minimr/conf/lang/stopwords_it.txt      |  301 ----
 .../solr/minimr/conf/lang/stopwords_ja.txt      |  127 --
 .../solr/minimr/conf/lang/stopwords_lv.txt      |  172 ---
 .../solr/minimr/conf/lang/stopwords_nl.txt      |  117 --
 .../solr/minimr/conf/lang/stopwords_no.txt      |  192 ---
 .../solr/minimr/conf/lang/stopwords_pt.txt      |  251 ---
 .../solr/minimr/conf/lang/stopwords_ro.txt      |  233 ---
 .../solr/minimr/conf/lang/stopwords_ru.txt      |  241 ---
 .../solr/minimr/conf/lang/stopwords_sv.txt      |  131 --
 .../solr/minimr/conf/lang/stopwords_th.txt      |  119 --
 .../solr/minimr/conf/lang/stopwords_tr.txt      |  212 ---
 .../solr/minimr/conf/lang/userdict_ja.txt       |   29 -
 .../test-files/solr/minimr/conf/protwords.txt   |   21 -
 .../src/test-files/solr/minimr/conf/schema.xml  |  941 ------------
 .../test-files/solr/minimr/conf/solrconfig.xml  | 1446 -----------------
 .../test-files/solr/minimr/conf/stopwords.txt   |   14 -
 .../test-files/solr/minimr/conf/synonyms.txt    |   29 -
 .../src/test-files/solr/minimr/solr.xml         |   46 -
 .../test-files/solr/mrunit/conf/currency.xml    |   67 -
 .../src/test-files/solr/mrunit/conf/elevate.xml |   42 -
 .../solr/mrunit/conf/lang/contractions_ca.txt   |    8 -
 .../solr/mrunit/conf/lang/contractions_fr.txt   |    9 -
 .../solr/mrunit/conf/lang/contractions_ga.txt   |    5 -
 .../solr/mrunit/conf/lang/contractions_it.txt   |   23 -
 .../solr/mrunit/conf/lang/hyphenations_ga.txt   |    5 -
 .../solr/mrunit/conf/lang/stemdict_nl.txt       |    6 -
 .../solr/mrunit/conf/lang/stoptags_ja.txt       |  420 -----
 .../solr/mrunit/conf/lang/stopwords_ar.txt      |  125 --
 .../solr/mrunit/conf/lang/stopwords_bg.txt      |  193 ---
 .../solr/mrunit/conf/lang/stopwords_ca.txt      |  220 ---
 .../solr/mrunit/conf/lang/stopwords_cz.txt      |  172 ---
 .../solr/mrunit/conf/lang/stopwords_da.txt      |  108 --
 .../solr/mrunit/conf/lang/stopwords_de.txt      |  292 ----
 .../solr/mrunit/conf/lang/stopwords_el.txt      |   78 -
 .../solr/mrunit/conf/lang/stopwords_en.txt      |   54 -
 .../solr/mrunit/conf/lang/stopwords_es.txt      |  354 -----
 .../solr/mrunit/conf/lang/stopwords_eu.txt      |   99 --
 .../solr/mrunit/conf/lang/stopwords_fa.txt      |  313 ----
 .../solr/mrunit/conf/lang/stopwords_fi.txt      |   95 --
 .../solr/mrunit/conf/lang/stopwords_fr.txt      |  183 ---
 .../solr/mrunit/conf/lang/stopwords_ga.txt      |  110 --
 .../solr/mrunit/conf/lang/stopwords_gl.txt      |  161 --
 .../solr/mrunit/conf/lang/stopwords_hi.txt      |  235 ---
 .../solr/mrunit/conf/lang/stopwords_hu.txt      |  209 ---
 .../solr/mrunit/conf/lang/stopwords_hy.txt      |   46 -
 .../solr/mrunit/conf/lang/stopwords_id.txt      |  359 -----
 .../solr/mrunit/conf/lang/stopwords_it.txt      |  301 ----
 .../solr/mrunit/conf/lang/stopwords_ja.txt      |  127 --
 .../solr/mrunit/conf/lang/stopwords_lv.txt      |  172 ---
 .../solr/mrunit/conf/lang/stopwords_nl.txt      |  117 --
 .../solr/mrunit/conf/lang/stopwords_no.txt      |  192 ---
 .../solr/mrunit/conf/lang/stopwords_pt.txt      |  251 ---
 .../solr/mrunit/conf/lang/stopwords_ro.txt      |  233 ---
 .../solr/mrunit/conf/lang/stopwords_ru.txt      |  241 ---
 .../solr/mrunit/conf/lang/stopwords_sv.txt      |  131 --
 .../solr/mrunit/conf/lang/stopwords_th.txt      |  119 --
 .../solr/mrunit/conf/lang/stopwords_tr.txt      |  212 ---
 .../solr/mrunit/conf/lang/userdict_ja.txt       |   29 -
 .../test-files/solr/mrunit/conf/protwords.txt   |   21 -
 .../src/test-files/solr/mrunit/conf/schema.xml  |  940 ------------
 .../test-files/solr/mrunit/conf/solrconfig.xml  | 1449 ------------------
 .../test-files/solr/mrunit/conf/stopwords.txt   |   14 -
 .../test-files/solr/mrunit/conf/synonyms.txt    |   29 -
 .../src/test-files/solr/mrunit/solr.xml         |   45 -
 .../src/test-files/solr/solr.xml                |   34 -
 .../solrcelltest/collection1/conf/currency.xml  |   67 -
 .../solrcelltest/collection1/conf/elevate.xml   |   42 -
 .../collection1/conf/lang/contractions_ca.txt   |    8 -
 .../collection1/conf/lang/contractions_fr.txt   |    9 -
 .../collection1/conf/lang/contractions_ga.txt   |    5 -
 .../collection1/conf/lang/contractions_it.txt   |   23 -
 .../collection1/conf/lang/hyphenations_ga.txt   |    5 -
 .../collection1/conf/lang/stemdict_nl.txt       |    6 -
 .../collection1/conf/lang/stoptags_ja.txt       |  420 -----
 .../collection1/conf/lang/stopwords_ar.txt      |  125 --
 .../collection1/conf/lang/stopwords_bg.txt      |  193 ---
 .../collection1/conf/lang/stopwords_ca.txt      |  220 ---
 .../collection1/conf/lang/stopwords_cz.txt      |  172 ---
 .../collection1/conf/lang/stopwords_da.txt      |  108 --
 .../collection1/conf/lang/stopwords_de.txt      |  292 ----
 .../collection1/conf/lang/stopwords_el.txt      |   78 -
 .../collection1/conf/lang/stopwords_en.txt      |   54 -
 .../collection1/conf/lang/stopwords_es.txt      |  354 -----
 .../collection1/conf/lang/stopwords_eu.txt      |   99 --
 .../collection1/conf/lang/stopwords_fa.txt      |  313 ----
 .../collection1/conf/lang/stopwords_fi.txt      |   95 --
 .../collection1/conf/lang/stopwords_fr.txt      |  183 ---
 .../collection1/conf/lang/stopwords_ga.txt      |  110 --
 .../collection1/conf/lang/stopwords_gl.txt      |  161 --
 .../collection1/conf/lang/stopwords_hi.txt      |  235 ---
 .../collection1/conf/lang/stopwords_hu.txt      |  209 ---
 .../collection1/conf/lang/stopwords_hy.txt      |   46 -
 .../collection1/conf/lang/stopwords_id.txt      |  359 -----
 .../collection1/conf/lang/stopwords_it.txt      |  301 ----
 .../collection1/conf/lang/stopwords_ja.txt      |  127 --
 .../collection1/conf/lang/stopwords_lv.txt      |  172 ---
 .../collection1/conf/lang/stopwords_nl.txt      |  117 --
 .../collection1/conf/lang/stopwords_no.txt      |  192 ---
 .../collection1/conf/lang/stopwords_pt.txt      |  251 ---
 .../collection1/conf/lang/stopwords_ro.txt      |  233 ---
 .../collection1/conf/lang/stopwords_ru.txt      |  241 ---
 .../collection1/conf/lang/stopwords_sv.txt      |  131 --
 .../collection1/conf/lang/stopwords_th.txt      |  119 --
 .../collection1/conf/lang/stopwords_tr.txt      |  212 ---
 .../collection1/conf/lang/userdict_ja.txt       |   29 -
 .../solrcelltest/collection1/conf/protwords.txt |   21 -
 .../solrcelltest/collection1/conf/schema.xml    |  893 -----------
 .../collection1/conf/solrconfig.xml             | 1426 -----------------
 .../solrcelltest/collection1/conf/stopwords.txt |   14 -
 .../solrcelltest/collection1/conf/synonyms.txt  |   29 -
 .../solr/solrcloud/conf/solrconfig.xml          | 1437 -----------------
 .../test-files/test-documents/NullHeader.docx   |  Bin 4355 -> 0 bytes
 .../test-files/test-documents/boilerplate.html  |   58 -
 .../src/test-files/test-documents/cars.csv      |    6 -
 .../src/test-files/test-documents/cars.csv.gz   |  Bin 167 -> 0 bytes
 .../src/test-files/test-documents/cars.tar.gz   |  Bin 298 -> 0 bytes
 .../src/test-files/test-documents/complex.mbox  |  291 ----
 .../src/test-files/test-documents/email.eml     |   40 -
 .../src/test-files/test-documents/rsstest.rss   |   36 -
 .../sample-statuses-20120521-100919.avro        |  Bin 3192 -> 0 bytes
 .../sample-statuses-20120906-141433             |    4 -
 .../sample-statuses-20120906-141433-medium.avro |  Bin 249540 -> 0 bytes
 .../sample-statuses-20120906-141433.avro        |  Bin 1208 -> 0 bytes
 .../sample-statuses-20120906-141433.bz2         |  Bin 1054 -> 0 bytes
 .../sample-statuses-20120906-141433.gz          |  Bin 907 -> 0 bytes
 .../test-files/test-documents/test-outlook.msg  |  Bin 19968 -> 0 bytes
 .../src/test-files/test-documents/testAIFF.aif  |  Bin 3894 -> 0 bytes
 .../src/test-files/test-documents/testBMP.bmp   |  Bin 22554 -> 0 bytes
 .../src/test-files/test-documents/testBMPfp.txt |    3 -
 .../src/test-files/test-documents/testEMLX.emlx |   72 -
 .../src/test-files/test-documents/testEXCEL.xls |  Bin 13824 -> 0 bytes
 .../test-files/test-documents/testEXCEL.xlsx    |  Bin 9453 -> 0 bytes
 .../src/test-files/test-documents/testFLAC.flac |  Bin 10604 -> 0 bytes
 .../src/test-files/test-documents/testFLV.flv   |  Bin 90580 -> 0 bytes
 .../test-files/test-documents/testJPEG_EXIF.jpg |  Bin 16357 -> 0 bytes
 .../test-documents/testJPEG_EXIF.jpg.gz         |  Bin 8595 -> 0 bytes
 .../test-documents/testJPEG_EXIF.jpg.tar.gz     |  Bin 8722 -> 0 bytes
 .../test-files/test-documents/testMP3i18n.mp3   |  Bin 40832 -> 0 bytes
 .../src/test-files/test-documents/testMP4.m4a   |  Bin 4770 -> 0 bytes
 .../src/test-files/test-documents/testPDF.pdf   |  Bin 34824 -> 0 bytes
 .../src/test-files/test-documents/testPNG.png   |  Bin 17041 -> 0 bytes
 .../test-documents/testPPT_various.ppt          |  Bin 164352 -> 0 bytes
 .../test-documents/testPPT_various.pptx         |  Bin 56659 -> 0 bytes
 .../src/test-files/test-documents/testPSD.psd   |  Bin 69410 -> 0 bytes
 .../test-files/test-documents/testPages.pages   |  Bin 134152 -> 0 bytes
 .../src/test-files/test-documents/testRFC822    |   41 -
 .../test-documents/testRTFVarious.rtf           |  329 ----
 .../src/test-files/test-documents/testSVG.svg   |   23 -
 .../src/test-files/test-documents/testTIFF.tif  |  Bin 25584 -> 0 bytes
 .../src/test-files/test-documents/testVISIO.vsd |  Bin 45568 -> 0 bytes
 .../src/test-files/test-documents/testWAV.wav   |  Bin 3884 -> 0 bytes
 .../test-documents/testWORD_various.doc         |  Bin 35328 -> 0 bytes
 .../src/test-files/test-documents/testXML.xml   |   48 -
 .../src/test-files/test-documents/testXML2.xml  |   22 -
 .../test-morphlines/loadSolrBasic.conf          |   63 -
 .../test-morphlines/solrCellDocumentTypes.conf  |  283 ----
 .../test-morphlines/solrCellJPGCompressed.conf  |  135 --
 .../test-files/test-morphlines/solrCellXML.conf |   69 -
 .../test-morphlines/tokenizeText.conf           |   34 -
 .../tutorialReadAvroContainer.conf              |  140 --
 .../solr/AbstractSolrMorphlineTestBase.java     |  320 ----
 .../solr/AbstractSolrMorphlineZkTestBase.java   |  145 --
 .../solr/CollectingDocumentLoader.java          |   95 --
 .../morphlines/solr/EmbeddedTestSolrServer.java |   46 -
 .../solr/morphlines/solr/SolrMorphlineTest.java |   69 -
 .../solr/SolrMorphlineZkAliasTest.java          |   96 --
 .../solr/SolrMorphlineZkAvroTest.java           |  140 --
 .../morphlines/solr/SolrMorphlineZkTest.java    |   92 --
 .../solr/uima/processor/UIMAToSolrMapper.java   |    2 +-
 .../uima/solr/collection1/conf/schema.xml       |   47 +-
 .../uima/solr/collection1/conf/synonyms.txt     |    2 +-
 .../test-files/uima/uima-tokenizers-schema.xml  |   36 +-
 .../java/org/apache/solr/response/PageTool.java |    2 +-
 .../solr/response/VelocityResponseWriter.java   |    6 +-
 .../java/org/apache/solr/api/V2HttpCall.java    |    2 +-
 .../solrj/embedded/EmbeddedSolrServer.java      |   55 +-
 .../org/apache/solr/cloud/ElectionContext.java  |   37 +-
 .../java/org/apache/solr/cloud/Overseer.java    |   17 +-
 .../OverseerAutoReplicaFailoverThread.java      |    6 +-
 .../cloud/OverseerCollectionMessageHandler.java |    1 +
 .../solr/cloud/OverseerNodePrioritizer.java     |    9 +-
 .../solr/cloud/OverseerTaskProcessor.java       |   13 +-
 .../apache/solr/cloud/OverseerTaskQueue.java    |    2 +-
 .../org/apache/solr/cloud/RecoveryStrategy.java |  137 +-
 .../apache/solr/cloud/ReplicateFromLeader.java  |  124 ++
 .../org/apache/solr/cloud/SyncStrategy.java     |    4 +-
 .../org/apache/solr/cloud/ZkController.java     |   47 +-
 .../apache/solr/cloud/ZkSolrResourceLoader.java |    2 +-
 .../solr/core/CachingDirectoryFactory.java      |    2 +-
 .../java/org/apache/solr/core/ConfigSet.java    |   10 +-
 .../org/apache/solr/core/ConfigSetService.java  |   29 +-
 .../org/apache/solr/core/CoreContainer.java     |   78 +-
 .../org/apache/solr/core/CoreDescriptor.java    |   17 +
 .../org/apache/solr/core/DirectoryFactory.java  |    9 +-
 .../org/apache/solr/core/JmxMonitoredMap.java   |   13 +-
 .../apache/solr/core/MMapDirectoryFactory.java  |    4 +
 .../solr/core/MetricsDirectoryFactory.java      |  537 -------
 .../java/org/apache/solr/core/PluginBag.java    |    2 +-
 .../apache/solr/core/QuerySenderListener.java   |   22 +-
 .../org/apache/solr/core/RequestParams.java     |    2 +-
 .../apache/solr/core/RunExecutableListener.java |   13 +-
 .../java/org/apache/solr/core/SolrConfig.java   |    2 +
 .../src/java/org/apache/solr/core/SolrCore.java |   86 +-
 .../core/SolrCoreInitializationException.java   |   32 +
 .../apache/solr/core/SolrDeletionPolicy.java    |    6 -
 .../org/apache/solr/core/SolrInfoMBean.java     |    4 +-
 .../org/apache/solr/core/SolrXmlConfig.java     |    3 +-
 .../org/apache/solr/handler/BlobHandler.java    |   15 +-
 .../org/apache/solr/handler/CdcrReplicator.java |   17 +-
 .../solr/handler/CdcrReplicatorState.java       |    6 +-
 .../apache/solr/handler/CdcrRequestHandler.java |    2 +-
 .../handler/DocumentAnalysisRequestHandler.java |    4 +-
 .../org/apache/solr/handler/ExportWriter.java   |   20 +-
 .../org/apache/solr/handler/GraphHandler.java   |    4 +-
 .../org/apache/solr/handler/IndexFetcher.java   |  123 +-
 .../apache/solr/handler/PingRequestHandler.java |    6 +-
 .../apache/solr/handler/ReplicationHandler.java |   38 +-
 .../apache/solr/handler/RequestHandlerBase.java |    7 +-
 .../org/apache/solr/handler/SQLHandler.java     |   39 +-
 .../org/apache/solr/handler/StreamHandler.java  |   72 +-
 .../solr/handler/admin/CollectionsHandler.java  |    4 +-
 .../solr/handler/admin/ConfigSetsHandler.java   |   93 +-
 .../solr/handler/admin/LukeRequestHandler.java  |    3 +-
 .../handler/admin/MetricsCollectorHandler.java  |  228 +++
 .../solr/handler/admin/MetricsHandler.java      |    6 +-
 .../handler/admin/PropertiesRequestHandler.java |   27 +-
 .../solr/handler/admin/SystemInfoHandler.java   |   20 +-
 .../solr/handler/admin/ThreadDumpHandler.java   |    5 +-
 .../solr/handler/component/ExpandComponent.java |  102 +-
 .../component/HttpShardHandlerFactory.java      |    2 +-
 .../component/IterativeMergeStrategy.java       |    4 +-
 .../component/MoreLikeThisComponent.java        |    4 +-
 .../PivotFacetFieldValueCollection.java         |    4 +-
 .../solr/handler/component/QueryComponent.java  |    5 +-
 .../component/QueryElevationComponent.java      |    4 +-
 .../handler/component/RangeFacetRequest.java    |   13 +-
 .../handler/component/RealTimeGetComponent.java |   77 +-
 .../solr/handler/component/SearchHandler.java   |   10 +-
 .../component/SortedDateStatsValues.java        |   89 ++
 .../handler/component/StatsValuesFactory.java   |    8 +-
 .../solr/handler/component/TermsComponent.java  |   68 +-
 .../solr/handler/loader/CSVLoaderBase.java      |    4 +-
 .../solr/handler/loader/JavabinLoader.java      |    3 +-
 .../apache/solr/handler/loader/JsonLoader.java  |   39 +-
 .../apache/solr/handler/loader/XMLLoader.java   |   44 +-
 .../apache/solr/handler/sql/SolrAggregate.java  |    6 +-
 .../apache/solr/handler/sql/SolrEnumerator.java |    5 +-
 .../apache/solr/handler/sql/SolrProject.java    |    2 +-
 .../org/apache/solr/handler/sql/SolrRel.java    |   10 +-
 .../org/apache/solr/handler/sql/SolrRules.java  |   14 +
 .../org/apache/solr/handler/sql/SolrSchema.java |    4 +
 .../org/apache/solr/handler/sql/SolrTable.java  |   65 +-
 .../apache/solr/handler/sql/SolrTableScan.java  |    4 +
 .../handler/sql/SolrToEnumerableConverter.java  |    1 +
 .../solr/highlight/DefaultSolrHighlighter.java  |   15 +-
 .../solr/highlight/PostingsSolrHighlighter.java |   35 +-
 .../apache/solr/highlight/SolrHighlighter.java  |    2 +-
 .../solr/highlight/UnifiedSolrHighlighter.java  |   28 +-
 .../solr/index/SlowCompositeReaderWrapper.java  |   35 +-
 .../solr/index/SortingMergePolicyFactory.java   |    7 +-
 .../UninvertDocValuesMergePolicyFactory.java    |  218 +++
 .../solr/internal/csv/writer/CSVConfig.java     |    2 +-
 .../internal/csv/writer/CSVConfigGuesser.java   |    8 +-
 .../apache/solr/metrics/AggregateMetric.java    |  200 +++
 .../solr/metrics/SolrCoreMetricManager.java     |  125 +-
 .../apache/solr/metrics/SolrMetricManager.java  |  330 +++-
 .../metrics/reporters/JmxObjectNameFactory.java |    6 +-
 .../reporters/solr/SolrClusterReporter.java     |  281 ++++
 .../metrics/reporters/solr/SolrReporter.java    |  392 +++++
 .../reporters/solr/SolrShardReporter.java       |  189 +++
 .../metrics/reporters/solr/package-info.java    |   22 +
 .../org/apache/solr/parser/QueryParser.java     |  416 +++--
 .../java/org/apache/solr/parser/QueryParser.jj  |  275 ++--
 .../apache/solr/parser/SolrQueryParserBase.java |  217 ++-
 .../org/apache/solr/request/NumericFacets.java  |    4 +-
 .../org/apache/solr/request/SimpleFacets.java   |   14 +-
 .../solr/request/SolrQueryRequestBase.java      |   17 +-
 .../apache/solr/request/json/RequestUtil.java   |    5 +-
 .../org/apache/solr/response/DocsStreamer.java  |   78 +-
 .../solr/response/TextResponseWriter.java       |    2 +-
 .../transform/BaseEditorialTransformer.java     |   36 +-
 .../transform/ChildDocTransformerFactory.java   |    2 +-
 .../solr/rest/schema/FieldTypeXmlAdapter.java   |   25 +-
 .../solr/schema/AbstractSpatialFieldType.java   |    8 +-
 .../solr/schema/AbstractSubTypeFieldType.java   |   17 +-
 .../java/org/apache/solr/schema/BBoxField.java  |    2 +-
 .../org/apache/solr/schema/BinaryField.java     |   16 +-
 .../java/org/apache/solr/schema/BoolField.java  |    7 +-
 .../org/apache/solr/schema/CollationField.java  |   11 +-
 .../org/apache/solr/schema/CurrencyField.java   |    8 +-
 .../org/apache/solr/schema/DatePointField.java  |  269 ++++
 .../org/apache/solr/schema/DateRangeField.java  |    4 +-
 .../apache/solr/schema/DoublePointField.java    |   17 +-
 .../java/org/apache/solr/schema/EnumField.java  |   30 +-
 .../org/apache/solr/schema/FieldProperties.java |   43 +-
 .../java/org/apache/solr/schema/FieldType.java  |   57 +-
 .../org/apache/solr/schema/FloatPointField.java |   18 +-
 .../org/apache/solr/schema/IntPointField.java   |   16 +-
 .../solr/schema/LatLonPointSpatialField.java    |  271 ++++
 .../java/org/apache/solr/schema/LatLonType.java |   18 +-
 .../org/apache/solr/schema/LongPointField.java  |   16 +-
 .../apache/solr/schema/ManagedIndexSchema.java  |    4 +-
 .../apache/solr/schema/NumericFieldType.java    |    4 +-
 .../java/org/apache/solr/schema/PointField.java |   10 +-
 .../java/org/apache/solr/schema/PointType.java  |   20 +-
 .../apache/solr/schema/PreAnalyzedField.java    |   10 +-
 .../apache/solr/schema/PrimitiveFieldType.java  |    4 +
 .../org/apache/solr/schema/RandomSortField.java |    2 +-
 .../schema/RptWithGeometrySpatialField.java     |    7 +-
 .../org/apache/solr/schema/SchemaField.java     |   17 +-
 .../schema/SpatialPointVectorFieldType.java     |    7 -
 .../java/org/apache/solr/schema/StrField.java   |    8 +-
 .../java/org/apache/solr/schema/TrieField.java  |   29 +-
 .../solr/search/CollapsingQParserPlugin.java    |   74 +-
 .../solr/search/ComplexPhraseQParserPlugin.java |    4 +-
 .../apache/solr/search/ExportQParserPlugin.java |    2 +-
 .../solr/search/ExtendedDismaxQParser.java      |  171 ++-
 .../java/org/apache/solr/search/Grouping.java   |    4 +-
 .../apache/solr/search/HashQParserPlugin.java   |   18 +-
 .../java/org/apache/solr/search/Insanity.java   |    9 +-
 .../org/apache/solr/search/LuceneQParser.java   |    3 +
 .../apache/solr/search/LuceneQParserPlugin.java |    2 +
 .../org/apache/solr/search/QueryParsing.java    |    1 +
 .../org/apache/solr/search/ReRankCollector.java |    2 +-
 .../apache/solr/search/ReRankQParserPlugin.java |    2 +-
 .../apache/solr/search/SolrDocumentFetcher.java |  571 +++++++
 .../apache/solr/search/SolrIndexSearcher.java   |  470 +-----
 .../org/apache/solr/search/SolrQueryParser.java |    2 +-
 .../solr/search/facet/FacetFieldMerger.java     |    2 +-
 .../solr/search/facet/FacetFieldProcessor.java  |   79 +-
 .../facet/FacetFieldProcessorByArray.java       |    4 +
 .../FacetFieldProcessorByEnumTermsStream.java   |    2 +-
 .../apache/solr/search/facet/FacetModule.java   |  128 +-
 .../solr/search/facet/FacetProcessor.java       |   25 +-
 .../apache/solr/search/facet/FacetQuery.java    |    6 +-
 .../apache/solr/search/facet/FacetRange.java    |   12 +-
 .../apache/solr/search/facet/FacetRequest.java  |    6 +-
 .../search/facet/FacetRequestSortedMerger.java  |   16 +-
 .../apache/solr/search/facet/LegacyFacet.java   |    8 +-
 .../org/apache/solr/search/facet/UniqueAgg.java |    2 +-
 .../search/function/CollapseScoreFunction.java  |    2 +-
 .../TopGroupsShardRequestFactory.java           |    4 +-
 .../SearchGroupShardResponseProcessor.java      |    2 +-
 .../SearchGroupsResultTransformer.java          |   40 +-
 .../TopGroupsResultTransformer.java             |   18 +-
 .../GroupedEndResultTransformer.java            |    2 +-
 .../org/apache/solr/search/join/GraphQuery.java |    2 +-
 .../apache/solr/search/mlt/CloudMLTQParser.java |    5 +-
 .../security/AutorizationEditOperation.java     |    2 +-
 .../solr/security/PKIAuthenticationPlugin.java  |   44 +-
 .../solr/security/PermissionNameProvider.java   |    2 +-
 .../org/apache/solr/servlet/HttpSolrCall.java   |    4 +-
 .../apache/solr/servlet/SolrDispatchFilter.java |   13 +-
 .../apache/solr/servlet/SolrRequestParsers.java |   11 +-
 .../solr/spelling/PossibilityIterator.java      |    6 +-
 .../solr/spelling/SpellCheckCollation.java      |    2 +-
 .../solr/spelling/SpellCheckCollator.java       |    4 +-
 .../solr/store/blockcache/BlockCache.java       |   15 +-
 .../store/blockcache/BlockDirectoryCache.java   |    5 -
 .../apache/solr/store/blockcache/Metrics.java   |  121 +-
 .../org/apache/solr/uninverting/FieldCache.java |   18 +-
 .../apache/solr/uninverting/FieldCacheImpl.java |   70 +-
 .../uninverting/FieldCacheSanityChecker.java    |  426 -----
 .../solr/uninverting/UninvertingReader.java     |   21 +-
 .../apache/solr/update/AddUpdateCommand.java    |    3 +-
 .../org/apache/solr/update/CommitTracker.java   |    5 +
 .../solr/update/DefaultSolrCoreState.java       |   15 +-
 .../solr/update/DirectUpdateHandler2.java       |  151 +-
 .../org/apache/solr/update/DocumentBuilder.java |  108 +-
 .../apache/solr/update/HdfsTransactionLog.java  |   50 +
 .../java/org/apache/solr/update/PeerSync.java   |   22 +-
 .../org/apache/solr/update/SolrCoreState.java   |    6 +
 .../apache/solr/update/SolrIndexSplitter.java   |   13 +-
 .../org/apache/solr/update/SolrIndexWriter.java |   31 +-
 .../org/apache/solr/update/TransactionLog.java  |   50 +
 .../org/apache/solr/update/UpdateCommand.java   |    1 +
 .../org/apache/solr/update/UpdateHandler.java   |   16 +
 .../java/org/apache/solr/update/UpdateLog.java  |  184 ++-
 .../org/apache/solr/update/VersionInfo.java     |    6 +-
 ...aluesOrNoneFieldMutatingUpdateProcessor.java |    3 +-
 .../processor/AtomicUpdateDocumentMerger.java   |   32 +-
 .../update/processor/CdcrUpdateProcessor.java   |    3 +-
 .../CloneFieldUpdateProcessorFactory.java       |    3 +-
 .../ConcatFieldUpdateProcessorFactory.java      |    3 +-
 .../CountFieldValuesUpdateProcessorFactory.java |    3 +-
 .../processor/DistributedUpdateProcessor.java   |   66 +-
 ...BasedVersionConstraintsProcessorFactory.java |    4 +-
 .../FieldValueMutatingUpdateProcessor.java      |    3 +-
 .../FieldValueSubsetUpdateProcessorFactory.java |    3 +-
 .../PreAnalyzedUpdateProcessorFactory.java      |    9 +-
 .../StatelessScriptUpdateProcessorFactory.java  |    6 +
 .../TolerantUpdateProcessorFactory.java         |    2 +-
 .../org/apache/solr/util/DateMathParser.java    |    2 +-
 .../src/java/org/apache/solr/util/RTimer.java   |    2 +-
 .../org/apache/solr/util/RedactionUtils.java    |   51 +
 .../org/apache/solr/util/SimplePostTool.java    |    4 +-
 .../src/java/org/apache/solr/util/SolrCLI.java  |    3 +-
 .../org/apache/solr/util/SolrPluginUtils.java   |   11 +-
 .../org/apache/solr/util/TestInjection.java     |   62 +
 ...entedPoolingHttpClientConnectionManager.java |   38 +-
 .../org/apache/solr/util/stats/MetricUtils.java |  303 +++-
 .../collection1/conf/multiword-synonyms.txt     |   13 +
 .../conf/schema-HighlighterMaxOffsetTest.xml    |    9 +-
 .../collection1/conf/schema-copyfield-test.xml  |   50 +-
 .../solr/collection1/conf/schema-docValues.xml  |    1 +
 .../conf/schema-docValuesFaceting.xml           |    5 +-
 .../collection1/conf/schema-docValuesJoin.xml   |    7 +-
 .../solr/collection1/conf/schema-folding.xml    |    2 +-
 .../solr/collection1/conf/schema-hash.xml       |   59 +-
 .../conf/schema-multiword-synonyms.xml          |   50 +
 .../solr/collection1/conf/schema-point.xml      |   11 +
 .../collection1/conf/schema-psuedo-fields.xml   |    7 +-
 .../collection1/conf/schema-required-fields.xml |   39 +-
 .../solr/collection1/conf/schema-rest.xml       |   97 +-
 .../conf/schema-single-dynamic-copy-field.xml   |   97 +-
 .../solr/collection1/conf/schema-sorts.xml      |   11 +-
 .../solr/collection1/conf/schema-spatial.xml    |    4 +
 .../collection1/conf/schema-spellchecker.xml    |    2 +-
 .../solr/collection1/conf/schema-sql.xml        |   59 +-
 .../conf/schema-synonym-tokenizer.xml           |    5 +-
 .../solr/collection1/conf/schema-trie.xml       |   29 +-
 .../conf/schema-unifiedhighlight.xml            |    4 +-
 .../test-files/solr/collection1/conf/schema.xml |  107 +-
 .../solr/collection1/conf/schema11.xml          |   40 +-
 .../solr/collection1/conf/schema12.xml          |  101 +-
 .../solr/collection1/conf/schema15.xml          |   92 +-
 .../solr/collection1/conf/schema_latest.xml     |   58 +-
 .../solr/collection1/conf/schemasurround.xml    |   99 +-
 .../solrconfig-configurerecoverystrategy.xml    |   28 +
 .../conf/solrconfig-customrecoverystrategy.xml  |   32 +
 .../conf/solrconfig-indexmetrics.xml            |    2 -
 .../conf/solrconfig-managed-schema.xml          |   29 +-
 ...lrconfig-parsing-update-processor-chains.xml |    7 +
 ...nfig-uninvertdocvaluesmergepolicyfactory.xml |   38 +
 .../conf/solrconfig-update-processor-chains.xml |    2 +
 .../solr/collection1/conf/synonyms.txt          |    5 +-
 .../solr/collection1/conf/wdftypes.txt          |    2 +-
 .../configsets/cloud-dynamic/conf/schema.xml    |   35 +-
 .../conf/schema.xml                             |   31 +
 .../conf/solrconfig.xml                         |   48 +
 .../solr/configsets/doc-expiry/conf/schema.xml  |   35 +-
 .../dih-script-transformer/managed-schema       |   25 +
 .../dih-script-transformer/solrconfig.xml       |   61 +
 .../configsets/upload/regular/managed-schema    |   25 +
 .../configsets/upload/regular/solrconfig.xml    |   61 +
 .../regular/xslt/xsl-update-handler-test.xsl    |   49 +
 .../with-run-executable-listener/managed-schema |   25 +
 .../with-run-executable-listener/solrconfig.xml |   69 +
 .../upload/with-script-processor/managed-schema |   25 +
 ...missleading.extension.updateprocessor.js.txt |   23 +
 .../upload/with-script-processor/solrconfig.xml |   65 +
 .../src/test-files/solr/solr-solrreporter.xml   |   66 +
 .../org/apache/solr/BasicFunctionalityTest.java |   12 +-
 .../org/apache/solr/ConvertedLegacyTest.java    |    2 +-
 .../apache/solr/TestDistributedGrouping.java    |    2 -
 .../org/apache/solr/TestDocumentBuilder.java    |    1 -
 .../org/apache/solr/TestGroupingSearch.java     |    8 -
 .../TestEmbeddedSolrServerSchemaAPI.java        |  111 ++
 .../solr/cloud/BaseCdcrDistributedZkTest.java   |    4 +-
 .../solr/cloud/BasicDistributedZk2Test.java     |    6 +
 .../solr/cloud/BasicDistributedZkTest.java      |    9 +-
 .../solr/cloud/CdcrVersionReplicationTest.java  |    4 +-
 .../cloud/ChaosMonkeyNothingIsSafeTest.java     |   11 +-
 .../apache/solr/cloud/CleanupOldIndexTest.java  |   18 +-
 .../solr/cloud/ConnectionManagerTest.java       |    2 +-
 .../apache/solr/cloud/DistributedQueueTest.java |    2 +-
 .../org/apache/solr/cloud/ForceLeaderTest.java  |    6 +
 .../cloud/FullSolrCloudDistribCmdsTest.java     |   18 +-
 .../apache/solr/cloud/HttpPartitionTest.java    |    7 +
 .../apache/solr/cloud/LeaderElectionTest.java   |    4 +-
 .../LeaderInitiatedRecoveryOnCommitTest.java    |    7 +
 .../solr/cloud/OnlyLeaderIndexesTest.java       |  435 ++++++
 ...rriddenZkACLAndCredentialsProvidersTest.java |    4 +-
 ...verseerCollectionConfigSetProcessorTest.java |    2 +-
 .../solr/cloud/RecoveryAfterSoftCommitTest.java |    7 +-
 .../cloud/SegmentTerminateEarlyTestState.java   |    4 +-
 .../org/apache/solr/cloud/ShardSplitTest.java   |    6 +
 .../cloud/SharedFSAutoReplicaFailoverTest.java  |   29 +
 .../apache/solr/cloud/SolrCLIZkUtilsTest.java   |  100 +-
 .../solr/cloud/TestCloudDeleteByQuery.java      |    2 +-
 .../apache/solr/cloud/TestCloudRecovery.java    |   22 +-
 .../apache/solr/cloud/TestCollectionAPI.java    |    6 +-
 .../apache/solr/cloud/TestConfigSetsAPI.java    |  401 ++++-
 .../apache/solr/cloud/TestRandomFlRTGCloud.java |    6 +-
 .../apache/solr/cloud/TestSegmentSorting.java   |    2 -
 .../TestStressCloudBlindAtomicUpdates.java      |    6 +-
 .../cloud/TestTolerantUpdateProcessorCloud.java |    2 +-
 .../test/org/apache/solr/cloud/ZkCLITest.java   |    4 +-
 .../org/apache/solr/cloud/ZkSolrClientTest.java |    2 +-
 .../cloud/hdfs/HdfsBasicDistributedZkTest.java  |    7 +-
 .../HdfsWriteToMultipleCollectionsTest.java     |    7 +-
 .../org/apache/solr/cloud/rule/RulesTest.java   |    2 +-
 .../solr/core/CachingDirectoryFactoryTest.java  |    2 +-
 .../core/ConfigureRecoveryStrategyTest.java     |  112 ++
 .../org/apache/solr/core/TestCodecSupport.java  |    2 +-
 .../org/apache/solr/core/TestCoreDiscovery.java |    4 +-
 .../apache/solr/core/TestDynamicLoading.java    |   13 +-
 .../apache/solr/core/TestJmxMonitoredMap.java   |    2 +-
 .../test/org/apache/solr/core/TestNRTOpen.java  |    2 +-
 .../apache/solr/core/TestSolrConfigHandler.java |   14 +-
 .../core/snapshots/TestSolrCloudSnapshots.java  |    2 +-
 .../core/snapshots/TestSolrCoreSnapshots.java   |    2 +-
 .../handler/AnalysisRequestHandlerTestBase.java |    2 +-
 .../FieldAnalysisRequestHandlerTest.java        |   14 +-
 .../org/apache/solr/handler/JsonLoaderTest.java |    5 +-
 .../solr/handler/PingRequestHandlerTest.java    |    2 +-
 .../solr/handler/TestReplicationHandler.java    |    9 +-
 .../apache/solr/handler/TestReqParamsAPI.java   |    3 +
 .../org/apache/solr/handler/TestSQLHandler.java |  293 +++-
 .../solr/handler/V2ApiIntegrationTest.java      |    4 +-
 .../handler/XmlUpdateRequestHandlerTest.java    |    9 +-
 .../admin/CoreMergeIndexesAdminHandlerTest.java |   10 +-
 .../handler/admin/LukeRequestHandlerTest.java   |    4 +-
 .../solr/handler/admin/MetricsHandlerTest.java  |   31 +-
 .../admin/PropertiesRequestHandlerTest.java     |   73 +
 .../DistributedFacetPivotSmallTest.java         |    5 +-
 .../DistributedTermsComponentTest.java          |    3 +-
 .../handler/component/TermsComponentTest.java   |   38 +
 .../handler/component/TestExpandComponent.java  |    2 -
 .../highlight/TestPostingsSolrHighlighter.java  |   13 +
 .../highlight/TestUnifiedSolrHighlighter.java   |   25 +-
 .../index/TestSlowCompositeReaderWrapper.java   |   54 +-
 .../index/UninvertDocValuesMergePolicyTest.java |  243 +++
 .../apache/solr/internal/csv/CSVParserTest.java |    2 +-
 .../solr/metrics/SolrCoreMetricManagerTest.java |   31 +-
 .../solr/metrics/SolrMetricManagerTest.java     |   34 +-
 .../metrics/SolrMetricsIntegrationTest.java     |   15 +-
 .../reporters/SolrGraphiteReporterTest.java     |    2 +-
 .../metrics/reporters/SolrJmxReporterTest.java  |   13 +-
 .../reporters/solr/SolrCloudReportersTest.java  |  163 ++
 .../reporters/solr/SolrShardReporterTest.java   |  117 ++
 .../response/TestGraphMLResponseWriter.java     |    2 +-
 .../solr/response/TestSolrQueryResponse.java    |    2 +-
 .../apache/solr/rest/TestManagedResource.java   |    4 +-
 .../org/apache/solr/rest/TestRestManager.java   |    2 +-
 .../solr/rest/schema/TestBulkSchemaAPI.java     |  103 +-
 .../solr/schema/AbstractCurrencyFieldTest.java  |    2 +-
 .../org/apache/solr/schema/DateFieldTest.java   |   16 +-
 .../org/apache/solr/schema/DocValuesTest.java   |    2 +-
 .../apache/solr/schema/NumericFieldsTest.java   |  108 +-
 .../org/apache/solr/schema/PolyFieldTest.java   |   46 +-
 .../solr/schema/PreAnalyzedFieldTest.java       |   10 +-
 .../apache/solr/schema/SortableBinaryField.java |    9 +-
 .../TestCloudManagedSchemaConcurrent.java       |    2 +-
 .../org/apache/solr/schema/TestPointFields.java |  666 +++++++-
 .../schema/TestSchemalessBufferedUpdates.java   |    2 +-
 .../TrieIntPrefixActsAsRangeQueryFieldType.java |    2 +-
 .../solr/search/AnalyticsTestQParserPlugin.java |   10 +-
 .../org/apache/solr/search/LargeFieldTest.java  |  133 ++
 .../solr/search/TestCollapseQParserPlugin.java  |  218 ++-
 .../test/org/apache/solr/search/TestDocSet.java |   20 +-
 .../solr/search/TestExtendedDismaxParser.java   | 1059 +++++++++----
 .../org/apache/solr/search/TestFiltering.java   |    2 +-
 .../solr/search/TestMultiWordSynonyms.java      |  100 ++
 .../search/TestRandomCollapseQParserPlugin.java |    5 -
 .../apache/solr/search/TestRankQueryPlugin.java |   14 +-
 .../apache/solr/search/TestSolr4Spatial.java    |   61 +-
 .../apache/solr/search/TestSolr4Spatial2.java   |    2 +-
 .../solr/search/TestSolrFieldCacheMBean.java    |    4 +-
 .../apache/solr/search/TestSolrQueryParser.java |  603 +++++++-
 .../search/facet/TestJsonFacetRefinement.java   |  139 +-
 .../solr/search/function/TestFunctionQuery.java |    1 -
 .../solr/search/mlt/CloudMLTQParserTest.java    |   14 +-
 .../solr/security/BasicAuthDistributedTest.java |  136 --
 .../solr/security/BasicAuthIntegrationTest.java |    4 +-
 .../security/TestPKIAuthenticationPlugin.java   |   44 +-
 .../TestRuleBasedAuthorizationPlugin.java       |   23 +
 .../ConjunctionSolrSpellCheckerTest.java        |    4 +-
 .../spelling/IndexBasedSpellCheckerTest.java    |    2 +-
 .../solr/store/blockcache/BlockCacheTest.java   |   36 +-
 .../store/blockcache/BlockDirectoryTest.java    |    2 +-
 .../solr/uninverting/TestDocTermOrds.java       |    4 +-
 .../apache/solr/uninverting/TestFieldCache.java |    4 +-
 .../TestFieldCacheSanityChecker.java            |  164 --
 .../solr/uninverting/TestLegacyFieldCache.java  |   35 +-
 .../solr/update/DirectUpdateHandlerTest.java    |  114 +-
 .../apache/solr/update/DocumentBuilderTest.java |  382 +----
 .../solr/update/SolrIndexMetricsTest.java       |   49 +-
 .../solr/update/TestInPlaceUpdatesDistrib.java  |  158 +-
 .../update/TestInPlaceUpdatesStandalone.java    |   33 +-
 .../org/apache/solr/update/UpdateLogTest.java   |   13 +-
 .../update/processor/AtomicUpdatesTest.java     |   28 +-
 .../CloneFieldUpdateProcessorFactoryTest.java   |   14 +-
 .../DefaultValueUpdateProcessorTest.java        |    7 +-
 .../FieldMutatingUpdateProcessorTest.java       |   14 +-
 .../ParsingFieldUpdateProcessorsTest.java       |   10 +-
 .../processor/TolerantUpdateProcessorTest.java  |   16 +-
 .../UUIDUpdateProcessorFallbackTest.java        |    3 +-
 .../processor/UpdateProcessorTestBase.java      |    7 +-
 .../apache/solr/util/SimplePostToolTest.java    |    2 +-
 .../apache/solr/util/SolrPluginUtilsTest.java   |   89 +-
 .../apache/solr/util/TestSolrCLIRunExample.java |    2 +-
 .../apache/solr/util/stats/MetricUtilsTest.java |  107 +-
 .../example-DIH/solr/db/conf/managed-schema     |   44 +-
 .../example-DIH/solr/db/conf/synonyms.txt       |    2 +-
 .../example-DIH/solr/mail/conf/managed-schema   |   45 +-
 .../example-DIH/solr/mail/conf/synonyms.txt     |    2 +-
 .../example-DIH/solr/rss/conf/managed-schema    |   53 +-
 .../example-DIH/solr/rss/conf/synonyms.txt      |    2 +-
 .../example-DIH/solr/solr/conf/managed-schema   |   44 +-
 .../example-DIH/solr/solr/conf/synonyms.txt     |    2 +-
 .../example-DIH/solr/tika/conf/managed-schema   |   23 +-
 solr/example/files/conf/managed-schema          |   30 +-
 solr/example/files/conf/synonyms.txt            |    2 +-
 solr/licenses/Saxon-HE-9.6.0-2.jar.sha1         |    1 -
 solr/licenses/Saxon-HE-LICENSE-MPL.txt          |  108 --
 solr/licenses/aopalliance-1.0.jar.sha1          |    1 -
 solr/licenses/aopalliance-LICENSE-PD.txt        |    1 -
 solr/licenses/argparse4j-0.4.3.jar.sha1         |    1 -
 solr/licenses/argparse4j-LICENSE-MIT.txt        |   23 -
 solr/licenses/avro-1.7.5.jar.sha1               |    1 -
 solr/licenses/avro-LICENSE-ASL.txt              |  308 ----
 solr/licenses/avro-NOTICE.txt                   |    9 -
 solr/licenses/bcpkix-jdk15on-1.47.jar.sha1      |    1 -
 .../bcpkix-jdk15on-LICENSE-BSD_LIKE.txt         |   15 -
 solr/licenses/bcpkix-jdk15on-NOTICE.txt         |    2 -
 solr/licenses/config-1.0.2.jar.sha1             |    1 -
 solr/licenses/config-LICENSE-ASL.txt            |  202 ---
 solr/licenses/config-NOTICE.txt                 |    0
 solr/licenses/guice-3.0.jar.sha1                |    1 -
 solr/licenses/guice-LICENSE-ASL.txt             |  202 ---
 solr/licenses/guice-NOTICE.txt                  |    0
 solr/licenses/guice-servlet-3.0.jar.sha1        |    1 -
 solr/licenses/guice-servlet-LICENSE-ASL.txt     |  202 ---
 solr/licenses/guice-servlet-NOTICE.txt          |    0
 .../hadoop-mapreduce-client-app-2.7.2.jar.sha1  |    1 -
 .../hadoop-mapreduce-client-app-LICENSE-ASL.txt |  244 ---
 .../hadoop-mapreduce-client-app-NOTICE.txt      |    2 -
 ...adoop-mapreduce-client-common-2.7.2.jar.sha1 |    1 -
 ...doop-mapreduce-client-common-LICENSE-ASL.txt |  244 ---
 .../hadoop-mapreduce-client-common-NOTICE.txt   |    2 -
 .../hadoop-mapreduce-client-core-2.7.2.jar.sha1 |    1 -
 ...hadoop-mapreduce-client-core-LICENSE-ASL.txt |  244 ---
 .../hadoop-mapreduce-client-core-NOTICE.txt     |    2 -
 .../hadoop-mapreduce-client-hs-2.7.2.jar.sha1   |    1 -
 .../hadoop-mapreduce-client-hs-LICENSE-ASL.txt  |  244 ---
 .../hadoop-mapreduce-client-hs-NOTICE.txt       |    2 -
 ...reduce-client-jobclient-2.7.2-tests.jar.sha1 |    1 -
 ...op-mapreduce-client-jobclient-2.7.2.jar.sha1 |    1 -
 ...p-mapreduce-client-jobclient-LICENSE-ASL.txt |  244 ---
 ...hadoop-mapreduce-client-jobclient-NOTICE.txt |    2 -
 ...doop-mapreduce-client-shuffle-2.7.2.jar.sha1 |    1 -
 ...oop-mapreduce-client-shuffle-LICENSE-ASL.txt |  244 ---
 .../hadoop-mapreduce-client-shuffle-NOTICE.txt  |    2 -
 solr/licenses/hadoop-yarn-api-2.7.2.jar.sha1    |    1 -
 solr/licenses/hadoop-yarn-api-LICENSE-ASL.txt   |  244 ---
 solr/licenses/hadoop-yarn-api-NOTICE.txt        |    2 -
 solr/licenses/hadoop-yarn-client-2.7.2.jar.sha1 |    1 -
 .../licenses/hadoop-yarn-client-LICENSE-ASL.txt |  244 ---
 solr/licenses/hadoop-yarn-client-NOTICE.txt     |    2 -
 solr/licenses/hadoop-yarn-common-2.7.2.jar.sha1 |    1 -
 .../licenses/hadoop-yarn-common-LICENSE-ASL.txt |  244 ---
 solr/licenses/hadoop-yarn-common-NOTICE.txt     |    2 -
 ...ver-applicationhistoryservice-2.7.2.jar.sha1 |    1 -
 ...er-applicationhistoryservice-LICENSE-ASL.txt |  244 ---
 ...-server-applicationhistoryservice-NOTICE.txt |    2 -
 .../hadoop-yarn-server-common-2.7.2.jar.sha1    |    1 -
 .../hadoop-yarn-server-common-LICENSE-ASL.txt   |  244 ---
 .../hadoop-yarn-server-common-NOTICE.txt        |    2 -
 ...adoop-yarn-server-nodemanager-2.7.2.jar.sha1 |    1 -
 ...doop-yarn-server-nodemanager-LICENSE-ASL.txt |  244 ---
 .../hadoop-yarn-server-nodemanager-NOTICE.txt   |    2 -
 ...p-yarn-server-resourcemanager-2.7.2.jar.sha1 |    1 -
 ...-yarn-server-resourcemanager-LICENSE-ASL.txt |  244 ---
 ...adoop-yarn-server-resourcemanager-NOTICE.txt |    2 -
 ...adoop-yarn-server-tests-2.7.2-tests.jar.sha1 |    1 -
 .../hadoop-yarn-server-tests-LICENSE-ASL.txt    |  244 ---
 .../hadoop-yarn-server-tests-NOTICE.txt         |    2 -
 .../hadoop-yarn-server-web-proxy-2.7.2.jar.sha1 |    1 -
 ...hadoop-yarn-server-web-proxy-LICENSE-ASL.txt |  244 ---
 .../hadoop-yarn-server-web-proxy-NOTICE.txt     |    2 -
 solr/licenses/jackson-jaxrs-1.9.13.jar.sha1     |    1 -
 solr/licenses/jackson-jaxrs-LICENSE-ASL.txt     |   13 -
 solr/licenses/jackson-jaxrs-NOTICE.txt          |    7 -
 solr/licenses/javax.inject-1.jar.sha1           |    1 -
 solr/licenses/javax.inject-LICENSE-ASL.txt      |  202 ---
 solr/licenses/javax.inject-NOTICE.txt           |    0
 solr/licenses/jaxb-impl-2.2.3-1.jar.sha1        |    1 -
 solr/licenses/jaxb-impl-LICENSE-CDDL.txt        |  135 --
 solr/licenses/jersey-bundle-1.9.jar.sha1        |    1 -
 solr/licenses/jersey-bundle-LICENSE-CDDL.txt    |   85 -
 solr/licenses/jersey-guice-1.9.jar.sha1         |    1 -
 solr/licenses/jersey-guice-LICENSE-CDDL.txt     |   85 -
 solr/licenses/jersey-json-1.9.jar.sha1          |    1 -
 solr/licenses/jersey-json-LICENSE-CDDL.txt      |   85 -
 .../kite-morphlines-avro-1.1.0.jar.sha1         |    1 -
 .../kite-morphlines-avro-LICENSE-ASL.txt        |  202 ---
 solr/licenses/kite-morphlines-avro-NOTICE.txt   |    8 -
 .../kite-morphlines-core-1.1.0-tests.jar.sha1   |    1 -
 .../kite-morphlines-core-1.1.0.jar.sha1         |    1 -
 .../kite-morphlines-core-LICENSE-ASL.txt        |  202 ---
 solr/licenses/kite-morphlines-core-NOTICE.txt   |    8 -
 ...orphlines-hadoop-sequencefile-1.1.0.jar.sha1 |    1 -
 ...rphlines-hadoop-sequencefile-LICENSE-ASL.txt |  202 ---
 ...te-morphlines-hadoop-sequencefile-NOTICE.txt |    8 -
 .../kite-morphlines-json-1.1.0.jar.sha1         |    1 -
 .../kite-morphlines-json-LICENSE-ASL.txt        |  202 ---
 solr/licenses/kite-morphlines-json-NOTICE.txt   |    8 -
 .../kite-morphlines-saxon-1.1.0.jar.sha1        |    1 -
 .../kite-morphlines-saxon-LICENSE-ASL.txt       |  202 ---
 solr/licenses/kite-morphlines-saxon-NOTICE.txt  |    8 -
 .../kite-morphlines-tika-core-1.1.0.jar.sha1    |    1 -
 .../kite-morphlines-tika-core-LICENSE-ASL.txt   |  202 ---
 .../kite-morphlines-tika-core-NOTICE.txt        |    8 -
 ...te-morphlines-tika-decompress-1.1.0.jar.sha1 |    1 -
 ...e-morphlines-tika-decompress-LICENSE-ASL.txt |  202 ---
 .../kite-morphlines-tika-decompress-NOTICE.txt  |    8 -
 .../kite-morphlines-twitter-1.1.0.jar.sha1      |    1 -
 .../kite-morphlines-twitter-LICENSE-ASL.txt     |  202 ---
 .../licenses/kite-morphlines-twitter-NOTICE.txt |    8 -
 solr/licenses/leveldb-0.7.jar.sha1              |    1 -
 solr/licenses/leveldb-LICENSE-BSD.txt           |   27 -
 solr/licenses/leveldb-NOTICE.txt                |    0
 solr/licenses/leveldb-api-0.7.jar.sha1          |    1 -
 solr/licenses/leveldb-api-LICENSE-BSD.txt       |   27 -
 solr/licenses/leveldb-api-NOTICE.txt            |    0
 solr/licenses/leveldbjni-1.8.jar.sha1           |    1 -
 solr/licenses/leveldbjni-LICENSE-BSD.txt        |   27 -
 solr/licenses/leveldbjni-NOTICE.txt             |    0
 .../metrics-healthchecks-3.1.2.jar.sha1         |    1 -
 .../metrics-healthchecks-LICENSE-ASL.txt        |  202 ---
 solr/licenses/metrics-healthchecks-NOTICE.txt   |   11 -
 solr/licenses/mrunit-1.0.0-hadoop2.jar.sha1     |    1 -
 solr/licenses/mrunit-LICENSE-ASL.txt            |  479 ------
 solr/licenses/mrunit-NOTICE.txt                 |    5 -
 solr/licenses/netty-3.2.4.Final.jar.sha1        |    1 -
 solr/licenses/netty-LICENSE-ASL.txt             |  202 ---
 solr/licenses/netty-NOTICE.txt                  |   98 --
 solr/licenses/paranamer-2.3.jar.sha1            |    1 -
 solr/licenses/paranamer-LICENSE-BSD.txt         |   28 -
 solr/licenses/paranamer-NOTICE.txt              |    0
 solr/licenses/rome-1.6.1.jar.sha1               |    1 -
 solr/licenses/snappy-java-1.0.5.jar.sha1        |    1 -
 solr/licenses/snappy-java-LICENSE-ASL.txt       |  201 ---
 solr/licenses/snappy-java-NOTICE.txt            |    0
 solr/scripts/README.txt                         |   13 -
 solr/scripts/abc                                |  159 --
 solr/scripts/abo                                |  158 --
 solr/scripts/backup                             |  109 --
 solr/scripts/backupcleaner                      |  134 --
 solr/scripts/commit                             |  109 --
 solr/scripts/optimize                           |  109 --
 solr/scripts/rsyncd-disable                     |   77 -
 solr/scripts/rsyncd-enable                      |   76 -
 solr/scripts/rsyncd-start                       |  147 --
 solr/scripts/rsyncd-stop                        |  105 --
 solr/scripts/scripts-util                       |  141 --
 solr/scripts/snapcleaner                        |  146 --
 solr/scripts/snapinstaller                      |  190 ---
 solr/scripts/snappuller                         |  261 ----
 solr/scripts/snappuller-disable                 |   77 -
 solr/scripts/snappuller-enable                  |   77 -
 solr/scripts/snapshooter                        |  128 --
 solr/server/etc/jetty.xml                       |   54 +-
 solr/server/scripts/cloud-scripts/zkcli.bat     |    2 +-
 solr/server/scripts/cloud-scripts/zkcli.sh      |    2 +-
 .../map-reduce/set-map-reduce-classpath.sh      |   52 -
 .../basic_configs/conf/managed-schema           |  120 +-
 .../configsets/basic_configs/conf/synonyms.txt  |    2 +-
 .../conf/managed-schema                         |  117 +-
 .../conf/synonyms.txt                           |    2 +-
 .../conf/managed-schema                         |  136 +-
 .../conf/solrconfig.xml                         |    2 +-
 .../conf/synonyms.txt                           |    2 +-
 solr/site/quickstart.mdtext                     |    2 -
 .../solrj/beans/DocumentObjectBinder.java       |    4 +-
 .../client/solrj/impl/BinaryRequestWriter.java  |    4 +-
 .../solr/client/solrj/impl/CloudSolrClient.java |   38 +-
 .../solrj/impl/ConcurrentUpdateSolrClient.java  |    2 +-
 .../apache/solr/client/solrj/io/ModelCache.java |   14 +-
 .../solr/client/solrj/io/SolrClientCache.java   |   26 +-
 .../org/apache/solr/client/solrj/io/Tuple.java  |   21 +-
 .../client/solrj/io/comp/FieldComparator.java   |    5 +
 .../solrj/io/comp/MultipleFieldComparator.java  |   22 +
 .../client/solrj/io/comp/StreamComparator.java  |    1 +
 .../client/solrj/io/eval/EqualsEvaluator.java   |    2 +-
 .../client/solrj/io/eval/FieldEvaluator.java    |   28 +-
 .../solrj/io/eval/NaturalLogEvaluator.java      |   60 +
 .../solrj/io/graph/GatherNodesStream.java       |    6 +-
 .../solrj/io/graph/ShortestPathStream.java      |    6 +-
 .../client/solrj/io/ops/GroupOperation.java     |    8 +-
 .../solrj/io/stream/CartesianProductStream.java |  301 ++++
 .../client/solrj/io/stream/CloudSolrStream.java |    9 +-
 .../client/solrj/io/stream/DaemonStream.java    |    9 +-
 .../client/solrj/io/stream/ExecutorStream.java  |    4 +-
 .../client/solrj/io/stream/FacetStream.java     |    8 +-
 .../io/stream/FeaturesSelectionStream.java      |    7 +-
 .../client/solrj/io/stream/FetchStream.java     |    9 +-
 .../solr/client/solrj/io/stream/JDBCStream.java |    8 +-
 .../client/solrj/io/stream/ModelStream.java     |    6 +-
 .../client/solrj/io/stream/ParallelStream.java  |   13 +-
 .../client/solrj/io/stream/RandomStream.java    |   14 +-
 .../solr/client/solrj/io/stream/RankStream.java |    8 +-
 .../solrj/io/stream/ScoreNodesStream.java       |    8 +-
 .../solrj/io/stream/SignificantTermsStream.java |   66 +-
 .../client/solrj/io/stream/StatsStream.java     |   14 +-
 .../client/solrj/io/stream/TextLogitStream.java |    9 +-
 .../client/solrj/io/stream/TopicStream.java     |   27 +-
 .../client/solrj/io/stream/TupleStream.java     |   94 ++
 .../client/solrj/io/stream/UpdateStream.java    |    4 +-
 .../solrj/io/stream/metrics/MeanMetric.java     |   35 +-
 .../client/solrj/io/stream/metrics/Metric.java  |    1 +
 .../solrj/request/CollectionAdminRequest.java   |    6 +
 .../request/JavaBinUpdateRequestCodec.java      |   34 +-
 .../client/solrj/request/UpdateRequest.java     |    9 +-
 .../client/solrj/response/QueryResponse.java    |    6 +-
 .../solrj/response/SpellCheckResponse.java      |    4 +-
 .../client/solrj/response/TermsResponse.java    |   37 +-
 .../solr/client/solrj/util/ClientUtils.java     |   32 +-
 .../apache/solr/common/SolrInputDocument.java   |   53 +-
 .../org/apache/solr/common/SolrInputField.java  |   28 +-
 .../solr/common/ToleratedUpdateError.java       |   10 +-
 .../apache/solr/common/cloud/DocCollection.java |   14 +-
 .../org/apache/solr/common/cloud/DocRouter.java |    4 +-
 .../solr/common/cloud/HashBasedRouter.java      |    8 +-
 .../solr/common/cloud/ZkMaintenanceUtils.java   |  147 +-
 .../apache/solr/common/cloud/ZkStateReader.java |    5 +-
 .../apache/solr/common/params/CommonParams.java |    8 +-
 .../solr/common/params/ConfigSetParams.java     |    1 +
 .../solr/common/params/HighlightParams.java     |    1 +
 .../common/params/ModifiableSolrParams.java     |   13 +
 .../apache/solr/common/params/ShardParams.java  |   24 +-
 .../apache/solr/common/params/TermsParams.java  |   24 +-
 .../apache/solr/common/util/JavaBinCodec.java   |   34 +-
 .../solr/common/util/JsonRecordReader.java      |    2 +-
 .../org/apache/solr/common/util/StrUtils.java   |    2 +-
 .../solrj/solr/collection1/conf/schema-sql.xml  |   59 +-
 .../solrj/solr/collection1/conf/schema.xml      |   59 +-
 .../solr/configsets/streaming/conf/schema.xml   |   57 +-
 .../solr/client/solrj/SolrExampleTests.java     |   92 +-
 .../solr/client/solrj/SolrExampleTestsBase.java |   14 +-
 .../solr/client/solrj/TestLBHttpSolrClient.java |    2 +-
 .../solrj/embedded/SolrExampleJettyTest.java    |    2 +-
 .../embedded/SolrExampleStreamingTest.java      |    4 +-
 .../client/solrj/impl/CloudSolrClientTest.java  |   73 +
 .../impl/ConcurrentUpdateSolrClientTest.java    |    6 +-
 .../solrj/io/graph/GraphExpressionTest.java     |   11 +-
 .../solr/client/solrj/io/sql/JdbcTest.java      |   19 +
 .../solrj/io/stream/StreamExpressionTest.java   |  366 ++++-
 .../stream/StreamExpressionToExpessionTest.java |    8 +-
 .../stream/eval/AbsoluteValueEvaluatorTest.java |    8 +-
 .../solrj/io/stream/eval/AddEvaluatorTest.java  |    8 +-
 .../solrj/io/stream/eval/AndEvaluatorTest.java  |    8 +-
 .../io/stream/eval/CompoundEvaluatorTest.java   |    8 +-
 .../io/stream/eval/DivideEvaluatorTest.java     |   10 +-
 .../io/stream/eval/EqualsEvaluatorTest.java     |    8 +-
 .../stream/eval/ExclusiveOrEvaluatorTest.java   |    8 +-
 .../io/stream/eval/FieldEvaluatorTest.java      |  114 ++
 .../eval/GreaterThanEqualToEvaluatorTest.java   |    8 +-
 .../stream/eval/GreaterThanEvaluatorTest.java   |    8 +-
 .../eval/LessThanEqualToEvaluatorTest.java      |    8 +-
 .../io/stream/eval/LessThanEvaluatorTest.java   |    8 +-
 .../io/stream/eval/MultiplyEvaluatorTest.java   |    8 +-
 .../io/stream/eval/NaturalLogEvaluatorTest.java |   98 ++
 .../solrj/io/stream/eval/NotEvaluatorTest.java  |   10 +-
 .../solrj/io/stream/eval/OrEvaluatorTest.java   |    8 +-
 .../io/stream/eval/RawValueEvaluatorTest.java   |    8 +-
 .../io/stream/eval/SubtractEvaluatorTest.java   |    8 +-
 .../solr/client/solrj/request/SchemaTest.java   |    2 +-
 .../client/solrj/request/TestCoreAdmin.java     |    4 +-
 .../solrj/request/TestUpdateRequestCodec.java   |   20 +-
 .../apache/solr/common/SolrDocumentTest.java    |    6 +-
 .../common/params/ModifiableSolrParamsTest.java |   26 +
 .../solr/common/params/SolrParamTest.java       |    4 +-
 .../solr/BaseDistributedSearchTestCase.java     |   37 +-
 .../java/org/apache/solr/SolrTestCaseJ4.java    |   90 +-
 .../cloud/AbstractFullDistribZkTestBase.java    |   14 +-
 .../apache/solr/cloud/MiniSolrCloudCluster.java |    6 +-
 solr/webapp/web/WEB-INF/web.xml                 |    2 +-
 solr/webapp/web/css/angular/cloud.css           |   24 +
 solr/webapp/web/css/angular/collections.css     |   17 +
 solr/webapp/web/js/angular/controllers/cloud.js |   19 +-
 .../web/js/angular/controllers/collections.js   |   14 +
 solr/webapp/web/js/angular/services.js          |    1 +
 solr/webapp/web/partials/cloud.html             |    1 +
 solr/webapp/web/partials/collections.html       |   18 +-
 1372 files changed, 24074 insertions(+), 73768 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/770265fb/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/770265fb/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/770265fb/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/770265fb/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
index 9c08406,2602221..bb2d821
--- a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
@@@ -16,9 -16,11 +16,11 @@@
   */
  package org.apache.solr.search.grouping.distributed.shardresultserializer;
  
 -import org.apache.lucene.search.Sort;
 +import org.apache.lucene.search.SortField;
  import org.apache.lucene.search.grouping.SearchGroup;
  import org.apache.lucene.util.BytesRef;
+ import org.apache.lucene.util.BytesRefBuilder;
+ import org.apache.lucene.util.CharsRefBuilder;
  import org.apache.solr.common.util.NamedList;
  import org.apache.solr.schema.SchemaField;
  import org.apache.solr.search.SolrIndexSearcher;
@@@ -57,7 -58,7 +59,13 @@@ public class SearchGroupsResultTransfor
          final SearchGroupsFieldCommandResult fieldCommandResult = fieldCommand.result();
          final Collection<SearchGroup<BytesRef>> searchGroups = fieldCommandResult.getSearchGroups();
          if (searchGroups != null) {
++<<<<<<< HEAD
 +          commandResult.add(TOP_GROUPS, serializeSearchGroup(searchGroups, fieldCommand.getGroupSortSpec()));
++||||||| merged common ancestors
++          commandResult.add(TOP_GROUPS, serializeSearchGroup(searchGroups, fieldCommand.getGroupSort()));
++=======
+           commandResult.add(TOP_GROUPS, serializeSearchGroup(searchGroups, fieldCommand));
++>>>>>>> master
          }
          final Integer groupedCount = fieldCommandResult.getGroupCount();
          if (groupedCount != null) {
@@@ -92,10 -87,21 +100,20 @@@
        if (rawSearchGroups != null) {
          for (Map.Entry<String, List<Comparable>> rawSearchGroup : rawSearchGroups){
            SearchGroup<BytesRef> searchGroup = new SearchGroup<>();
-           searchGroup.groupValue = rawSearchGroup.getKey() != null ? new BytesRef(rawSearchGroup.getKey()) : null;
+           SchemaField groupField = rawSearchGroup.getKey() != null? searcher.getSchema().getFieldOrNull(command.getKey()) : null;
+           searchGroup.groupValue = null;
+           if (rawSearchGroup.getKey() != null) {
+             if (groupField != null) {
+               BytesRefBuilder builder = new BytesRefBuilder();
+               groupField.getType().readableToIndexed(rawSearchGroup.getKey(), builder);
+               searchGroup.groupValue = builder.get();
+             } else {
+               searchGroup.groupValue = new BytesRef(rawSearchGroup.getKey());
+             }
+           }
            searchGroup.sortValues = rawSearchGroup.getValue().toArray(new Comparable[rawSearchGroup.getValue().size()]);
            for (int i = 0; i < searchGroup.sortValues.length; i++) {
 -            SchemaField field = groupSort.getSort()[i].getField() != null ? searcher.getSchema().getFieldOrNull(groupSort.getSort()[i].getField()) : null;
 -            searchGroup.sortValues[i] = ShardResultTransformerUtils.unmarshalSortValue(searchGroup.sortValues[i], field);
 +            searchGroup.sortValues[i] = ShardResultTransformerUtils.unmarshalSortValue(searchGroup.sortValues[i], groupSchemaFields.get(i));
            }
            searchGroups.add(searchGroup);
          }
@@@ -107,20 -113,19 +125,38 @@@
      return result;
    }
  
++<<<<<<< HEAD
 +
 +  private NamedList serializeSearchGroup(Collection<SearchGroup<BytesRef>> data, SortSpec groupSortSpec) {
++||||||| merged common ancestors
++  private NamedList serializeSearchGroup(Collection<SearchGroup<BytesRef>> data, Sort groupSort) {
++=======
+   private NamedList serializeSearchGroup(Collection<SearchGroup<BytesRef>> data, SearchGroupsFieldCommand command) {
++>>>>>>> master
      final NamedList<Object[]> result = new NamedList<>(data.size());
 +    final List<SchemaField> groupSchemaFields = groupSortSpec.getSchemaFields();
 +    final SortField[] groupSortFields = groupSortSpec.getSort().getSort();
 +
 +    assert (groupSchemaFields.size() == groupSortFields.length);
  
      for (SearchGroup<BytesRef> searchGroup : data) {
        Object[] convertedSortValues = new Object[searchGroup.sortValues.length];
        for (int i = 0; i < searchGroup.sortValues.length; i++) {
++<<<<<<< HEAD
 +        convertedSortValues[i] = ShardResultTransformerUtils.marshalSortValue(searchGroup.sortValues[i], groupSchemaFields.get(i));
++||||||| merged common ancestors
++        Object sortValue = searchGroup.sortValues[i];
++        SchemaField field = groupSort.getSort()[i].getField() != null ? searcher.getSchema().getFieldOrNull(groupSort.getSort()[i].getField()) : null;
++        convertedSortValues[i] = ShardResultTransformerUtils.marshalSortValue(sortValue, field);
++=======
+         Object sortValue = searchGroup.sortValues[i];
+         SchemaField field = command.getGroupSort().getSort()[i].getField() != null ?
+             searcher.getSchema().getFieldOrNull(command.getGroupSort().getSort()[i].getField()) : null;
+         convertedSortValues[i] = ShardResultTransformerUtils.marshalSortValue(sortValue, field);
++>>>>>>> master
        }
-       String groupValue = searchGroup.groupValue != null ? searchGroup.groupValue.utf8ToString() : null;
+       SchemaField field = searcher.getSchema().getFieldOrNull(command.getKey());
+       String groupValue = searchGroup.groupValue != null ? field.getType().indexedToReadable(searchGroup.groupValue, new CharsRefBuilder()).toString() : null;
        result.add(groupValue, convertedSortValues);
      }
  


[05/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-common-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-common-NOTICE.txt b/solr/licenses/hadoop-yarn-server-common-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-yarn-server-common-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-nodemanager-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-nodemanager-2.7.2.jar.sha1 b/solr/licenses/hadoop-yarn-server-nodemanager-2.7.2.jar.sha1
deleted file mode 100644
index 06b67d5..0000000
--- a/solr/licenses/hadoop-yarn-server-nodemanager-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-521e0fb188ef3c6b239eb6dcca69e39cc788690b

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-nodemanager-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-nodemanager-LICENSE-ASL.txt b/solr/licenses/hadoop-yarn-server-nodemanager-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-yarn-server-nodemanager-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-nodemanager-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-nodemanager-NOTICE.txt b/solr/licenses/hadoop-yarn-server-nodemanager-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-yarn-server-nodemanager-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-resourcemanager-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-resourcemanager-2.7.2.jar.sha1 b/solr/licenses/hadoop-yarn-server-resourcemanager-2.7.2.jar.sha1
deleted file mode 100644
index 9960f09..0000000
--- a/solr/licenses/hadoop-yarn-server-resourcemanager-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-6444a32767712596c11767943ba10070a82b34da

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-resourcemanager-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-resourcemanager-LICENSE-ASL.txt b/solr/licenses/hadoop-yarn-server-resourcemanager-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-yarn-server-resourcemanager-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-resourcemanager-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-resourcemanager-NOTICE.txt b/solr/licenses/hadoop-yarn-server-resourcemanager-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-yarn-server-resourcemanager-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-tests-2.7.2-tests.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-tests-2.7.2-tests.jar.sha1 b/solr/licenses/hadoop-yarn-server-tests-2.7.2-tests.jar.sha1
deleted file mode 100644
index 682b4bb..0000000
--- a/solr/licenses/hadoop-yarn-server-tests-2.7.2-tests.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-60de24530087690d0e15444f2c2538bcd384c5cf

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-tests-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-tests-LICENSE-ASL.txt b/solr/licenses/hadoop-yarn-server-tests-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-yarn-server-tests-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-tests-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-tests-NOTICE.txt b/solr/licenses/hadoop-yarn-server-tests-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-yarn-server-tests-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-web-proxy-2.7.2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-web-proxy-2.7.2.jar.sha1 b/solr/licenses/hadoop-yarn-server-web-proxy-2.7.2.jar.sha1
deleted file mode 100644
index 488685b..0000000
--- a/solr/licenses/hadoop-yarn-server-web-proxy-2.7.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-430c3b53dcf1901f37a92d703bb4ce343298561b

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-web-proxy-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-web-proxy-LICENSE-ASL.txt b/solr/licenses/hadoop-yarn-server-web-proxy-LICENSE-ASL.txt
deleted file mode 100644
index 9a8e847..0000000
--- a/solr/licenses/hadoop-yarn-server-web-proxy-LICENSE-ASL.txt
+++ /dev/null
@@ -1,244 +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.
-
-
-APACHE HADOOP SUBCOMPONENTS:
-
-The Apache Hadoop project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for the these
-subcomponents is subject to the terms and conditions of the following
-licenses. 
-
-For the org.apache.hadoop.util.bloom.* classes:
-
-/**
- *
- * Copyright (c) 2005, European Commission project OneLab under contract
- * 034819 (http://www.one-lab.org)
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or 
- * without modification, are permitted provided that the following 
- * conditions are met:
- *  - Redistributions of source code must retain the above copyright 
- *    notice, this list of conditions and the following disclaimer.
- *  - Redistributions in binary form must reproduce the above copyright 
- *    notice, this list of conditions and the following disclaimer in 
- *    the documentation and/or other materials provided with the distribution.
- *  - Neither the name of the University Catholique de Louvain - UCL
- *    nor the names of its contributors may be used to endorse or 
- *    promote products derived from this software without specific prior 
- *    written permission.
- *    
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
- * POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/hadoop-yarn-server-web-proxy-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/hadoop-yarn-server-web-proxy-NOTICE.txt b/solr/licenses/hadoop-yarn-server-web-proxy-NOTICE.txt
deleted file mode 100644
index c56a5e4..0000000
--- a/solr/licenses/hadoop-yarn-server-web-proxy-NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jackson-jaxrs-1.9.13.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/jackson-jaxrs-1.9.13.jar.sha1 b/solr/licenses/jackson-jaxrs-1.9.13.jar.sha1
deleted file mode 100644
index 3bffb8f..0000000
--- a/solr/licenses/jackson-jaxrs-1.9.13.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-534d72d2b9d6199dd531dfb27083dd4844082bba

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jackson-jaxrs-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/jackson-jaxrs-LICENSE-ASL.txt b/solr/licenses/jackson-jaxrs-LICENSE-ASL.txt
deleted file mode 100644
index 49ac3a7..0000000
--- a/solr/licenses/jackson-jaxrs-LICENSE-ASL.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-This copy of Jackson JSON processor is licensed under the
-Apache (Software) License, version 2.0 ("the License").
-See the License for details about distribution rights, and the
-specific rights regarding derivate works.
-
-You may obtain a copy of the License at:
-
-http://www.apache.org/licenses/
-
-A copy is also included with both the the downloadable source code package
-and jar that contains class bytecodes, as file "ASL 2.0". In both cases,
-that file should be located next to this file: in source distribution
-the location should be "release-notes/asl"; and in jar "META-INF/"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jackson-jaxrs-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/jackson-jaxrs-NOTICE.txt b/solr/licenses/jackson-jaxrs-NOTICE.txt
deleted file mode 100644
index e9ebcc6..0000000
--- a/solr/licenses/jackson-jaxrs-NOTICE.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This product currently only contains code developed by authors
-of specific components, as identified by the source code files;
-if such notes are missing files have been created by
-Tatu Saloranta.
-
-For additional credits (generally to people who reported problems)
-see CREDITS file.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/javax.inject-1.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/javax.inject-1.jar.sha1 b/solr/licenses/javax.inject-1.jar.sha1
deleted file mode 100644
index 7ef3c70..0000000
--- a/solr/licenses/javax.inject-1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-6975da39a7040257bd51d21a231b76c915872d38

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/javax.inject-LICENSE-ASL.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/javax.inject-LICENSE-ASL.txt b/solr/licenses/javax.inject-LICENSE-ASL.txt
deleted file mode 100644
index d645695..0000000
--- a/solr/licenses/javax.inject-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.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/javax.inject-NOTICE.txt
----------------------------------------------------------------------
diff --git a/solr/licenses/javax.inject-NOTICE.txt b/solr/licenses/javax.inject-NOTICE.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/jaxb-impl-2.2.3-1.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/jaxb-impl-2.2.3-1.jar.sha1 b/solr/licenses/jaxb-impl-2.2.3-1.jar.sha1
deleted file mode 100644
index 79fe55d..0000000
--- a/solr/licenses/jaxb-impl-2.2.3-1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-56baae106392040a45a06d4a41099173425da1e6


[34/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-10304: Refactor new SolrDocumentFetcher out of SolrIndexSearcher

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f1aef3d1/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java b/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
index fc50680..e41484f 100644
--- a/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
+++ b/solr/core/src/test/org/apache/solr/util/SolrPluginUtilsTest.java
@@ -16,38 +16,29 @@
  */
 package org.apache.solr.util;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.DisjunctionMaxQuery;
+import org.apache.lucene.search.PhraseQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.TermQuery;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.search.QParser;
-import org.apache.solr.search.QueryCommand;
-import org.apache.solr.search.QueryResult;
 import org.apache.solr.util.SolrPluginUtils.DisjunctionMaxQueryParser;
-import org.apache.solr.search.SolrIndexSearcher;
-import org.apache.solr.search.DocList;
-import org.apache.solr.common.SolrDocument;
-import org.apache.solr.common.SolrDocumentList;
-import org.apache.lucene.index.Term;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.PhraseQuery;
-import org.apache.lucene.search.DisjunctionMaxQuery;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.MatchAllDocsQuery;
-import org.apache.lucene.search.BooleanClause.Occur;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.HashSet;
-
 /**
  * Tests that the functions in SolrPluginUtils work as advertised.
  */
@@ -59,52 +50,6 @@ public class SolrPluginUtilsTest extends SolrTestCaseJ4 {
   }
 
   @Test
-  public void testDocListConversion() throws Exception {
-    assertU("", adoc("id", "3234", "val_i", "1", 
-                     "val_dynamic", "quick red fox"));
-    assertU("", adoc("id", "3235", "val_i", "1", 
-                     "val_dynamic", "quick green fox"));
-    assertU("", adoc("id", "3236", "val_i", "1", 
-                     "val_dynamic", "quick brown fox"));
-    assertU("", commit());
-
-    RefCounted<SolrIndexSearcher> holder = h.getCore().getSearcher();
-    try {
-      SolrIndexSearcher srchr = holder.get();
-      QueryResult qr = new QueryResult();
-      QueryCommand cmd = new QueryCommand();
-      cmd.setQuery(new MatchAllDocsQuery());
-      cmd.setLen(10);
-      qr = srchr.search(qr, cmd);
-      
-      DocList docs = qr.getDocList();
-      assertEquals("wrong docs size", 3, docs.size());
-      Set<String> fields = new HashSet<>();
-      fields.add("val_dynamic");
-      fields.add("dynamic_val");
-      fields.add("range_facet_l"); // copied from id
-      
-      SolrDocumentList list = SolrPluginUtils.docListToSolrDocumentList(docs, srchr, fields, null);
-      assertEquals("wrong list Size", docs.size(), list.size());
-      for (SolrDocument document : list) {
-        
-        assertTrue("unexpected field", ! document.containsKey("val_i"));
-        assertTrue("unexpected id field", ! document.containsKey("id"));
-
-        assertTrue("original field", document.containsKey("val_dynamic"));
-        assertTrue("dyn copy field", document.containsKey("dynamic_val"));
-        assertTrue("copy field", document.containsKey("range_facet_l"));
-        
-        assertNotNull("original field null", document.get("val_dynamic"));
-        assertNotNull("dyn copy field null", document.get("dynamic_val"));
-        assertNotNull("copy field null", document.get("range_facet_l"));
-      }
-    } finally {
-      if (null != holder) holder.decref();
-    }
-  }
-
-  @Test
   public void testPartialEscape() {
 
     assertEquals("",pe(""));


[09/73] [abbrv] lucene-solr:jira/solr-6203: SOLR-9221: Remove Solr contribs: map-reduce, morphlines-core and morphlines-cell

Posted by cp...@apache.org.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-documents/testXML2.xml
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-documents/testXML2.xml b/solr/contrib/morphlines-core/src/test-files/test-documents/testXML2.xml
deleted file mode 100644
index 6611ee1..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-documents/testXML2.xml
+++ /dev/null
@@ -1,22 +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.
--->
-<doc>
-    <PID>123</PID>
-    <Title_s>Hello World</Title_s>
-    <Description_t>Solr rocks</Description_t>
-</doc>        

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-morphlines/loadSolrBasic.conf
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-morphlines/loadSolrBasic.conf b/solr/contrib/morphlines-core/src/test-files/test-morphlines/loadSolrBasic.conf
deleted file mode 100644
index 1c02a9a..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-morphlines/loadSolrBasic.conf
+++ /dev/null
@@ -1,68 +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.
-
-
-# morphline.conf example file
-# this is a comment
-// this is yet another comment
-
-# for details see https://github.com/typesafehub/config#optional-system-or-env-variable-overrides
-SOLR_COLLECTION : "collection1"
-SOLR_COLLECTION : ${?ENV_SOLR_COLLECTION}
-
-ZK_HOST : "127.0.0.1:2181/solr"
-ZK_HOST : ${?ENV_ZK_HOST}
-
-SOLR_HOME_DIR : "example/solr/collection1"
-SOLR_HOME_DIR : ${?ENV_SOLR_HOME_DIR}
-
-SOLR_LOCATOR : {
-  collection : ${SOLR_COLLECTION}
-  zkHost : ${ZK_HOST}
-  solrHomeDir : ${SOLR_HOME_DIR}
-  # batchSize : 1000
-}
-SOLR_LOCATOR : ${?ENV_SOLR_LOCATOR}
-
-morphlines : [
-  {
-    id : morphline1
-    
-    # using globs (foo.bar.* or foo.bar.**) will not work in Java9 due to classpath scanning limitations
-    # so we enumarate every command (builder) we know this config uses below. (see SOLR-8876)
-    importCommands : ["org.kitesdk.morphline.stdlib.LogDebugBuilder",
-                      "org.apache.solr.morphlines.solr.SanitizeUnknownSolrFieldsBuilder",
-		      "org.apache.solr.morphlines.solr.LoadSolrBuilder"]
-    
-    commands : [                    
-      { 
-        sanitizeUnknownSolrFields {
-          solrLocator : ${SOLR_LOCATOR}
-        }
-      } 
-      
-      { 
-        loadSolr {
-          solrLocator : ${SOLR_LOCATOR}
-          boosts : {
-            id : 1.0
-          }
-        }
-      }
-       
-      { logDebug { format : "output record: {}", args : ["@{}"] } }    
-    ]
-  }
-]

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellDocumentTypes.conf
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellDocumentTypes.conf b/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellDocumentTypes.conf
deleted file mode 100644
index 4d38256..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellDocumentTypes.conf
+++ /dev/null
@@ -1,304 +0,0 @@
-# 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.
-
-# Application configuration file in HOCON format (Human-Optimized Config Object Notation). 
-# HOCON syntax is defined at http://github.com/typesafehub/config/blob/master/HOCON.md
-# and also used by Akka (http://www.akka.io) and Play (http://www.playframework.org/).
-# For more examples see http://doc.akka.io/docs/akka/2.1.2/general/configuration.html
-
-# morphline.conf example file
-# this is a comment
-// this is yet another comment
-
-morphlines : [
-  {
-    id : morphline1
-
-    # using globs (foo.bar.* or foo.bar.**) will not work in Java9 due to classpath scanning limitations
-    # so we enumarate every command (builder) we know this config uses below. (see SOLR-8876)
-    importCommands : ["org.kitesdk.morphline.stdlib.LogDebugBuilder",
-                      "org.kitesdk.morphline.stdlib.SetValuesBuilder",
-                      "org.kitesdk.morphline.stdlib.CallParentPipeBuilder",
-                      "org.kitesdk.morphline.stdlib.GenerateUUIDBuilder",
-                      "org.kitesdk.morphline.stdlib.JavaBuilder",
-                      "org.kitesdk.morphline.stdlib.TryRulesBuilder",
-                      "org.kitesdk.morphline.stdlib.SeparateAttachmentsBuilder",
-                      "org.kitesdk.morphline.stdio.ReadCSVBuilder",
-                      "org.kitesdk.morphline.avro.ReadAvroContainerBuilder",
-                      "org.kitesdk.morphline.avro.ExtractAvroPathsBuilder",
-                      "org.kitesdk.morphline.avro.ExtractAvroTreeBuilder",
-                      "org.kitesdk.morphline.tika.DetectMimeTypeBuilder",
-                      "org.kitesdk.morphline.tika.decompress.DecompressBuilder",
-                      "org.kitesdk.morphline.tika.decompress.UnpackBuilder",
-                      "org.kitesdk.morphline.twitter.ReadJsonTestTweetsBuilder",
-                      "org.apache.solr.morphlines.cell.SolrCellBuilder",
-		      "org.apache.solr.morphlines.solr.SanitizeUnknownSolrFieldsBuilder",
-                      "org.apache.solr.morphlines.solr.GenerateSolrSequenceKeyBuilder",
-		      "org.apache.solr.morphlines.solr.LoadSolrBuilder"]
-    
-    commands : [
-      { separateAttachments {} }
-
-      # java command that doesn't do anything except for test compilation      
-      { 
-        java { 
-          imports : "import java.util.*;"
-          code: """
-            List tags = record.get("javaWithImports"); 
-            return child.process(record);
-                """ 
-        } 
-      }
-      
-      # java command that doesn't do anything except for test compilation      
-      { 
-        java { 
-          code: """
-            List tags = record.get("javaWithoutImports"); 
-            return child.process(record);
-                """ 
-        } 
-      }
-            
-      { 
-        # used for auto-detection if MIME type isn't explicitly supplied
-        detectMimeType { 
-          includeDefaultMimeTypes : true
-          mimeTypesFiles : ["RESOURCES_DIR/custom-mimetypes.xml"]
-        }
-      }
-      
-      {
-        tryRules {
-          throwExceptionIfAllRulesFailed : true
-          rules : [      
-            # next top-level rule:      
-            {
-              commands : [ 
-                { logDebug { format : "hello unpack" } }    
-                { unpack {} }     
-                { generateUUID {} }
-                { callParentPipe {} } 
-              ]
-            }      
-      
-            {
-              commands : [ 
-                { logDebug { format : "hello decompress" } }    
-                { decompress {} }     
-                { callParentPipe {} } 
-              ]
-            }      
-
-            {
-              commands : [ 
-                { 
-                  readCSV { 
-                    supportedMimeTypes : [text/csv]
-                    charset : UTF-8
-                    ignoreFirstLine : false 
-                    columns : [ user_screen_name, text ]
-                  } 
-                }
-                    
-                { 
-                  generateUUID { 
-                    field : id 
-                    preserveExisting : false
-                  } 
-                }
-                     
-                {
-                  sanitizeUnknownSolrFields {
-                    solrLocator : ${SOLR_LOCATOR}
-                  }
-                }  
-              ]
-            }      
-
-            { 
-              commands : [
-                { 
-                  readAvroContainer {
-                    supportedMimeTypes : [avro/binary]
-                    # readerSchemaString : "<json can go here>" # optional, avro json schema blurb for getSchema()
-                    # readerSchemaFile : /path/to/syslog.avsc
-                  }
-                }
-                
-                { extractAvroTree {} }
-                
-                {
-                  setValues {
-                    id : "@{/id}"
-                    user_screen_name : "@{/user_screen_name}"
-                    text : "@{/text}"
-                  }
-                }
-                
-                {
-                  sanitizeUnknownSolrFields {
-                    solrLocator : ${SOLR_LOCATOR}
-                  }
-                }  
-              ]
-            } 
-      
-            { 
-              commands : [
-                { 
-                  readJsonTestTweets {
-                    supportedMimeTypes : ["mytwittertest/json+delimited+length"]
-                  }
-                }
-                
-                {
-                  sanitizeUnknownSolrFields {
-                    solrLocator : ${SOLR_LOCATOR}
-                  }
-                }  
-              ]
-            } 
-      
-            # next top-level rule:      
-            {
-              commands : [ 
-                { logDebug { format : "hello solrcell" } }    
-                {
-                  # wrap SolrCell around an HTML Tika parser
-                  solrCell {
-                    solrLocator : ${SOLR_LOCATOR}
-                    # captureAttr : true # default is false
-                    capture : [
-                    
-                      # twitter feed schema
-                      user_friends_count
-                      user_location
-                      user_description
-                      user_statuses_count
-                      user_followers_count
-                      user_name
-                      user_screen_name
-                      created_at
-                      text
-                      retweet_count
-                      retweeted
-                      in_reply_to_user_id
-                      source
-                      in_reply_to_status_id
-                      media_url_https
-                      expanded_url
-                      
-                      # file metadata   
-                      file_download_url
-                      file_upload_url
-                      file_scheme
-                      file_host
-                      file_port
-                      file_path
-                      file_name
-                      file_length
-                      file_last_modified
-                      file_owner
-                      file_group
-                      file_permissions_user
-                      file_permissions_group
-                      file_permissions_other
-                      file_permissions_stickybit      
-                    ]
-
-                    fmap : { content : text, content-type : content_type } # rename "content" field to "text" fields
-                    dateFormats : [ "yyyy-MM-dd'T'HH:mm:ss", "yyyy-MM-dd"] # various java.text.SimpleDateFormat
-                    # xpath : "/xhtml:html/xhtml:body/xhtml:div/descendant:node()"
-                    uprefix : "ignored_"
-                    lowernames : true
-                    # solrContentHandlerFactory : org.apache.solr.tika.TrimSolrContentHandlerFactory
-                    
-                    # Tika parsers to be registered. If multiple parsers support the same MIME type, 
-                    # the parser is chosen that is closest to the bottom in this list:
-                    parsers : [                    
-                      { parser : org.apache.tika.parser.asm.ClassParser }
-                      # { parser : org.apache.tika.parser.AutoDetectParser }                      
-                      # { parser : org.gagravarr.tika.OggParser, additionalSupportedMimeTypes : [audio/ogg] }
-                      { parser : org.gagravarr.tika.FlacParser }
-                      { parser : org.apache.tika.parser.audio.AudioParser }                      
-                      { parser : org.apache.tika.parser.audio.MidiParser }
-                      { parser : org.apache.tika.parser.crypto.Pkcs7Parser }
-                      { parser : org.apache.tika.parser.dwg.DWGParser }
-                      { parser : org.apache.tika.parser.epub.EpubParser }
-                      { parser : org.apache.tika.parser.executable.ExecutableParser }
-                      { parser : org.apache.tika.parser.feed.FeedParser }
-                      { parser : org.apache.tika.parser.font.AdobeFontMetricParser }
-                      { parser : org.apache.tika.parser.font.TrueTypeParser }
-                      { parser : org.apache.tika.parser.xml.XMLParser }                      
-                      { parser : org.apache.tika.parser.html.HtmlParser }
-                      { parser : org.apache.tika.parser.image.ImageParser }
-                      { parser : org.apache.tika.parser.image.PSDParser }
-                      { parser : org.apache.tika.parser.image.TiffParser }
-                      { parser : org.apache.tika.parser.iptc.IptcAnpaParser }
-                      { parser : org.apache.tika.parser.iwork.IWorkPackageParser }
-                      { parser : org.apache.tika.parser.jpeg.JpegParser }
-                      { parser : org.apache.tika.parser.mail.RFC822Parser }
-                      { parser : org.apache.tika.parser.mbox.MboxParser, additionalSupportedMimeTypes : [message/x-emlx] }
-                      { parser : org.apache.tika.parser.microsoft.OfficeParser }
-                      { parser : org.apache.tika.parser.microsoft.TNEFParser }
-                      { parser : org.apache.tika.parser.microsoft.ooxml.OOXMLParser }
-                      { parser : org.apache.tika.parser.mp3.Mp3Parser }
-                      { parser : org.apache.tika.parser.mp4.MP4Parser }
-                      { parser : org.apache.tika.parser.hdf.HDFParser }
-                      { parser : org.apache.tika.parser.netcdf.NetCDFParser }
-                      { parser : org.apache.tika.parser.odf.OpenDocumentParser }
-                      { parser : org.apache.tika.parser.pdf.PDFParser }
-                      { parser : org.apache.tika.parser.pkg.CompressorParser }
-                      { parser : org.apache.tika.parser.pkg.PackageParser }
-                      { parser : org.apache.tika.parser.rtf.RTFParser }
-                      { parser : org.apache.tika.parser.txt.TXTParser }
-                      { parser : org.apache.tika.parser.video.FLVParser }
-                      { parser : org.apache.tika.parser.xml.DcXMLParser }
-                      { parser : org.apache.tika.parser.xml.FictionBookParser }
-                      { parser : org.apache.tika.parser.chm.ChmParser }                          
-                      #{ parser : org.apache.tika.parser.AutoDetectParser }                          
-                    ] 
-                  }
-                }
-                
-                { generateUUID { field : ignored_base_id } }
-      
-                { 
-                  generateSolrSequenceKey {
-                    baseIdField: ignored_base_id
-                    solrLocator : ${SOLR_LOCATOR} 
-                  } 
-                }
-                
-              ]
-            }      
-          ]
-        }
-      }
-
-      { 
-        loadSolr {
-          solrLocator : ${SOLR_LOCATOR}
-        }
-      }
-      
-      { 
-        logDebug {
-          format : "My output record: {}"
-          args : ["@{}"]
-        }
-      } 
-      
-    ]
-  }
-]

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellJPGCompressed.conf
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellJPGCompressed.conf b/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellJPGCompressed.conf
deleted file mode 100644
index 85cb2a7..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellJPGCompressed.conf
+++ /dev/null
@@ -1,150 +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.
-
-# Application configuration file in HOCON format (Human-Optimized Config Object Notation). 
-# HOCON syntax is defined at http://github.com/typesafehub/config/blob/master/HOCON.md
-# and also used by Akka (http://www.akka.io) and Play (http://www.playframework.org/).
-# For more examples see http://doc.akka.io/docs/akka/2.1.2/general/configuration.html
-
-# morphline.conf example file
-# this is a comment
-// this is yet another comment
-
-morphlines : [
-  {
-    id : morphline1
-
-    # using globs (foo.bar.* or foo.bar.**) will not work in Java9 due to classpath scanning limitations
-    # so we enumarate every command (builder) we know this config uses below. (see SOLR-8876)
-    importCommands : ["org.kitesdk.morphline.stdlib.LogDebugBuilder",
-                      "org.kitesdk.morphline.stdlib.CallParentPipeBuilder",
-                      "org.kitesdk.morphline.stdlib.GenerateUUIDBuilder",
-                      "org.kitesdk.morphline.stdlib.JavaBuilder",
-                      "org.kitesdk.morphline.stdlib.TryRulesBuilder",
-                      "org.kitesdk.morphline.stdlib.SeparateAttachmentsBuilder",
-                      "org.kitesdk.morphline.tika.DetectMimeTypeBuilder",
-                      "org.kitesdk.morphline.tika.decompress.DecompressBuilder",
-                      "org.kitesdk.morphline.tika.decompress.UnpackBuilder",
-                      "org.apache.solr.morphlines.cell.SolrCellBuilder",
-                      "org.apache.solr.morphlines.solr.GenerateSolrSequenceKeyBuilder",
-		      "org.apache.solr.morphlines.solr.LoadSolrBuilder"]
-
-    
-    commands : [
-      { separateAttachments {} }
-      
-      # java command that doesn't do anything except for test compilation      
-      { 
-        java { 
-          imports : "import java.util.*;"
-          code: """
-            List tags = record.get("javaWithImports"); 
-            return child.process(record);
-                """ 
-        } 
-      }
-      
-      # java command that doesn't do anything except for test compilation      
-      { 
-        java { 
-          code: """
-            List tags = record.get("javaWithoutImports"); 
-            return child.process(record);
-                """ 
-        } 
-      }
-      
-      { 
-        # auto-detect MIME type if it isn't explicitly supplied
-        detectMimeType {
-          includeDefaultMimeTypes : true
-        }
-      }
-      
-      {
-        tryRules {
-          throwExceptionIfAllRulesFailed : true
-          rules : [      
-            # next top-level rule:      
-            {
-              commands : [ 
-                { logDebug { format : "hello unpack" } }    
-                { unpack {} }     
-                { callParentPipe {} } 
-              ]
-            }      
-      
-            {
-              commands : [ 
-                { logDebug { format : "hello decompress" } }    
-                { decompress {} }     
-                { callParentPipe {} } 
-              ]
-            }      
-      
-            # next top-level rule:      
-            {
-              commands : [ 
-                { logDebug { format : "hello solrcell" } }    
-                {
-                  # wrap SolrCell around a JPG Tika parser
-                  solrCell {
-                    solrLocator : ${SOLR_LOCATOR}
-                    captureAttr : true # default is false
-                    capture : [content, a, h1, h2] # extract some fields
-                    fmap : { exif_image_height : text, a : anchor, h1 : heading1 } # rename some fields
-                    dateFormats : [ "yyyy-MM-dd'T'HH:mm:ss", "yyyy-MM-dd"] # various java.text.SimpleDateFormat
-                    xpath : "/xhtml:html/xhtml:body/xhtml:div/descendant:node()"
-                    uprefix : "ignored_"
-                    lowernames : true
-                    solrContentHandlerFactory : org.apache.solr.morphlines.cell.TrimSolrContentHandlerFactory
-                    parsers : [ # nested Tika parsers
-                      { parser : org.apache.tika.parser.jpeg.JpegParser }
-                    ] 
-                  }
-                }
-                
-                { logDebug { format : "solrcell output: {}", args : ["@{}"] } }                    
-              ]
-            }      
-          ]
-        }
-      }
-      
-      { generateUUID { field : ignored_base_id } }
-      
-      { 
-        generateSolrSequenceKey {
-          baseIdField: ignored_base_id
-          solrLocator : ${SOLR_LOCATOR} 
-        } 
-      }
-      
-      { 
-        loadSolr {
-          solrLocator : ${SOLR_LOCATOR}
-        }
-      }
-      
-      { 
-        logDebug {
-          format : "My output record: {}"
-          args : ["@{}"]
-        }
-      } 
-      
-    ]
-  }
-]

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellXML.conf
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellXML.conf b/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellXML.conf
deleted file mode 100644
index 9e840a9..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-morphlines/solrCellXML.conf
+++ /dev/null
@@ -1,78 +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.
-
-# Application configuration file in HOCON format (Human-Optimized Config Object Notation). 
-# HOCON syntax is defined at http://github.com/typesafehub/config/blob/master/HOCON.md
-# and also used by Akka (http://www.akka.io) and Play (http://www.playframework.org/).
-# For more examples see http://doc.akka.io/docs/akka/2.1.2/general/configuration.html
-
-# morphline.conf example file
-# this is a comment
-// this is yet another comment
-
-morphlines : [
-  {
-    id : morphline1
-
-    # using globs (foo.bar.* or foo.bar.**) will not work in Java9 due to classpath scanning limitations
-    # so we enumarate every command (builder) we know this config uses below. (see SOLR-8876)
-    importCommands : ["org.kitesdk.morphline.stdlib.LogDebugBuilder",
-                      "org.kitesdk.morphline.stdlib.AddValuesBuilder",
-                      "org.apache.solr.morphlines.cell.SolrCellBuilder",
-                      "org.apache.solr.morphlines.solr.GenerateSolrSequenceKeyBuilder",
-                      "org.apache.solr.morphlines.solr.SanitizeUnknownSolrFieldsBuilder",
-		      "org.apache.solr.morphlines.solr.LoadSolrBuilder"]
-    
-    
-    commands : [
-      {
-        addValues { _attachment_mimetype : application/xml }
-        # alternatively, consider using detectMimeTypes command
-      }
-      
-      {
-        # wrap SolrCell around a JPG Tika parser
-        solrCell {        
-          solrLocator : ${SOLR_LOCATOR}
-          parsers : [ # nested Tika parsers
-            { parser : org.apache.tika.parser.xml.XMLParser }
-          ] 
-        }
-      }
-                
-      { 
-        generateSolrSequenceKey {
-          baseIdField: base_id
-          solrLocator : ${SOLR_LOCATOR} 
-        } 
-      }
-      
-      {
-        sanitizeUnknownSolrFields {
-          solrLocator : ${SOLR_LOCATOR}
-        }
-      }  
-
-      { logDebug { format : "solrcell output: {}", args : ["@{}"] } }                    
-      
-      { 
-        loadSolr {
-          solrLocator : ${SOLR_LOCATOR}
-        }
-      }
-      
-    ]
-  }
-]

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-morphlines/tokenizeText.conf
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-morphlines/tokenizeText.conf b/solr/contrib/morphlines-core/src/test-files/test-morphlines/tokenizeText.conf
deleted file mode 100644
index d9354c4..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-morphlines/tokenizeText.conf
+++ /dev/null
@@ -1,38 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-morphlines : [
-  {
-    id : morphline1
-    
-    # using globs (foo.bar.* or foo.bar.**) will not work in Java9 due to classpath scanning limitations
-    # so we enumarate every command (builder) we know this config uses below. (see SOLR-8876)
-    importCommands : ["org.kitesdk.morphline.stdlib.LogDebugBuilder",
-                      "org.apache.solr.morphlines.solr.TokenizeTextBuilder"]
-    
-    commands : [                    
-      { 
-        tokenizeText {
-          inputField : message
-          outputField : tokens
-          solrFieldType : text_en
-          solrLocator : ${SOLR_LOCATOR}
-        }
-      }
-      
-      { logDebug { format : "output record {}", args : ["@{}"] } }    
-    ]
-  }
-]

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test-files/test-morphlines/tutorialReadAvroContainer.conf
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test-files/test-morphlines/tutorialReadAvroContainer.conf b/solr/contrib/morphlines-core/src/test-files/test-morphlines/tutorialReadAvroContainer.conf
deleted file mode 100644
index eee4ba5..0000000
--- a/solr/contrib/morphlines-core/src/test-files/test-morphlines/tutorialReadAvroContainer.conf
+++ /dev/null
@@ -1,145 +0,0 @@
-# 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.
-
-# Application configuration file in HOCON format (Human-Optimized Config Object Notation). 
-# HOCON syntax is defined at http://github.com/typesafehub/config/blob/master/HOCON.md
-# and also used by Akka (http://www.akka.io) and Play (http://www.playframework.org/).
-# For more examples see http://doc.akka.io/docs/akka/2.1.2/general/configuration.html
-
-# morphline.conf example file
-# this is a comment
-
-# Specify server locations in a SOLR_LOCATOR variable; used later in variable substitutions:
-SOLR_LOCATOR : {
-  # Name of solr collection
-  collection : collection1
-  
-  # ZooKeeper ensemble
-  zkHost : "127.0.0.1:2181/solr"
-  
-  # The maximum number of documents to send to Solr per network batch (throughput knob)
-  # batchSize : 1000
-}
-
-# Specify an array of one or more morphlines, each of which defines an ETL 
-# transformation chain. A morphline consists of one or more (potentially 
-# nested) commands. A morphline is a way to consume records (e.g. Flume events, 
-# HDFS files or blocks), turn them into a stream of records, and pipe the stream 
-# of records through a set of easily configurable transformations on its way to 
-# Solr.
-morphlines : [
-  {
-    # Name used to identify a morphline. E.g. used if there are multiple morphlines in a 
-    # morphline config file
-    id : morphline1 
-    
-    # using globs (foo.bar.* or foo.bar.**) will not work in Java9 due to classpath scanning limitations
-    # so we enumarate every command (builder) we know this config uses below. (see SOLR-8876)
-    importCommands : ["org.kitesdk.morphline.stdlib.LogDebugBuilder",
-                      "org.kitesdk.morphline.avro.ReadAvroContainerBuilder",
-                      "org.kitesdk.morphline.avro.ExtractAvroPathsBuilder",
-                      "org.kitesdk.morphline.stdlib.ConvertTimestampBuilder",
-                      "org.apache.solr.morphlines.solr.SanitizeUnknownSolrFieldsBuilder",
-		      "org.apache.solr.morphlines.solr.LoadSolrBuilder"]
-    
-    commands : [                    
-      { 
-        # Parse Avro container file and emit a record for each avro object
-        readAvroContainer {
-          # Optionally, require the input record to match one of these MIME types:
-          # supportedMimeTypes : [avro/binary]
-          
-          # Optionally, use a custom Avro schema in JSON format inline:
-          # readerSchemaString : """<json can go here>"""
-          
-          # Optionally, use a custom Avro schema file in JSON format:
-          # readerSchemaFile : /path/to/syslog.avsc
-        }
-      } 
-      
-      { 
-        # Consume the output record of the previous command and pipe another record downstream.
-        #
-        # extractAvroPaths is a command that uses zero or more avro path expressions to extract 
-        # values from an Avro object. Each expression consists of a record output field name (on 
-        # the left side of the colon ':') as well as zero or more path steps (on the right hand 
-        # side), each path step separated by a '/' slash. Avro arrays are traversed with the '[]'
-        # notation.
-        #
-        # The result of a path expression is a list of objects, each of which is added to the 
-        # given record output field.
-        # 
-        # The path language supports all Avro concepts, including nested structures, records, 
-        # arrays, maps, unions, etc, as well as a flatten option that collects the primitives in 
-        # a subtree into a flat list.
-        extractAvroPaths {
-          flatten : false
-          paths : { 
-            id : /id            
-            text : /text      
-            user_friends_count : /user_friends_count
-            user_location : /user_location
-            user_description : /user_description
-            user_statuses_count : /user_statuses_count
-            user_followers_count : /user_followers_count
-            user_name : /user_name
-            user_screen_name : /user_screen_name
-            created_at : /created_at
-            retweet_count : /retweet_count
-            retweeted : /retweeted
-            in_reply_to_user_id : /in_reply_to_user_id
-            source : /source
-            in_reply_to_status_id : /in_reply_to_status_id
-            media_url_https : /media_url_https
-            expanded_url : /expanded_url
-          }
-        }
-      }
-      
-      # Consume the output record of the previous command and pipe another record downstream.
-      #
-      # convert timestamp field to native Solr timestamp format
-      # e.g. 2012-09-06T07:14:34Z to 2012-09-06T07:14:34.000Z
-      {
-        convertTimestamp {
-          field : created_at
-          inputFormats : ["yyyy-MM-dd'T'HH:mm:ss'Z'", "yyyy-MM-dd"]
-          inputTimezone : UTC
-#          outputFormat : "yyyy-MM-dd'T'HH:mm:ss.SSSZ"                                 
-          outputTimezone : America/Los_Angeles
-        }
-      }
-      
-      # Consume the output record of the previous command and pipe another record downstream.
-      #
-      # This command sanitizes record fields that are unknown to Solr schema.xml by deleting 
-      # them. Recall that Solr throws an exception on any attempt to load a document that 
-      # contains a field that isn't specified in schema.xml.
-      {
-        sanitizeUnknownSolrFields {
-          # Location from which to fetch Solr schema
-          solrLocator : ${SOLR_LOCATOR}
-        }
-      }  
-            
-      # log the record at DEBUG level to SLF4J
-      { logDebug { format : "output record: {}", args : ["@{}"] } }    
-      
-      # load the record into a Solr server or MapReduce Reducer.
-      { 
-        loadSolr {
-          solrLocator : ${SOLR_LOCATOR}
-        }
-      }
-    ]
-  }
-]

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java b/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java
deleted file mode 100644
index c91f31b..0000000
--- a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.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.morphlines.solr;
-
-import com.codahale.metrics.MetricRegistry;
-import com.google.common.io.Files;
-import com.typesafe.config.Config;
-import org.apache.commons.io.FileUtils;
-import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
-import org.apache.solr.client.solrj.impl.XMLResponseParser;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.common.SolrDocument;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.kitesdk.morphline.api.Collector;
-import org.kitesdk.morphline.api.Command;
-import org.kitesdk.morphline.api.MorphlineContext;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.Compiler;
-import org.kitesdk.morphline.base.FaultTolerance;
-import org.kitesdk.morphline.base.Fields;
-import org.kitesdk.morphline.base.Notifications;
-import org.kitesdk.morphline.stdlib.PipeBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.TimeZone;
-import java.util.concurrent.atomic.AtomicInteger;
-
-public class AbstractSolrMorphlineTestBase extends SolrTestCaseJ4 {
-  private static Locale savedLocale;
-  protected Collector collector;
-  protected Command morphline;
-  protected SolrClient solrClient;
-  protected DocumentLoader testServer;
-  
-  protected static final boolean TEST_WITH_EMBEDDED_SOLR_SERVER = true;
-  protected static final String EXTERNAL_SOLR_SERVER_URL = System.getProperty("externalSolrServer");
-//  protected static final String EXTERNAL_SOLR_SERVER_URL = "http://127.0.0.1:8983/solr";
-
-  protected static final String RESOURCES_DIR = getFile("morphlines-core.marker").getParent();
-  protected static final String DEFAULT_BASE_DIR = "solr";
-  protected static final AtomicInteger SEQ_NUM = new AtomicInteger();
-  protected static final AtomicInteger SEQ_NUM2 = new AtomicInteger();
-  
-  protected static final Object NON_EMPTY_FIELD = new Object();
-  
-  private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
-  protected String tempDir;
-
-  @BeforeClass
-  public static void beforeClass() throws Exception {
-    
-    // TODO: test doesn't work with some Locales, see SOLR-6458
-    savedLocale = Locale.getDefault();
-    Locale.setDefault(Locale.ENGLISH);
-    
-    // we leave this in case the above is addressed
-    assumeFalse("This test fails on UNIX with Turkish default locale (https://issues.apache.org/jira/browse/SOLR-6387)",
-        new Locale("tr").getLanguage().equals(Locale.getDefault().getLanguage()));
-    
-    myInitCore(DEFAULT_BASE_DIR);
-  }
-  
-  @AfterClass
-  public static void afterClass() throws Exception {
-    if (savedLocale != null) {
-      Locale.setDefault(savedLocale);
-    }
-    savedLocale = null;
-  }
-
-  protected static void myInitCore(String baseDirName) throws Exception {
-    String solrHome = RESOURCES_DIR + File.separator + baseDirName;
-    initCore(
-        "solrconfig.xml", "schema.xml", solrHome
-    );
-  }
-  
-  @Before
-  public void setUp() throws Exception {
-    super.setUp();
-    collector = new Collector();
-    
-    if (EXTERNAL_SOLR_SERVER_URL != null) {
-      //solrServer = new ConcurrentUpdateSolrServer(EXTERNAL_SOLR_SERVER_URL, 2, 2);
-      //solrServer = new SafeConcurrentUpdateSolrServer(EXTERNAL_SOLR_SERVER_URL, 2, 2);
-      solrClient = getHttpSolrClient(EXTERNAL_SOLR_SERVER_URL);
-      ((HttpSolrClient) solrClient).setParser(new XMLResponseParser());
-    } else {
-      if (TEST_WITH_EMBEDDED_SOLR_SERVER) {
-        solrClient = new EmbeddedTestSolrServer(h.getCoreContainer(), DEFAULT_TEST_CORENAME);
-      } else {
-        throw new RuntimeException("Not yet implemented");
-        //solrServer = new TestSolrServer(getSolrClient());
-      }
-    }
-
-    int batchSize = SEQ_NUM2.incrementAndGet() % 2 == 0 ? 100 : 1; //SolrInspector.DEFAULT_SOLR_SERVER_BATCH_SIZE : 1;
-    testServer = new SolrClientDocumentLoader(solrClient, batchSize);
-    deleteAllDocuments();
-    
-    tempDir = createTempDir().toFile().getAbsolutePath();
-  }
-  
-  @After
-  public void tearDown() throws Exception {
-    collector = null;
-    solrClient.close();
-    solrClient = null;
-    super.tearDown();
-  }
-
-  protected void testDocumentTypesInternal(
-      String[] files, 
-      Map<String,Integer> expectedRecords, 
-      Map<String, Map<String, Object>> expectedRecordContents) throws Exception {
-
-    assumeTrue("This test has issues with this locale: https://issues.apache.org/jira/browse/SOLR-5778", 
-        "GregorianCalendar".equals(Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault()).getClass().getSimpleName()));
-    deleteAllDocuments();
-    int numDocs = 0;    
-    for (int i = 0; i < 1; i++) {
-      
-      for (String file : files) {
-        File f = new File(file);
-        byte[] body = Files.toByteArray(f);
-        Record event = new Record();
-        //event.put(Fields.ID, docId++);
-        event.getFields().put(Fields.ATTACHMENT_BODY, new ByteArrayInputStream(body));
-        event.getFields().put(Fields.ATTACHMENT_NAME, f.getName());
-        event.getFields().put(Fields.BASE_ID, f.getName());        
-        collector.reset();
-        load(event);
-        Integer count = expectedRecords.get(file);
-        if (count != null) {
-          numDocs += count;
-        } else {
-          numDocs++;
-        }
-        assertEquals("unexpected results in " + file, numDocs, queryResultSetSize("*:*"));
-        Map<String, Object> expectedContents = expectedRecordContents.get(file);
-        if (expectedContents != null) {
-          Record actual = collector.getFirstRecord();
-          for (Map.Entry<String, Object> entry : expectedContents.entrySet()) {
-            if (entry.getValue() == NON_EMPTY_FIELD) {
-              assertNotNull(entry.getKey());
-              assertTrue(actual.getFirstValue(entry.getKey()).toString().length() > 0);
-            } else if (entry.getValue() == null) {
-              assertEquals("key:" + entry.getKey(), 0, actual.get(entry.getKey()).size());
-            } else {
-              assertEquals("key:" + entry.getKey(), Arrays.asList(entry.getValue()), actual.get(entry.getKey()));
-            }
-          }
-        }
-      }
-    }
-    assertEquals(numDocs, queryResultSetSize("*:*"));
-  }
-
-  private boolean load(Record record) {
-    Notifications.notifyStartSession(morphline);
-    return morphline.process(record);
-  }
-  
-  protected int queryResultSetSize(String query) {
-//    return collector.getRecords().size();
-    try {
-      testServer.commitTransaction();
-      solrClient.commit(false, true, true);
-      QueryResponse rsp = solrClient.query(new SolrQuery(query).setRows(Integer.MAX_VALUE));
-      LOGGER.debug("rsp: {}", rsp);
-      int i = 0;
-      for (SolrDocument doc : rsp.getResults()) {
-        LOGGER.debug("rspDoc #{}: {}", i++, doc);
-      }
-      int size = rsp.getResults().size();
-      return size;
-    } catch (Exception e) {
-      throw new RuntimeException(e);
-    }
-  }
-  
-  private void deleteAllDocuments() throws SolrServerException, IOException {
-    collector.reset();
-    SolrClient s = solrClient;
-    s.deleteByQuery("*:*"); // delete everything!
-    s.commit();
-  }
-
-  protected Command createMorphline(String file) throws IOException {
-    return new PipeBuilder().build(parse(file), null, collector, createMorphlineContext());
-  }
-
-  private MorphlineContext createMorphlineContext() {
-    return new SolrMorphlineContext.Builder()
-      .setDocumentLoader(testServer)
-//      .setDocumentLoader(new CollectingDocumentLoader(100))
-      .setExceptionHandler(new FaultTolerance(false, false, SolrServerException.class.getName()))
-      .setMetricRegistry(new MetricRegistry())
-      .build();
-  }
-  
-  private Config parse(String file) throws IOException {
-    SolrLocator locator = new SolrLocator(createMorphlineContext());
-    locator.setSolrHomeDir(testSolrHome + "/collection1");
-    File morphlineFile;
-    if (new File(file).isAbsolute()) {
-      morphlineFile = new File(file + ".conf");
-    } else {
-      morphlineFile = new File(RESOURCES_DIR + "/" + file + ".conf");
-    }
-    Config config = new Compiler().parse(morphlineFile, locator.toConfig("SOLR_LOCATOR"));
-    config = config.getConfigList("morphlines").get(0);
-    return config;
-  }
-  
-  protected void startSession() {
-    Notifications.notifyStartSession(morphline);
-  }
-
-  protected void testDocumentContent(HashMap<String, ExpectedResult> expectedResultMap)
-  throws Exception {
-    QueryResponse rsp = solrClient.query(new SolrQuery("*:*").setRows(Integer.MAX_VALUE));
-    // Check that every expected field/values shows up in the actual query
-    for (Entry<String, ExpectedResult> current : expectedResultMap.entrySet()) {
-      String field = current.getKey();
-      for (String expectedFieldValue : current.getValue().getFieldValues()) {
-        ExpectedResult.CompareType compareType = current.getValue().getCompareType();
-        boolean foundField = false;
-
-        for (SolrDocument doc : rsp.getResults()) {
-          Collection<Object> actualFieldValues = doc.getFieldValues(field);
-          if (compareType == ExpectedResult.CompareType.equals) {
-            if (actualFieldValues != null && actualFieldValues.contains(expectedFieldValue)) {
-              foundField = true;
-              break;
-            }
-          }
-          else {
-            for (Iterator<Object> it = actualFieldValues.iterator(); it.hasNext(); ) {
-              String actualValue = it.next().toString();  // test only supports string comparison
-              if (actualFieldValues != null && actualValue.contains(expectedFieldValue)) {
-                foundField = true;
-                break;
-              }
-            }
-          }
-        }
-        assert(foundField); // didn't find expected field/value in query
-      }
-    }
-  }
-
-  /**
-   * Representation of the expected output of a SolrQuery.
-   */
-  protected static class ExpectedResult {
-    private HashSet<String> fieldValues;
-    public enum CompareType {
-      equals,    // Compare with equals, i.e. actual.equals(expected)
-      contains;  // Compare with contains, i.e. actual.contains(expected)
-    }
-    private CompareType compareType;
-
-    public ExpectedResult(HashSet<String> fieldValues, CompareType compareType) {
-      this.fieldValues = fieldValues;
-      this.compareType = compareType;
-    }
-    public HashSet<String> getFieldValues() { return fieldValues; }
-    public CompareType getCompareType() { return compareType; }
-  }
-  
-  public static void setupMorphline(String tempDir, String file, boolean replaceSolrLocator) throws IOException {
-    String morphlineText = FileUtils.readFileToString(new File(RESOURCES_DIR + "/" + file + ".conf"), "UTF-8");
-    morphlineText = morphlineText.replace("RESOURCES_DIR", new File(tempDir).getAbsolutePath());
-    if (replaceSolrLocator) {
-      morphlineText = morphlineText.replace("${SOLR_LOCATOR}",
-          "{ collection : collection1 }");
-    }
-    new File(tempDir + "/" + file + ".conf").getParentFile().mkdirs();
-    FileUtils.writeStringToFile(new File(tempDir + "/" + file + ".conf"), morphlineText, "UTF-8");
-  }
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java b/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java
deleted file mode 100644
index 31e7ebf..0000000
--- a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java
+++ /dev/null
@@ -1,141 +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.morphlines.solr;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.Locale;
-
-import com.codahale.metrics.MetricRegistry;
-import com.google.common.collect.ListMultimap;
-import com.typesafe.config.Config;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.apache.solr.cloud.AbstractDistribZkTestBase;
-import org.apache.solr.cloud.SolrCloudTestCase;
-import org.apache.solr.common.SolrDocument;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.kitesdk.morphline.api.Collector;
-import org.kitesdk.morphline.api.Command;
-import org.kitesdk.morphline.api.MorphlineContext;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.Compiler;
-import org.kitesdk.morphline.base.FaultTolerance;
-import org.kitesdk.morphline.base.Notifications;
-import org.kitesdk.morphline.stdlib.PipeBuilder;
-
-public abstract class AbstractSolrMorphlineZkTestBase extends SolrCloudTestCase {
-
-  protected static final String COLLECTION = "collection1";
-
-  protected static final int TIMEOUT = 30;
-
-  @BeforeClass
-  public static void setupCluster() throws Exception {
-    // set some system properties for use by tests
-    System.setProperty("solr.test.sys.prop1", "propone");
-    System.setProperty("solr.test.sys.prop2", "proptwo");
-    
-    configureCluster(2)
-        .addConfig("conf", SOLR_CONF_DIR.toPath())
-        .configure();
-
-    CollectionAdminRequest.createCollection(COLLECTION, "conf", 2, 1)
-        .processAndWait(cluster.getSolrClient(), TIMEOUT);
-    AbstractDistribZkTestBase.waitForRecoveriesToFinish(COLLECTION, cluster.getSolrClient().getZkStateReader(),
-        false, true, TIMEOUT);
-  }
-  
-  @AfterClass
-  public static void afterClass() {
-    System.clearProperty("solr.test.sys.prop1");
-    System.clearProperty("solr.test.sys.prop2");
-  }
-
-  protected static final String RESOURCES_DIR = getFile("morphlines-core.marker").getParent();
-  private static final File SOLR_CONF_DIR = new File(RESOURCES_DIR + "/solr/collection1/conf");
-
-  protected Collector collector;
-  protected Command morphline;
-  
-  @BeforeClass
-  public static void setupClass() throws Exception {
-
-    assumeFalse("This test fails on UNIX with Turkish default locale (https://issues.apache.org/jira/browse/SOLR-6387)",
-        new Locale("tr").getLanguage().equals(Locale.getDefault().getLanguage()));
-
-  }
-
-  @Before
-  public void setup() throws Exception {
-    collector = new Collector();
-    cluster.waitForAllNodes(DEFAULT_TIMEOUT);
-  }
-
-  protected void commit() throws Exception {
-    Notifications.notifyCommitTransaction(morphline);
-  }
-  
-  protected Command parse(String file) throws IOException {
-    return parse(file, COLLECTION);
-  }
-  
-  protected Command parse(String file, String collection) throws IOException {
-    SolrLocator locator = new SolrLocator(createMorphlineContext());
-    locator.setCollectionName(collection);
-    locator.setZkHost(cluster.getZkServer().getZkAddress());
-    //locator.setServerUrl(cloudJettys.get(0).url); // TODO: download IndexSchema from solrUrl not yet implemented
-    //locator.setSolrHomeDir(SOLR_HOME_DIR.getPath());
-    Config config = new Compiler().parse(new File(RESOURCES_DIR + "/" + file + ".conf"), locator.toConfig("SOLR_LOCATOR"));
-    config = config.getConfigList("morphlines").get(0);
-    return createMorphline(config);
-  }
-  
-  private Command createMorphline(Config config) {
-    return new PipeBuilder().build(config, null, collector, createMorphlineContext());
-  }
-
-  private MorphlineContext createMorphlineContext() {
-    return new MorphlineContext.Builder()
-      .setExceptionHandler(new FaultTolerance(false, false, SolrServerException.class.getName()))
-      .setMetricRegistry(new MetricRegistry())
-      .build();
-  }
-  
-  protected void startSession() {
-    Notifications.notifyStartSession(morphline);
-  }
-
-  protected ListMultimap<String, Object> next(Iterator<SolrDocument> iter) {
-    SolrDocument doc = iter.next();
-    Record record = toRecord(doc);
-    record.removeAll("_version_"); // the values of this field are unknown and internal to solr
-    return record.getFields();    
-  }
-  
-  private Record toRecord(SolrDocument doc) {
-    Record record = new Record();
-    for (String key : doc.keySet()) {
-      record.getFields().replaceValues(key, doc.getFieldValues(key));        
-    }
-    return record;
-  }
-  
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/CollectingDocumentLoader.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/CollectingDocumentLoader.java b/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/CollectingDocumentLoader.java
deleted file mode 100644
index 3864e6d..0000000
--- a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/CollectingDocumentLoader.java
+++ /dev/null
@@ -1,95 +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.morphlines.solr;
-
-import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.solr.client.solrj.response.SolrPingResponse;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.common.SolrInputDocument;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A mockup DocumentLoader implementation for unit tests; collects all documents into a main memory list.
- */
-class CollectingDocumentLoader implements DocumentLoader {
-
-  private final int batchSize;
-  private final List<SolrInputDocument> batch = new ArrayList<> ();
-  private List<SolrInputDocument> results = new ArrayList<> ();
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
-  public CollectingDocumentLoader(int batchSize) {
-    if (batchSize <= 0) {
-      throw new IllegalArgumentException("batchSize must be a positive number: " + batchSize);      
-    }
-    this.batchSize = batchSize;
-  }
-  
-  @Override
-  public void beginTransaction() {
-    LOGGER.trace("beginTransaction");
-    batch.clear();
-  }
-
-  @Override
-  public void load(SolrInputDocument doc) {
-    LOGGER.trace("load doc: {}", doc);
-    batch.add(doc);
-    if (batch.size() >= batchSize) {
-      loadBatch();
-    }
-  }
-
-  @Override
-  public void commitTransaction() {
-    LOGGER.trace("commitTransaction");
-    if (batch.size() > 0) {
-      loadBatch();
-    }
-  }
-
-  private void loadBatch() {
-    try {
-      results.addAll(batch);
-    } finally {
-      batch.clear();
-    }
-  }
-
-  @Override
-  public UpdateResponse rollbackTransaction() {
-    LOGGER.trace("rollback");
-    return new UpdateResponse();
-  }
-
-  @Override
-  public void shutdown() {
-    LOGGER.trace("shutdown");    
-  }
-
-  @Override
-  public SolrPingResponse ping() {
-    LOGGER.trace("ping");
-    return new SolrPingResponse();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/EmbeddedTestSolrServer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/EmbeddedTestSolrServer.java b/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/EmbeddedTestSolrServer.java
deleted file mode 100644
index 9599511..0000000
--- a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/EmbeddedTestSolrServer.java
+++ /dev/null
@@ -1,46 +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.morphlines.solr;
-
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
-import org.apache.solr.client.solrj.response.UpdateResponse;
-import org.apache.solr.core.CoreContainer;
-
-import java.io.IOException;
-
-/**
- * An EmbeddedSolrServer that supresses close and rollback requests as
- * necessary for testing
- */
-public class EmbeddedTestSolrServer extends EmbeddedSolrServer {
-
-  public EmbeddedTestSolrServer(CoreContainer coreContainer, String coreName) {
-    super(coreContainer, coreName);
-  }
-
-  @Override
-  public void close() {
-    ; // NOP
-  }
-
-  @Override
-  public UpdateResponse rollback() throws SolrServerException, IOException {
-    return new UpdateResponse();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineTest.java b/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineTest.java
deleted file mode 100644
index 64fa2ec..0000000
--- a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineTest.java
+++ /dev/null
@@ -1,69 +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.morphlines.solr;
-
-import org.junit.Test;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.Fields;
-import org.kitesdk.morphline.base.Notifications;
-
-import java.io.File;
-import java.util.Arrays;
-
-public class SolrMorphlineTest extends AbstractSolrMorphlineTestBase {
-
-  @Test
-  public void testLoadSolrBasic() throws Exception {
-    //System.setProperty("ENV_SOLR_HOME", testSolrHome + "/collection1");
-    morphline = createMorphline("test-morphlines/loadSolrBasic");    
-    //System.clearProperty("ENV_SOLR_HOME");
-    Record record = new Record();
-    record.put(Fields.ID, "id0");
-    record.put("first_name", "Nadja"); // will be sanitized
-    startSession();
-    Notifications.notifyBeginTransaction(morphline);
-    assertTrue(morphline.process(record));
-    assertEquals(1, collector.getNumStartEvents());
-    Notifications.notifyCommitTransaction(morphline);
-    Record expected = new Record();
-    expected.put(Fields.ID, "id0");
-    assertEquals(Arrays.asList(expected), collector.getRecords());
-    assertEquals(1, queryResultSetSize("*:*"));
-    Notifications.notifyRollbackTransaction(morphline);
-    Notifications.notifyShutdown(morphline);
-  }
-    
-  @Test
-  public void testTokenizeText() throws Exception {
-    morphline = createMorphline("test-morphlines" + File.separator + "tokenizeText");
-    for (int i = 0; i < 3; i++) {
-      Record record = new Record();
-      record.put(Fields.MESSAGE, "Hello World!");
-      record.put(Fields.MESSAGE, "\nFoo@Bar.com #%()123");
-      Record expected = record.copy();
-      expected.getFields().putAll("tokens", Arrays.asList("hello", "world", "foo", "bar.com", "123"));
-      collector.reset();
-      startSession();
-      Notifications.notifyBeginTransaction(morphline);
-      assertTrue(morphline.process(record));
-      assertEquals(1, collector.getNumStartEvents());
-      Notifications.notifyCommitTransaction(morphline);
-      assertEquals(expected, collector.getFirstRecord());
-    }
-  }
-    
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAliasTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAliasTest.java b/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAliasTest.java
deleted file mode 100644
index 74c8824..0000000
--- a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAliasTest.java
+++ /dev/null
@@ -1,96 +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.morphlines.solr;
-
-import java.io.File;
-import java.util.Iterator;
-
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
-import org.apache.lucene.util.LuceneTestCase.Slow;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.apache.solr.client.solrj.request.UpdateRequest;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.common.SolrDocument;
-import org.apache.solr.util.BadHdfsThreadsFilter;
-import org.junit.Test;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.Fields;
-import org.kitesdk.morphline.base.Notifications;
-
-@ThreadLeakFilters(defaultFilters = true, filters = {
-    BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
-})
-@Slow
-public class SolrMorphlineZkAliasTest extends AbstractSolrMorphlineZkTestBase {
-
-  @Test
-  public void test() throws Exception {
-
-    CollectionAdminRequest.createAlias("aliascollection", "collection1")
-        .process(cluster.getSolrClient());
-    
-    morphline = parse("test-morphlines" + File.separator + "loadSolrBasic", "aliascollection");
-    Record record = new Record();
-    record.put(Fields.ID, "id0-innsbruck");
-    record.put("text", "mytext");
-    record.put("user_screen_name", "foo");
-    record.put("first_name", "Nadja"); // will be sanitized
-    startSession();
-    assertEquals(1, collector.getNumStartEvents());
-    Notifications.notifyBeginTransaction(morphline);
-    assertTrue(morphline.process(record));
-    
-    record = new Record();
-    record.put(Fields.ID, "id1-innsbruck");
-    record.put("text", "mytext1");
-    record.put("user_screen_name", "foo1");
-    record.put("first_name", "Nadja1"); // will be sanitized
-    assertTrue(morphline.process(record));
-    
-    Record expected = new Record();
-    expected.put(Fields.ID, "id0-innsbruck");
-    expected.put("text", "mytext");
-    expected.put("user_screen_name", "foo");
-    Iterator<Record> citer = collector.getRecords().iterator();
-    assertEquals(expected, citer.next());
-    
-    Record expected2 = new Record();
-    expected2.put(Fields.ID, "id1-innsbruck");
-    expected2.put("text", "mytext1");
-    expected2.put("user_screen_name", "foo1");
-    assertEquals(expected2, citer.next());
-    
-    assertFalse(citer.hasNext());
-    
-    Notifications.notifyCommitTransaction(morphline);
-    new UpdateRequest().commit(cluster.getSolrClient(), COLLECTION);
-    
-    QueryResponse rsp = cluster.getSolrClient()
-        .query(COLLECTION, new SolrQuery("*:*").setRows(100000).addSort(Fields.ID, SolrQuery.ORDER.asc));
-    //System.out.println(rsp);
-    Iterator<SolrDocument> iter = rsp.getResults().iterator();
-    assertEquals(expected.getFields(), next(iter));
-    assertEquals(expected2.getFields(), next(iter));
-    assertFalse(iter.hasNext());
-    
-    Notifications.notifyRollbackTransaction(morphline);
-    Notifications.notifyShutdown(morphline);
-
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAvroTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAvroTest.java b/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAvroTest.java
deleted file mode 100644
index 49e2a0e..0000000
--- a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkAvroTest.java
+++ /dev/null
@@ -1,140 +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.morphlines.solr;
-
-import java.io.File;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Objects;
-
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
-import org.apache.avro.file.DataFileReader;
-import org.apache.avro.file.FileReader;
-import org.apache.avro.generic.GenericData;
-import org.apache.avro.generic.GenericDatumReader;
-import org.apache.lucene.util.LuceneTestCase.Slow;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.request.UpdateRequest;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.common.SolrDocument;
-import org.apache.solr.util.BadHdfsThreadsFilter;
-import org.junit.Test;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.Fields;
-import org.kitesdk.morphline.base.Notifications;
-
-@ThreadLeakFilters(defaultFilters = true, filters = {
-    BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
-})
-@Slow
-public class SolrMorphlineZkAvroTest extends AbstractSolrMorphlineZkTestBase {
-
-
-  @Test
-  public void test() throws Exception {
-
-    Path avro = Paths.get(RESOURCES_DIR).resolve("test-documents").resolve("sample-statuses-20120906-141433-medium.avro");
-
-    // load avro records via morphline and zk into solr
-    morphline = parse("test-morphlines" + File.separator + "tutorialReadAvroContainer");    
-    Record record = new Record();
-    byte[] body = Files.readAllBytes(avro);
-    record.put(Fields.ATTACHMENT_BODY, body);
-    startSession();
-    Notifications.notifyBeginTransaction(morphline);
-    assertTrue(morphline.process(record));
-    assertEquals(1, collector.getNumStartEvents());
-    
-    Notifications.notifyCommitTransaction(morphline);
-    new UpdateRequest().commit(cluster.getSolrClient(), COLLECTION);
-    
-    // fetch sorted result set from solr
-    QueryResponse rsp = cluster.getSolrClient()
-        .query(COLLECTION, new SolrQuery("*:*").setRows(100000).addSort("id", SolrQuery.ORDER.asc));
-    assertEquals(2104, collector.getRecords().size());
-    assertEquals(collector.getRecords().size(), rsp.getResults().size());
-    
-    Collections.sort(collector.getRecords(), (r1, r2) -> r1.get("id").toString().compareTo(r2.get("id").toString()));
-
-    // fetch test input data and sort like solr result set
-    List<GenericData.Record> records = new ArrayList<>();
-    FileReader<GenericData.Record> reader = new DataFileReader(avro.toFile(), new GenericDatumReader());
-    while (reader.hasNext()) {
-      GenericData.Record expected = reader.next();
-      records.add(expected);
-    }
-    assertEquals(collector.getRecords().size(), records.size());    
-    Collections.sort(records, (r1, r2) -> r1.get("id").toString().compareTo(r2.get("id").toString()));
-    
-    Object lastId = null;
-    for (int i = 0; i < records.size(); i++) {  
-      //System.out.println("myrec" + i + ":" + records.get(i));      
-      Object id = records.get(i);
-      if (id != null && id.equals(lastId)) {
-        throw new IllegalStateException("Detected duplicate id. Test input data must not contain duplicate ids!");        
-      }
-      lastId = id;
-    }
-    
-    for (int i = 0; i < records.size(); i++) {  
-      //System.out.println("myrsp" + i + ":" + rsp.getResults().get(i));      
-    }    
-
-    Iterator<SolrDocument> rspIter = rsp.getResults().iterator();
-    for (int i = 0; i < records.size(); i++) {  
-      // verify morphline spat out expected data
-      Record actual = collector.getRecords().get(i);
-      GenericData.Record expected = Objects.requireNonNull(records.get(i));
-      assertTweetEquals(expected, actual, i);
-      
-      // verify Solr result set contains expected data
-      actual = new Record();
-      actual.getFields().putAll(next(rspIter));
-      assertTweetEquals(expected, actual, i);
-    }
-    
-    Notifications.notifyRollbackTransaction(morphline);
-    Notifications.notifyShutdown(morphline);
-
-  }
-  
-  private void assertTweetEquals(GenericData.Record expected, Record actual, int i) {
-    Objects.requireNonNull(expected);
-    Objects.requireNonNull(actual);
-//    System.out.println("\n\nexpected: " + toString(expected));
-//    System.out.println("actual:   " + actual);
-    String[] fieldNames = new String[] { 
-        "id", 
-        "in_reply_to_status_id", 
-        "in_reply_to_user_id", 
-        "retweet_count",
-        "text", 
-        };
-    for (String fieldName : fieldNames) {
-      assertEquals(
-          i + " fieldName: " + fieldName, 
-          expected.get(fieldName).toString(), 
-          actual.getFirstValue(fieldName).toString());
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkTest.java b/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkTest.java
deleted file mode 100644
index 24d8682..0000000
--- a/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/SolrMorphlineZkTest.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.morphlines.solr;
-
-import java.io.File;
-import java.util.Iterator;
-
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
-import org.apache.lucene.util.LuceneTestCase.Slow;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.request.UpdateRequest;
-import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.common.SolrDocument;
-import org.apache.solr.util.BadHdfsThreadsFilter;
-import org.junit.Test;
-import org.kitesdk.morphline.api.Record;
-import org.kitesdk.morphline.base.Fields;
-import org.kitesdk.morphline.base.Notifications;
-
-@ThreadLeakFilters(defaultFilters = true, filters = {
-    BadHdfsThreadsFilter.class // hdfs currently leaks thread(s)
-})
-@Slow
-public class SolrMorphlineZkTest extends AbstractSolrMorphlineZkTestBase {
-
-  @Test
-  public void test() throws Exception {
-    
-    morphline = parse("test-morphlines" + File.separator + "loadSolrBasic");
-    Record record = new Record();
-    record.put(Fields.ID, "id0-innsbruck");
-    record.put("text", "mytext");
-    record.put("user_screen_name", "foo");
-    record.put("first_name", "Nadja"); // will be sanitized
-    startSession();
-    assertEquals(1, collector.getNumStartEvents());
-    Notifications.notifyBeginTransaction(morphline);
-    assertTrue(morphline.process(record));
-    
-    record = new Record();
-    record.put(Fields.ID, "id1-innsbruck");
-    record.put("text", "mytext1");
-    record.put("user_screen_name", "foo1");
-    record.put("first_name", "Nadja1"); // will be sanitized
-    assertTrue(morphline.process(record));
-    
-    Record expected = new Record();
-    expected.put(Fields.ID, "id0-innsbruck");
-    expected.put("text", "mytext");
-    expected.put("user_screen_name", "foo");
-    Iterator<Record> citer = collector.getRecords().iterator();
-    assertEquals(expected, citer.next());
-    
-    Record expected2 = new Record();
-    expected2.put(Fields.ID, "id1-innsbruck");
-    expected2.put("text", "mytext1");
-    expected2.put("user_screen_name", "foo1");
-    assertEquals(expected2, citer.next());
-    
-    assertFalse(citer.hasNext());
-    
-    Notifications.notifyCommitTransaction(morphline);
-    new UpdateRequest().commit(cluster.getSolrClient(), COLLECTION);
-    
-    QueryResponse rsp = cluster.getSolrClient()
-        .query(COLLECTION, new SolrQuery("*:*").setRows(100000).addSort(Fields.ID, SolrQuery.ORDER.asc));
-    //System.out.println(rsp);
-    Iterator<SolrDocument> iter = rsp.getResults().iterator();
-    assertEquals(expected.getFields(), next(iter));
-    assertEquals(expected2.getFields(), next(iter));
-    assertFalse(iter.hasNext());
-    
-    Notifications.notifyRollbackTransaction(morphline);
-    Notifications.notifyShutdown(morphline);
-
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/53e5f34f/solr/licenses/Saxon-HE-9.6.0-2.jar.sha1
----------------------------------------------------------------------
diff --git a/solr/licenses/Saxon-HE-9.6.0-2.jar.sha1 b/solr/licenses/Saxon-HE-9.6.0-2.jar.sha1
deleted file mode 100644
index 56981f2..0000000
--- a/solr/licenses/Saxon-HE-9.6.0-2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-826a6c32fef050346b37e91b36fde16cf932da12