<?xml version="1.0" encoding="UTF-8"?>
<!-- Solr managed schema - automatically generated - DO NOT EDIT -->
<schema name="example-basic" version="1.6">
  <uniqueKey>id</uniqueKey>
  <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>
  <fieldType name="binary" class="solr.BinaryField"/>
  <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
  <fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/>
  <fieldType name="date" class="solr.TrieDateField" positionIncrementGap="0" docValues="true" precisionStep="0"/>
  <fieldType name="dates" class="solr.TrieDateField" positionIncrementGap="0" docValues="true" multiValued="true" precisionStep="0"/>
  <fieldType name="daterange" class="solr.DateRangeField" />
  <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>
  <fieldType name="double" class="solr.TrieDoubleField" positionIncrementGap="0" docValues="true" precisionStep="0"/>
  <fieldType name="doubles" class="solr.TrieDoubleField" positionIncrementGap="0" docValues="true" multiValued="true" precisionStep="0"/>
  <fieldType name="float" class="solr.TrieFloatField" positionIncrementGap="0" docValues="true" precisionStep="0"/>
  <fieldType name="floats" class="solr.TrieFloatField" positionIncrementGap="0" docValues="true" multiValued="true" precisionStep="0"/>
  <fieldType name="ignored" class="solr.StrField" indexed="false" stored="false" docValues="false" multiValued="true"/>
  <!-- revised from default to sort missing last -->
  <fieldType name="int" class="solr.TrieIntField" positionIncrementGap="0" docValues="true" precisionStep="0" sortMissingLast="true"/>
  <fieldType name="ints" class="solr.TrieIntField" positionIncrementGap="0" docValues="true" multiValued="true" precisionStep="0"/>
  <fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true"/>
  <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType" geo="true" maxDistErr="0.001" distErrPct="0.025" distanceUnits="kilometers"/>
  <fieldType name="long" class="solr.TrieLongField" positionIncrementGap="0" docValues="true" precisionStep="0"/>
  <fieldType name="longs" class="solr.TrieLongField" positionIncrementGap="0" docValues="true" multiValued="true" precisionStep="0"/>
  <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <tokenizer class="solr.KeywordTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>
  <fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
  <fieldType name="pdates" class="solr.DatePointField" docValues="true" multiValued="true"/>
  <fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/>
  <fieldType name="pdoubles" class="solr.DoublePointField" docValues="true" multiValued="true"/>
  <fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/>
  <fieldType name="pfloats" class="solr.FloatPointField" docValues="true" multiValued="true"/>
  <fieldType name="phonetic_en" class="solr.TextField" indexed="true" stored="false">
    <analyzer>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
    </analyzer>
  </fieldType>
  <fieldType name="pint" class="solr.IntPointField" docValues="true"/>
  <fieldType name="pints" class="solr.IntPointField" docValues="true" multiValued="true"/>
  <fieldType name="plong" class="solr.LongPointField" docValues="true"/>
  <fieldType name="plongs" class="solr.LongPointField" docValues="true" multiValued="true"/>
  <fieldType name="point" class="solr.PointType" subFieldSuffix="_d" dimension="2"/>
  <fieldType name="random" class="solr.RandomSortField" indexed="true"/>
  <fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true"/>
  <fieldType name="strings" class="solr.StrField" sortMissingLast="true" docValues="true" multiValued="true"/>
  <fieldType name="tdate" class="solr.TrieDateField" positionIncrementGap="0" docValues="true" precisionStep="6"/>
  <fieldType name="tdates" class="solr.TrieDateField" positionIncrementGap="0" docValues="true" multiValued="true" precisionStep="6"/>
  <fieldType name="tdouble" class="solr.TrieDoubleField" positionIncrementGap="0" docValues="true" precisionStep="8"/>
  <fieldType name="tdoubles" class="solr.TrieDoubleField" positionIncrementGap="0" docValues="true" multiValued="true" precisionStep="8"/>
  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
    <analyzer type="index">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.ICUFoldingFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.ICUFoldingFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>

  <!-- text field with html stripping first -->
    <fieldType name="html_text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
    <analyzer type="index">
      <charFilter class="solr.HTMLStripCharFilterFactory"/>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.ICUFoldingFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.ICUFoldingFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>

   <!-- custom text field for transcriptions/translations; html stripping, bigram, etc -->
    <fieldType name="transcription_text" class="solr.TextField" positionIncrementGap="100" multiValued="true">
    <analyzer type="index">
      <charFilter class="solr.HTMLStripCharFilterFactory"/>
      <!-- Strip transcription sigla and unwanted Arabic connectors from passed text, for indexing,
        so that users can search for words otherwise interrupted by transcription meta-typography.

        the following sigla are used to indicate various kinds of additions or substitutions:
        <> = erroneous omission; \/ or \\// = interlinear addition; () = expanded abbreviation;
        [] = restored lacuna; 〚〛 = restored deletion
      -->

      <!-- the Arabic connector tatweel/kasheeda (ـ U+0640) is sometimes used purely for
      typographical reasons before and after sigla in the middle of words with insertions.
      (it is also used as a normal part of words, but those cases should not be cleaned.) -->
      <charFilter class="solr.PatternReplaceCharFilterFactory"
                  pattern="\u0640[\u003c\u003e\\\/\(\)\[\]〚〛]+\u0640" replacement="" />
      <!-- sometimes connector will appear only before or only after a siglum; cleaned separately
      to ensure no stray tatweel in the more common case -->
      <charFilter class="solr.PatternReplaceCharFilterFactory"
                  pattern="([\u003c\u003e\\\/\(\)\[\]〚〛]\u0640)|(\u0640[\u003c\u003e\\\/\(\)\[\]〚〛])"
                  replacement="" />
      <!-- additional sigla: erroneous/superfluous characters surrounded by {}; dot with space -->
      <charFilter class="solr.PatternReplaceCharFilterFactory"
                  pattern="([\u003c\u003e\\\/\(\)\[\]〚〛])|(\{\S+\})|( \.)|(\. )" replacement="" />
      <!-- the pipe | symbol is used to indicate the edge of a manuscript, and may be used between
      two words, or in the middle of a word. since there is no way to tell which one is
      happening without NLP, we store both in the cleaned text (i.e. "A | B" -> "A B AB") -->
      <charFilter class="solr.PatternReplaceCharFilterFactory"
                  pattern="(\S+) \| (\S+)" replacement="$1 $2 $1$2" />
      <!--  in some cases, transcriptions include the pipe in the middle of a word using A|B; simply
      remove the remaining pipes to handle this -->
      <charFilter class="solr.PatternReplaceCharFilterFactory"
                  pattern="\|" replacement="" />
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.ICUFoldingFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="20" />
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <!-- use same charFilters on query, to highlight matches when query term contains sigla -->
      <charFilter class="solr.PatternReplaceCharFilterFactory"
                  pattern="\u0640[\u003c\u003e\\\/\(\)\[\]〚〛]+\u0640" replacement="" />
      <charFilter class="solr.PatternReplaceCharFilterFactory"
                  pattern="([\u003c\u003e\\\/\(\)\[\]〚〛]\u0640)|(\u0640[\u003c\u003e\\\/\(\)\[\]〚〛])"
                  replacement="" />
      <charFilter class="solr.PatternReplaceCharFilterFactory"
                  pattern="([\u003c\u003e\\\/\(\)\[\]〚〛])|(\{\S+\})|( \.)|(\. )" replacement="" />
      <charFilter class="solr.PatternReplaceCharFilterFactory"
                  pattern="(\S+) \| (\S+)" replacement="$1 $2 $1$2" />
      <charFilter class="solr.PatternReplaceCharFilterFactory"
                  pattern="\|" replacement="" />
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.ICUFoldingFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>

  <!-- natural sort field; adapted from https://stackoverflow.com/a/39701503 -->
  <fieldType name="natural_sort" class="solr.TextField" sortMissingLast="false" omitNorms="true">
    <analyzer>
      <!-- treat field as a single token -->
      <tokenizer class="solr.KeywordTokenizerFactory"/>
      <!-- lower case everything for case-insensitive sort -->
      <filter class="solr.LowerCaseFilterFactory" />
      <!-- strip whitespace -->
      <filter class="solr.TrimFilterFactory" />
      <!-- Left-pad numbers with zeroes -->
      <filter class="solr.PatternReplaceFilterFactory"
              pattern="(\d+)" replacement="00000$1" replace="all" />
      <!-- Left-trim zeroes to produce 6 digit numbers -->
      <filter class="solr.PatternReplaceFilterFactory"
              pattern="0*([0-9]{6,})" replacement="$1" replace="all" />
    </analyzer>
  </fieldType>

  <!-- A text field with defaults appropriate for English: it
         tokenizes with StandardTokenizer, removes English stop words
         (lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
         finally applies Porter's stemming.  The query time analyzer
         also applies synonyms from synonyms.txt. -->
    <dynamicField name="*_txt_en" type="text_en"  indexed="true"  stored="true"/>
    <dynamicField name="*_txt_ens" type="text_en"  indexed="true"  stored="true" multiValued="true"/>
    <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        <filter class="solr.FlattenGraphFilterFactory"/>
        -->
        <!-- Case insensitive stop word removal.
        -->
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="lang/stopwords_en.txt"
            />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishPossessiveFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
        <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
	      -->
        <filter class="solr.PorterStemFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="lang/stopwords_en.txt"
        />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishPossessiveFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
        <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
	      -->
        <filter class="solr.PorterStemFilterFactory"/>
      </analyzer>
    </fieldType>

  <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    </analyzer>
  </fieldType>
  <fieldType name="text_lettersnumbers" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <!-- only capture letters and numbers -->
      <tokenizer class="solr.PatternTokenizerFactory" pattern="[A-Za-z0-9]*" group="0"/>
    </analyzer>
  </fieldType>

  <fieldType name="text_bigram" class="solr.TextField" positionIncrementGap="100">
      <!-- apply ngram on index only, not on query;
           apply unicode normalization and case folding for both -->
      <analyzer type="index">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.ICUFoldingFilterFactory"/>
        <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="8"/>
      </analyzer>
      <analyzer type="query">
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
         <filter class="solr.ICUFoldingFilterFactory"/>
      </analyzer>
  </fieldType>

  <!-- english text with bigram filter -->
  <dynamicField name="*_en_bigram" type="text_en_bigram" indexed="true"  stored="true" />
  <fieldType name="text_en_bigram" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <!-- preserve shelfmark abbreviations that look like booleans -->
       <charFilter class="solr.PatternReplaceCharFilterFactory"
             pattern="(\bBL)\s+(OR\b)" replacement="$1 or"/>

        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        <filter class="solr.FlattenGraphFilterFactory"/>
        -->
        <!-- Case insensitive stop word removal.
        -->
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="lang/stopwords_en.txt"
            />
        <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.ICUFoldingFilterFactory"/>        
        <filter class="solr.EnglishPossessiveFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="12" preserveOriginal="true" />
        <!-- 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">
        <charFilter class="solr.PatternReplaceCharFilterFactory"
             pattern="(\bBL)\s+(OR\b)" replacement="$1 or"/>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="lang/stopwords_en.txt"
        />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ICUFoldingFilterFactory"/>        
        <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>

    <!-- Simple text field with no stemming, used to find exact matches. -->
    <fieldType name="text_nostem" class="solr.TextField">
      <analyzer>
        <charFilter class="solr.HTMLStripCharFilterFactory"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ICUFoldingFilterFactory"/>
        <!-- ensure hyphenated words are joined together, even if they were separated by whitespace -->
        <filter class="solr.HyphenatedWordsFilterFactory"/>
        <!-- remove all punctuation from the end of tokens -->
        <filter class="solr.PatternReplaceFilterFactory" pattern="[\p{Punct}\p{IsPunctuation}]$" replacement=""/>
      </analyzer>
    </fieldType>

    <!-- un-analyzed field for regex searches. TextField required due to KeywordField size limitations -->
    <fieldType name="text_regex" class="solr.TextField">
      <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
      </analyzer>
    </fieldType>

  <fieldType name="tfloat" class="solr.TrieFloatField" positionIncrementGap="0" docValues="true" precisionStep="8"/>
  <fieldType name="tfloats" class="solr.TrieFloatField" positionIncrementGap="0" docValues="true" multiValued="true" precisionStep="8"/>
  <fieldType name="tint" class="solr.TrieIntField" positionIncrementGap="0" docValues="true" precisionStep="8"/>
  <fieldType name="tints" class="solr.TrieIntField" positionIncrementGap="0" docValues="true" multiValued="true" precisionStep="8"/>
  <fieldType name="tlong" class="solr.TrieLongField" positionIncrementGap="0" docValues="true" precisionStep="8"/>
  <fieldType name="tlongs" class="solr.TrieLongField" positionIncrementGap="0" docValues="true" multiValued="true" precisionStep="8"/>
  <field name="_root_" type="string" docValues="false" indexed="true" stored="false"/>
  <field name="_text_" type="text_general" multiValued="true" indexed="true" stored="false"/>
  <field name="_version_" type="long" indexed="false" stored="false"/>
  <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
  <!-- local fields -->
  <field name="last_modified" type="pdate" multiValued="false" indexed="true" required="true" stored="true" default="NOW"/>

  <copyField source="shelfmark_s" dest="shelfmark_bigram" maxChars="30000" />
  <copyField source="shelfmark_s" dest="shelfmark_textnum" maxChars="30000" />
  <copyField source="shelfmark_s" dest="shelfmark_natsort" maxChars="30000" />
  <copyField source="shelfmark_s" dest="shelfmark_regex" maxChars="30000" />
  <!-- individual shelfmarks -->
  <copyField source="fragment_shelfmark_ss" dest="shelfmark_t" maxChars="30000" />
  <copyField source="fragment_shelfmark_ss" dest="shelfmark_textnum" maxChars="30000" />
  <copyField source="fragment_shelfmark_ss" dest="shelfmark_bigram" maxChars="30000" />  
  <copyField source="fragment_shelfmark_ss" dest="shelfmark_regex" maxChars="30000" />
  <!-- old / historic shelfmarks -->
  <copyField source="fragment_old_shelfmark_ss" dest="old_shelfmark_t" maxChars="30000" />
  <copyField source="fragment_old_shelfmark_ss" dest="old_shelfmark_textnum" maxChars="30000" />
  <copyField source="fragment_old_shelfmark_ss" dest="old_shelfmark_bigram" maxChars="30000" />
  <copyField source="fragment_old_shelfmark_ss" dest="old_shelfmark_regex" maxChars="30000" />
  
  <copyField source="tags_ss_lower" dest="tags_t" maxChars="30000" />
  <copyField source="type_s" dest="type_t" maxChars="300" />

  <!-- copy description and transcription to nostem fields for exact matches -->
  <copyField source="description_en_bigram" dest="description_nostem" maxChars="30000" />
  <copyField source="text_transcription" dest="transcription_nostem" maxChars="30000" />

  <!-- copy description and translation to regex fields -->
  <copyField source="description_en_bigram" dest="description_regex" maxChars="30000" />

  <!-- copy entity name fields to text fields -->
  <copyField source="name_s" dest="name_bigram" maxChars="30000" />
  <copyField source="name_s" dest="name_nostem" maxChars="30000" />
  <copyField source="other_names_ss" dest="other_names_bigram" maxChars="30000" />
  <copyField source="other_names_ss" dest="other_names_nostem" maxChars="30000" />

  <dynamicField name="*_descendent_path" type="descendent_path" indexed="true" stored="true"/>
  <dynamicField name="*_ancestor_path" type="ancestor_path" indexed="true" stored="true"/>
  <dynamicField name="ignored_*" type="ignored" multiValued="true"/>
  <dynamicField name="*_s_lower" type="lowercase" indexed="true" stored="true"/>
  <dynamicField name="*_ss_lower" type="lowercase" indexed="true" stored="true" multiValued="true"/>
  <dynamicField name="random_*" type="random"/>
  <dynamicField name="*_point" type="point" indexed="true" stored="true"/>
  <dynamicField name="*_srpt" type="location_rpt" indexed="true" stored="true"/>
  <dynamicField name="*_pdts" type="pdates" indexed="true" stored="true"/>
  <dynamicField name="*_tdts" type="tdates" indexed="true" stored="true"/>
  <dynamicField name="attr_*" type="text_general" multiValued="true" indexed="true" stored="true"/>
  <dynamicField name="*_txt" type="text_general" indexed="true" stored="true"/>
  <dynamicField name="*_dts" type="date" multiValued="true" indexed="true" stored="true"/>
  <dynamicField name="*_pis" type="pints" indexed="true" stored="true"/>
  <dynamicField name="*_pls" type="plongs" indexed="true" stored="true"/>
  <dynamicField name="*_pfs" type="pfloats" indexed="true" stored="true"/>
  <dynamicField name="*_pds" type="pdoubles" indexed="true" stored="true"/>
  <dynamicField name="*_pdt" type="pdate" indexed="true" stored="true"/>
  <dynamicField name="*_tis" type="tints" indexed="true" stored="true"/>
  <dynamicField name="*_tls" type="tlongs" indexed="true" stored="true"/>
  <dynamicField name="*_tfs" type="tfloats" indexed="true" stored="true"/>
  <dynamicField name="*_tds" type="tdoubles" indexed="true" stored="true"/>
  <dynamicField name="*_tdt" type="tdate" indexed="true" stored="true"/>
  <dynamicField name="*_is" type="ints" indexed="true" stored="true"/>
  <dynamicField name="*_ss" type="strings" indexed="true" stored="true"/>
  <dynamicField name="*_ls" type="longs" indexed="true" stored="true"/>
  <dynamicField name="*_bs" type="booleans" indexed="true" stored="true"/>
  <dynamicField name="*_fs" type="floats" indexed="true" stored="true"/>
  <dynamicField name="*_ds" type="doubles" indexed="true" stored="true"/>
  <dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
  <dynamicField name="*_dr" type="daterange" indexed="true" stored="false"/>
  <dynamicField name="*_pi" type="pint" indexed="true" stored="true"/>
  <dynamicField name="*_pl" type="plong" indexed="true" stored="true"/>
  <dynamicField name="*_pf" type="pfloat" indexed="true" stored="true"/>
  <dynamicField name="*_pd" type="pdouble" indexed="true" stored="true"/>
  <dynamicField name="*_ti" type="tint" indexed="true" stored="true"/>
  <dynamicField name="*_tl" type="tlong" indexed="true" stored="true"/>
  <dynamicField name="*_tf" type="tfloat" indexed="true" stored="true"/>
  <dynamicField name="*_td" type="tdouble" indexed="true" stored="true"/>
  <dynamicField name="*_ws" type="text_ws" indexed="true" stored="true"/>
  <dynamicField name="*_textnum" type="text_lettersnumbers" indexed="true" stored="true" multiValued="true"/>
  <dynamicField name="*_bigram" type="text_bigram" indexed="true" stored="true" multiValued="true"/>

  <dynamicField name="*_i" type="int" indexed="true" stored="true"/>
  <dynamicField name="*_s" type="string" indexed="true" stored="true"/>
  <dynamicField name="*_l" type="long" indexed="true" stored="true"/>
  <dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
  <dynamicField name="*_ht" type="html_text_general" indexed="true" stored="true"/>  
  <dynamicField name="*_transcription" type="transcription_text" indexed="true" stored="true"/>  
  <dynamicField name="*_translation" type="transcription_text" indexed="true" stored="true"/>  
  <dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
  <dynamicField name="*_f" type="float" indexed="true" stored="true"/>
  <dynamicField name="*_d" type="double" indexed="true" stored="true"/>
  <dynamicField name="*_p" type="location" indexed="true" stored="true"/>
  <dynamicField name="*_natsort" type="natural_sort" indexed="true" stored="true" sortMissingLast="true"/>
  <dynamicField name="*_nostem" type="text_nostem" indexed="true" stored="true" multiValued="true"/>
  <dynamicField name="*_regex" type="text_regex" indexed="true" stored="true" multiValued="true"/>

</schema>