You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by eh...@apache.org on 2017/04/30 02:39:16 UTC

lucene-solr:jira/SOLR-1485: Fix test file merged incorrectly

Repository: lucene-solr
Updated Branches:
  refs/heads/jira/SOLR-1485 24124a0f5 -> 469aca7fc


Fix test file merged incorrectly


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

Branch: refs/heads/jira/SOLR-1485
Commit: 469aca7fce86ef3842d780ff2e531f0e2c0d9c84
Parents: 24124a0
Author: Erik Hatcher <eh...@apache.org>
Authored: Sat Apr 29 22:39:03 2017 -0400
Committer: Erik Hatcher <eh...@apache.org>
Committed: Sat Apr 29 22:39:03 2017 -0400

----------------------------------------------------------------------
 .../solr/collection1/conf/schema11.xml          | 808 ++++++++++---------
 1 file changed, 420 insertions(+), 388 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/469aca7f/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 52df4fd..b91c680 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema11.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema11.xml
@@ -38,36 +38,36 @@
        1.1: multiValued attribute introduced, false by default -->
 
 
-    <!-- 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 the
-       org.apache.solr.analysis package.
-    -->
+  <!-- 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 the
+     org.apache.solr.analysis package.
+  -->
 
-    <!-- The StrField type is not analyzed, but indexed/stored verbatim.  
-       - StrField and TextField support an optional compressThreshold which
-       limits compression (if enabled in the derived fields) to values which
-       exceed a certain size (in characters).
-    -->
-    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
-
-    <!-- boolean type: "true" or "false" -->
-    <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
-
-    <!-- The optional sortMissingLast and sortMissingFirst attributes are
-         currently supported on types that are sorted internally as strings.
-       - 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.
-    -->
+  <!-- The StrField type is not analyzed, but indexed/stored verbatim.
+     - StrField and TextField support an optional compressThreshold which
+     limits compression (if enabled in the derived fields) to values which
+     exceed a certain size (in characters).
+  -->
+  <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
+
+  <!-- boolean type: "true" or "false" -->
+  <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
+
+  <!-- The optional sortMissingLast and sortMissingFirst attributes are
+       currently supported on types that are sorted internally as strings.
+     - 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.
+  -->
 
 
   <!--
@@ -77,375 +77,407 @@
   <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"/>
-  
+
   <!-- Point Fields -->
   <fieldType name="pint" class="solr.IntPointField" docValues="true"/>
   <fieldType name="plong" class="solr.LongPointField" docValues="true"/>
   <fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/>
   <fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/>
+  <fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
+
+  <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
+       is a more restricted form of the canonical representation of dateTime
+       http://www.w3.org/TR/xmlschema-2/#dateTime
+       The trailing "Z" designates UTC time and is mandatory.
+       Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
+       All other components are mandatory.
+
+       Expressions can also be used to denote calculations that should be
+       performed relative to "NOW" to determine the value, ie...
+
+             NOW/HOUR
+                ... Round to the start of the current hour
+             NOW-1DAY
+                ... Exactly 1 day prior to now
+             NOW/DAY+6MONTHS+3DAYS
+                ... 6 months and 3 days in the future from the start of
+                    the current day
+
+       Consult the TrieDateField javadocs for more information.
+    -->
+  <fieldType name="date" class="solr.TrieDateField" sortMissingLast="true" omitNorms="true"/>
+
+
+  <!-- The "RandomSortField" is not used to store or search any
+       data.  You can declare fields of this type it in your schema
+       to generate psuedo-random orderings of your docs for sorting
+       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 differend psuedo-random orderings of documents,
+       for the same version of the index, use a dynamicField and
+       change the name
+   -->
+  <fieldType name="random" class="solr.RandomSortField" indexed="true" />
 
-    <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
-         is a more restricted form of the canonical representation of dateTime
-         http://www.w3.org/TR/xmlschema-2/#dateTime    
-         The trailing "Z" designates UTC time and is mandatory.
-         Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
-         All other components are mandatory.
-
-         Expressions can also be used to denote calculations that should be
-         performed relative to "NOW" to determine the value, ie...
-
-               NOW/HOUR
-                  ... Round to the start of the current hour
-               NOW-1DAY
-                  ... Exactly 1 day prior to now
-               NOW/DAY+6MONTHS+3DAYS
-                  ... 6 months and 3 days in the future from the start of
-                      the current day
-                      
-         Consult the TrieDateField javadocs for more information.
+  <!-- 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
+  <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.MockTokenizerFactory"/>
+    </analyzer>
+  </fieldType>
+
+  <!-- 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.
+      Duplicate tokens at the same position (which may result from Stemmed Synonyms or
+      WordDelim parts) are removed.
+      -->
+  <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <!-- in this example, we will only use synonyms at query time
+      <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
       -->
-    <fieldType name="date" class="solr.TrieDateField" sortMissingLast="true" omitNorms="true"/>
-
-
-    <!-- The "RandomSortField" is not used to store or search any
-         data.  You can declare fields of this type it in your schema
-         to generate psuedo-random orderings of your docs for sorting 
-         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 differend psuedo-random orderings of documents,
-         for the same version of the index, use a dynamicField and
-         change the name
-     -->
-    <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
-    <fieldType name="text_greek" class="solr.TextField">
-      <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
-    </fieldType>
+      <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"/>
+      <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.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"/>
+      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+    </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="textTight" class="solr.TextField" positionIncrementGap="100" >
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <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"/>
+      <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.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"/>
+      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+      <filter class="solr.EnglishMinimalStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+    </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
     -->
-
-    <!-- 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.MockTokenizerFactory"/>
-      </analyzer>
-    </fieldType>
-
-    <!-- A text field that uses WordDelimiterFilter 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.
-        Duplicate tokens at the same position (which may result from Stemmed Synonyms or
-        WordDelim parts) are removed.
+  <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
         -->
-    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
-      <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"/>
+      <tokenizer class="solr.MockTokenizerFactory" pattern="keyword"/>
+      <!-- The LowerCase TokenFilter does what you expect, which can be
+           when you want your sorting to be case insensitive
         -->
-        <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.LowerCaseFilterFactory"/>
-        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-        <filter class="solr.PorterStemFilterFactory"/>
-        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
-      </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.LowerCaseFilterFactory"/>
-        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-        <filter class="solr.PorterStemFilterFactory"/>
-        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
-      </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="textTight" class="solr.TextField" positionIncrementGap="100" >
-      <analyzer>
-        <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.LowerCaseFilterFactory"/>
-        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-        <filter class="solr.EnglishMinimalStemFilterFactory"/>
-        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
-      </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.MockTokenizerFactory" pattern="keyword"/>
-        <!-- 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 refrences to portions of the orriginal
-             string matched by the pattern.
-             
-             See the Java Regular Expression documentation for more
-             infomation on pattern and replacement string syntax.
-             
-             http://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html
-          -->
-        <filter class="solr.PatternReplaceFilterFactory"
-                pattern="([^a-z])" replacement="" replace="all"
-        />
-      </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" class="solr.StrField" /> 
-
-    <fieldType name="file" keyField="id" defVal="1" stored="false" indexed="false" class="solr.ExternalFileField" valType="float"/>
-
-    <fieldType name="sfile" keyField="sfile_s" defVal="1" stored="false" indexed="false" class="solr.ExternalFileField" valType="float"/>
-
-
-    <fieldType name="tint" class="solr.TrieIntField"  omitNorms="true" positionIncrementGap="0"/>
-    <fieldType name="tfloat" class="solr.TrieFloatField"  omitNorms="true" positionIncrementGap="0"/>
-    <fieldType name="tlong" class="solr.TrieLongField"  omitNorms="true" positionIncrementGap="0"/>
-    <fieldType name="tdouble" class="solr.TrieDoubleField" omitNorms="true" positionIncrementGap="0"/>
-    <fieldType name="tdouble4" class="solr.TrieDoubleField" precisionStep="4" omitNorms="true" positionIncrementGap="0"/>
-    <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" positionIncrementGap="0"/>
-
-
-    <fieldType name="tints" class="solr.TrieIntField" omitNorms="true" positionIncrementGap="0" precisionStep="0" multiValued="true" />
-    <fieldType name="tfloats" class="solr.TrieFloatField" omitNorms="true" positionIncrementGap="0" precisionStep="0" multiValued="true"/>
-    <fieldType name="tlongs" class="solr.TrieLongField" omitNorms="true" positionIncrementGap="0" precisionStep="0" multiValued="true"/>
-    <fieldType name="tdoubles" class="solr.TrieDoubleField" omitNorms="true" positionIncrementGap="0" precisionStep="0" multiValued="true" />
-    <fieldType name="tdates" class="solr.TrieDateField" omitNorms="true" positionIncrementGap="0" precisionStep="0" multiValued="true" />
-
-    <!-- Poly field -->
-    <fieldType name="xy" class="solr.PointType" dimension="2" subFieldType="double"/>
-    <fieldType name="xyd" class="solr.PointType" dimension="2" subFieldSuffix="*_d"/>
-    <fieldType name="geohash" class="solr.GeoHashField"/>
-
-    <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
-
-    <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multi
-valued. -->
-    <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
-
-     <!-- These should pass right through and insure that we can declare external field types -->
-    <fieldType name="eff_float" keyField="id" defVal="0"
-               stored="false" indexed="true"
-               class="solr.ExternalFileField" valType="float"/>
-
-    <fieldType name="eff_tfloat" keyField="eff_ti" defVal="0"
-               stored="false" indexed="true"
-               class="solr.ExternalFileField" valType="tfloat"/>
-
-    <!-- Be sure that the valType can be optional Since valType has done nothing up until now, this is preferred -->
-    <fieldType name="eff_none" keyField="id" defVal="0"
-               stored="false" indexed="true"
-               class="solr.ExternalFileField"/>
-
-    <fieldType name="text_no_analyzer" stored="false" indexed="true" class="solr.TextField" />
-
-    <fieldType name="text_length" class="solr.TextField">
-      <analyzer>
-        <tokenizer class="solr.StandardTokenizerFactory"/>
-        <filter class="solr.StandardFilterFactory"/>
-        <filter class="solr.LowerCaseFilterFactory"/>
-        <filter class="solr.LengthFilterFactory" min="2" max="32768"/>
-      </analyzer>
-    </fieldType>  
-
-
-    <!-- EnumType -->
-    <fieldType name="severityType" class="solr.EnumField" enumsConfig="enumsConfig.xml" enumName="severity"/>
-
-   <!-- Valid attributes for fields:
-     name: mandatory - the name for the field
-     type: mandatory - the name of a previously defined type from a fieldType
-     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.
-     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.
+      <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 refrences to portions of the orriginal
+           string matched by the pattern.
+
+           See the Java Regular Expression documentation for more
+           infomation on pattern and replacement string syntax.
+
+           http://docs.oracle.com/javase/8/docs/api/java/util/regex/package-summary.html
+        -->
+      <filter class="solr.PatternReplaceFilterFactory"
+              pattern="([^a-z])" replacement="" replace="all"
+      />
+    </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" class="solr.StrField" />
 
-   <!-- for testing, a type that does a transform to see if it's correctly done everywhere -->
-   <field name="id" type="float" indexed="true" stored="true" required="true" />
-   <field name="text" type="text" indexed="true" stored="false" />
-
-   <!-- Test a point field for distances -->
-   <field name="point" type="xy" indexed="true" stored="true" multiValued="false"/>
-   <field name="pointD" type="xyd" indexed="true" stored="true" multiValued="false"/>
-
-   <field name="point_hash" type="geohash" indexed="true" stored="true" multiValued="false"/>
-
-   <field name="signatureField" type="string" indexed="true" stored="false"/>
-
-   <field name="eff_trie" type="eff_tfloat" />
-
-   <field name="text_no_analyzer" type="text_no_analyzer" indexed="true" />
-
-   <field name="_version_" type="long" indexed="true" stored="true" multiValued="false" />
-
-   <field name="cat" type="string" indexed="true" stored="true" multiValued="true"/>
-   <field name="cat_docValues" type="string"  indexed="true" stored="true" docValues="true" multiValued="true" />
-   <field name="cat_intDocValues" type="int"  indexed="true" stored="true" docValues="true" multiValued="true" />
-   <field name="cat_floatDocValues" type="float"  indexed="true" stored="true" docValues="true" multiValued="true" />
-   <field name="cat_length" type="text_length" indexed="true" stored="true" multiValued="true"/>
-
-
-   <!-- EnumType -->
-   <field name="severity" type="severityType" indexed="true" stored="true" multiValued="false"/>
-
-   <!-- Dynamic field definitions.  If a field name is not found, dynamicFields
-        will be used if the name matches any of the patterns.
-        RESTRICTION: the glob-like pattern in the name attribute must have
-        a "*" only at the start or the end.
-        EXAMPLE:  name="*_i" will match any field ending in _i (like myid_i, z_i)
-        Longer patterns will be matched first.  if equal size patterns
-        both match, the first appearing in the schema will be used.  -->
-   <dynamicField name="*_s"    type="string"  indexed="true"  stored="true"/>
-   <dynamicField name="*_s_dv"  type="string"  indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_ss"    type="string"  indexed="true"  stored="true" multiValued="true"/>
-   <dynamicField name="*_sS"   type="string"  indexed="false" stored="true"/>
-   <dynamicField name="*_i"    type="${solr.tests.intClass:pint}"    indexed="true"  stored="true"/>
-   <dynamicField name="*_ii"   type="int"    indexed="true"  stored="true" multiValued="true"/>
-   <dynamicField name="*_l"    type="${solr.tests.longClass:plong}"   indexed="true"  stored="true"/>
-   <dynamicField name="*_f"    type="${solr.tests.floatClass:pfloat}"  indexed="true"  stored="true"/>
-   <dynamicField name="*_d"    type="${solr.tests.doubleClass:pdouble}" indexed="true"  stored="true"/>
-
-   <dynamicField name="*_ti"      type="tint"    indexed="true"  stored="true"/>
-   <dynamicField name="*_ti_dv"   type="tint"    indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_ti_ni_dv"   type="tint"    indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tl"      type="tlong"   indexed="true"  stored="true"/>
-   <dynamicField name="*_tl_dv"    type="tlong"   indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tl_ni_dv"   type="tlong"   indexed="false"  stored="true" docValues="true"/>
-   <dynamicField name="*_tf"      type="tfloat"  indexed="true"  stored="true"/>
-   <dynamicField name="*_tf_dv"    type="tfloat"  indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tf_ni_dv"   type="tfloat"  indexed="false"  stored="true" docValues="true"/>
-   <dynamicField name="*_td"      type="tdouble" indexed="true"  stored="true"/>
-   <dynamicField name="*_td_dv"    type="tdouble" indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_td_ni_dv"   type="tdouble" indexed="false"  stored="true" docValues="true"/>
-   <dynamicField name="*_tdt"     type="tdate"   indexed="true"  stored="true"/>
-   <dynamicField name="*_tdt_dv"   type="tdate"   indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tdt_ni_dv"  type="tdate"   indexed="false"  stored="true" docValues="true"/>
-
-   <dynamicField name="*_tis"      type="tints"    indexed="true"  stored="true"/>
-   <dynamicField name="*_tis_dv"    type="tints"    indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tis_ni_dv"  type="tints"    indexed="false"  stored="true" docValues="true"/>
-   <dynamicField name="*_tls"      type="tlongs"   indexed="true"  stored="true"/>
-   <dynamicField name="*_tls_dv"    type="tlongs"   indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tls_ni_dv"  type="tlongs"   indexed="false"  stored="true" docValues="true"/>
-   <dynamicField name="*_tfs"      type="tfloats"  indexed="true"  stored="true"/>
-   <dynamicField name="*_tfs_dv"    type="tfloats"  indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tfs_ni_dv" type="tfloats"  indexed="false"  stored="true" docValues="true"/>
-   <dynamicField name="*_tds"      type="tdoubles" indexed="true"  stored="true"/>
-   <dynamicField name="*_tds_dv"    type="tdoubles" indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tds_ni_dv" type="tdoubles" indexed="false"  stored="true" docValues="true"/>
-   <dynamicField name="*_tdts"     type="tdates"   indexed="true"  stored="true"/>
-   <dynamicField name="*_tdts_dv"   type="tdates"   indexed="true"  stored="true" docValues="true"/>
-   <dynamicField name="*_tdts_ni_dv" type="tdates"   indexed="false"  stored="true" docValues="true"/>
-
-   <dynamicField name="*_t"  type="text"    indexed="true"  stored="true"/>
-   <dynamicField name="*_b"  type="boolean" indexed="true"  stored="true"/>
-   <dynamicField name="*_dt" type="date"    indexed="true"  stored="true"/>
-   <dynamicField name="*_ws" type="text_ws" indexed="true"  stored="true"/>
-   
-   <!-- for testing tfidf functions, see TestFunctionQuery.testTFIDFFunctions -->
-   <dynamicField name="*_tfidf"  type="tfidf_text"    indexed="true"  stored="true" />
-   <fieldType name="tfidf_text" class="solr.TextField" positionIncrementGap="100">
-     <similarity class="solr.ClassicSimilarityFactory" />
-     <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.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.LowerCaseFilterFactory"/>
-       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-       <filter class="solr.PorterStemFilterFactory"/>
-       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
-     </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.LowerCaseFilterFactory"/>
-       <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
-       <filter class="solr.PorterStemFilterFactory"/>
-       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
-     </analyzer>
-   </fieldType>
-
-   <!-- For testing payload function -->
-   <dynamicField name="*_dp" type="delimited_payloads" indexed="true" stored="true" multiValued="false"/>
-   <fieldType name="delimited_payloads" class="solr.TextField" positionIncrementGap="100">
-     <analyzer type="index">
-       <tokenizer class="solr.MockTokenizerFactory"/>
-       <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
-     </analyzer>
-     <analyzer type="query">
-       <tokenizer class="solr.MockTokenizerFactory" pattern="keyword"/>
-     </analyzer>
-   </fieldType>
-     
-   <dynamicField name="*_extf" type="file"/>
-   <dynamicField name="*_extfs" type="sfile"/>
-
-   <dynamicField name="*_random" type="random" />
-
-   <!-- uncomment the following to ignore any fields that don't already match an existing 
-        field name or dynamic field, rather than reporting them as an error. 
-        alternately, change the type="ignored" to some other type e.g. "text" if you want 
-        unknown fields indexed and/or stored by default --> 
-   <!--dynamicField name="*" 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>
+  <fieldType name="file" keyField="id" defVal="1" stored="false" indexed="false" class="solr.ExternalFileField" valType="float"/>
+
+  <fieldType name="sfile" keyField="sfile_s" defVal="1" stored="false" indexed="false" class="solr.ExternalFileField" valType="float"/>
+
+
+  <fieldType name="tint" class="solr.TrieIntField"  omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="tfloat" class="solr.TrieFloatField"  omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="tlong" class="solr.TrieLongField"  omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="tdouble" class="solr.TrieDoubleField" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="tdouble4" class="solr.TrieDoubleField" precisionStep="4" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" positionIncrementGap="0"/>
+
+
+  <fieldType name="tints" class="solr.TrieIntField" omitNorms="true" positionIncrementGap="0" precisionStep="0" multiValued="true" />
+  <fieldType name="tfloats" class="solr.TrieFloatField" omitNorms="true" positionIncrementGap="0" precisionStep="0" multiValued="true"/>
+  <fieldType name="tlongs" class="solr.TrieLongField" omitNorms="true" positionIncrementGap="0" precisionStep="0" multiValued="true"/>
+  <fieldType name="tdoubles" class="solr.TrieDoubleField" omitNorms="true" positionIncrementGap="0" precisionStep="0" multiValued="true" />
+  <fieldType name="tdates" class="solr.TrieDateField" omitNorms="true" positionIncrementGap="0" precisionStep="0" multiValued="true" />
+
+  <!-- Poly field -->
+  <fieldType name="xy" class="solr.PointType" dimension="2" subFieldType="double"/>
+  <fieldType name="xyd" class="solr.PointType" dimension="2" subFieldSuffix="*_d"/>
+  <fieldType name="geohash" class="solr.GeoHashField"/>
+
+  <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
+
+  <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multi
+valued. -->
+  <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
+
+  <!-- These should pass right through and insure that we can declare external field types -->
+  <fieldType name="eff_float" keyField="id" defVal="0"
+             stored="false" indexed="true"
+             class="solr.ExternalFileField" valType="float"/>
+
+  <fieldType name="eff_tfloat" keyField="eff_ti" defVal="0"
+             stored="false" indexed="true"
+             class="solr.ExternalFileField" valType="tfloat"/>
+
+  <!-- Be sure that the valType can be optional Since valType has done nothing up until now, this is preferred -->
+  <fieldType name="eff_none" keyField="id" defVal="0"
+             stored="false" indexed="true"
+             class="solr.ExternalFileField"/>
+
+  <fieldType name="text_no_analyzer" stored="false" indexed="true" class="solr.TextField" />
+
+  <fieldType name="text_length" class="solr.TextField">
+    <analyzer>
+      <tokenizer class="solr.StandardTokenizerFactory"/>
+      <filter class="solr.StandardFilterFactory"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.LengthFilterFactory" min="2" max="32768"/>
+    </analyzer>
+  </fieldType>
+
+
+  <!-- EnumType -->
+  <fieldType name="severityType" class="solr.EnumField" enumsConfig="enumsConfig.xml" enumName="severity"/>
+
+  <!-- Valid attributes for fields:
+    name: mandatory - the name for the field
+    type: mandatory - the name of a previously defined type from a fieldType
+    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.
+    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.
+  -->
+
+  <!-- for testing, a type that does a transform to see if it's correctly done everywhere -->
+  <field name="id" type="float" indexed="true" stored="true" required="true" />
+  <field name="text" type="text" indexed="true" stored="false" />
+
+  <!-- Test a point field for distances -->
+  <field name="point" type="xy" indexed="true" stored="true" multiValued="false"/>
+  <field name="pointD" type="xyd" indexed="true" stored="true" multiValued="false"/>
+
+  <field name="point_hash" type="geohash" indexed="true" stored="true" multiValued="false"/>
+
+  <field name="signatureField" type="string" indexed="true" stored="false"/>
+
+  <field name="eff_trie" type="eff_tfloat" />
+
+  <field name="text_no_analyzer" type="text_no_analyzer" indexed="true" />
+
+  <field name="_version_" type="${solr.tests.longClass:plong}" indexed="true" stored="true" multiValued="false" />
+
+  <field name="cat" type="string" indexed="true" stored="true" multiValued="true"/>
+  <field name="cat_docValues" type="string"  indexed="true" stored="true" docValues="true" multiValued="true" />
+  <field name="cat_intDocValues" type="${solr.tests.intClass:pint}"  indexed="true" stored="true" docValues="true" multiValued="true" />
+  <field name="cat_floatDocValues" type="${solr.tests.floatClass:pfloat}"  indexed="true" stored="true" docValues="true" multiValued="true" />
+  <field name="cat_length" type="text_length" indexed="true" stored="true" multiValued="true"/>
+
+
+  <!-- EnumType -->
+  <field name="severity" type="severityType" indexed="true" stored="true" multiValued="false"/>
+
+  <!-- Dynamic field definitions.  If a field name is not found, dynamicFields
+       will be used if the name matches any of the patterns.
+       RESTRICTION: the glob-like pattern in the name attribute must have
+       a "*" only at the start or the end.
+       EXAMPLE:  name="*_i" will match any field ending in _i (like myid_i, z_i)
+       Longer patterns will be matched first.  if equal size patterns
+       both match, the first appearing in the schema will be used.  -->
+  <dynamicField name="*_s"    type="string"  indexed="true"  stored="true"/>
+  <dynamicField name="*_s_dv"  type="string"  indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_ss"    type="string"  indexed="true"  stored="true" multiValued="true"/>
+  <dynamicField name="*_sS"   type="string"  indexed="false" stored="true"/>
+  <dynamicField name="*_i"    type="${solr.tests.intClass:pint}"    indexed="true"  stored="true"/>
+  <dynamicField name="*_ii"   type="${solr.tests.intClass:pint}"    indexed="true"  stored="true" multiValued="true"/>
+  <dynamicField name="*_l"    type="${solr.tests.longClass:plong}"   indexed="true"  stored="true"/>
+  <dynamicField name="*_f"    type="${solr.tests.floatClass:pfloat}"  indexed="true"  stored="true"/>
+  <dynamicField name="*_d"    type="${solr.tests.doubleClass:pdouble}" indexed="true"  stored="true"/>
+
+  <dynamicField name="*_ti"      type="tint"    indexed="true"  stored="true"/>
+  <dynamicField name="*_ti_dv"   type="tint"    indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_ti_ni_dv"   type="tint"    indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_tl"      type="tlong"   indexed="true"  stored="true"/>
+  <dynamicField name="*_tl_dv"    type="tlong"   indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_tl_ni_dv"   type="tlong"   indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_tf"      type="tfloat"  indexed="true"  stored="true"/>
+  <dynamicField name="*_tf_dv"    type="tfloat"  indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_tf_ni_dv"   type="tfloat"  indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_td"      type="tdouble" indexed="true"  stored="true"/>
+  <dynamicField name="*_td_dv"    type="tdouble" indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_td_ni_dv"   type="tdouble" indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_tdt"     type="tdate"   indexed="true"  stored="true"/>
+  <dynamicField name="*_tdt_dv"   type="tdate"   indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_tdt_ni_dv"  type="tdate"   indexed="false"  stored="true" docValues="true"/>
+
+  <dynamicField name="*_tis"      type="tints"    indexed="true"  stored="true"/>
+  <dynamicField name="*_tis_dv"    type="tints"    indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_tis_ni_dv"  type="tints"    indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_tls"      type="tlongs"   indexed="true"  stored="true"/>
+  <dynamicField name="*_tls_dv"    type="tlongs"   indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_tls_ni_dv"  type="tlongs"   indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_tfs"      type="tfloats"  indexed="true"  stored="true"/>
+  <dynamicField name="*_tfs_dv"    type="tfloats"  indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_tfs_ni_dv" type="tfloats"  indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_tds"      type="tdoubles" indexed="true"  stored="true"/>
+  <dynamicField name="*_tds_dv"    type="tdoubles" indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_tds_ni_dv" type="tdoubles" indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_tdts"     type="tdates"   indexed="true"  stored="true"/>
+  <dynamicField name="*_tdts_dv"   type="tdates"   indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_tdts_ni_dv" type="tdates"   indexed="false"  stored="true" docValues="true"/>
+
+  <!-- Test point fields explicitly -->
+  <dynamicField name="*_i_p"      type="pint"    indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_is_p"      type="pint"    indexed="true"  stored="true" docValues="true" multiValued="true"/>
+  <dynamicField name="*_i_ni_p"   type="pint"    indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_is_ni_p"   type="pint"    indexed="false"  stored="true" docValues="true" multiValued="true"/>
+  <dynamicField name="*_l_p"      type="plong"    indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_ls_p"      type="plong"    indexed="true"  stored="true" docValues="true" multiValued="true"/>
+  <dynamicField name="*_l_ni_p"   type="plong"    indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_ls_ni_p"   type="plong"    indexed="false"  stored="true" docValues="true" multiValued="true"/>
+  <dynamicField name="*_f_p"      type="pfloat"    indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_fs_p"      type="pfloat"    indexed="true"  stored="true" docValues="true" multiValued="true"/>
+  <dynamicField name="*_f_ni_p"   type="pfloat"    indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_fs_ni_p"   type="pfloat"    indexed="false"  stored="true" docValues="true" multiValued="true"/>
+  <dynamicField name="*_d_p"      type="pdouble"    indexed="true"  stored="true" docValues="true"/>
+  <dynamicField name="*_ds_p"      type="pdouble"    indexed="true"  stored="true" docValues="true" multiValued="true"/>
+  <dynamicField name="*_d_ni_p"   type="pdouble"    indexed="false"  stored="true" docValues="true"/>
+  <dynamicField name="*_ds_ni_p"   type="pdouble"    indexed="false"  stored="true" docValues="true" multiValued="true"/>
+
+  <dynamicField name="*_t"  type="text"    indexed="true"  stored="true"/>
+  <dynamicField name="*_b"  type="boolean" indexed="true"  stored="true"/>
+  <dynamicField name="*_dt" type="${solr.tests.dateClass:pdate}"    indexed="true"  stored="true"/>
+  <dynamicField name="*_ws" type="text_ws" indexed="true"  stored="true"/>
+
+  <!-- for testing tfidf functions, see TestFunctionQuery.testTFIDFFunctions -->
+  <dynamicField name="*_tfidf"  type="tfidf_text"    indexed="true"  stored="true" />
+  <fieldType name="tfidf_text" class="solr.TextField" positionIncrementGap="100">
+    <similarity class="solr.ClassicSimilarityFactory" />
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <!-- in this example, we will only use synonyms at query time
+           <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
+      -->
+      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
+      <filter class="solr.WordDelimiterGraphFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
+      <filter class="solr.LowerCaseFilterFactory"/>
+      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+      <filter class="solr.FlattenGraphFilterFactory"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <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"/>
+      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
+      <filter class="solr.PorterStemFilterFactory"/>
+      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
+    </analyzer>
+  </fieldType>
+
+  <!-- For testing payload function -->
+  <dynamicField name="*_dp" type="delimited_payloads" indexed="true" stored="true" multiValued="false"/>
+  <fieldType name="delimited_payloads" class="solr.TextField" positionIncrementGap="100">
+    <analyzer type="index">
+      <tokenizer class="solr.MockTokenizerFactory"/>
+      <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
+    </analyzer>
+    <analyzer type="query">
+      <tokenizer class="solr.MockTokenizerFactory" pattern="keyword"/>
+    </analyzer>
+  </fieldType>
+
+  <dynamicField name="*_extf" type="file"/>
+  <dynamicField name="*_extfs" type="sfile"/>
+
+  <dynamicField name="*_random" type="random" />
+
+  <!-- uncomment the following to ignore any fields that don't already match an existing
+       field name or dynamic field, rather than reporting them as an error.
+       alternately, change the type="ignored" to some other type e.g. "text" if you want
+       unknown fields indexed and/or stored by default -->
+  <!--dynamicField name="*" 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>
+
+  <!-- field for the QueryParser to use when an explicit fieldname is absent -->
+  <defaultSearchField>text</defaultSearchField>
 
- <!-- field for the QueryParser to use when an explicit fieldname is absent -->
- <defaultSearchField>text</defaultSearchField>
- 
-</schema>
+</schema>
\ No newline at end of file