<?xml version="1.0" encoding="UTF-8"?>
<schema name="ace-schema" version="1.6">
  <uniqueKey>id</uniqueKey>
  <!-- KEY! -->
  <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
  <!-- /KEY! -->
  <!-- other sys fields -->
  <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="true" stored="false"/>
  <!-- ACE revision, to enable distributed indexing -->
  <field name="aceRevision_l" type="long" stored="true" indexed="true"/>
  <!-- /other sys fields -->

  <!-- Used by Code -->
  <field name="text_en" type="text_en" indexed="true" multiValued="true" stored="false"/>
  <!-- /Used by Code -->
  <!-- Dynamic fields  -->
  <dynamicField name="*_ss" type="strings" indexed="true" stored="false"/>
  <dynamicField name="*_s" type="string" indexed="true" stored="false"/>
  <dynamicField name="*_dt" type="date" indexed="true" stored="false"/>
  <dynamicField name="*_drange" type="date_range" indexed="true" stored="false"/>
  <dynamicField name="*_l" type="long" indexed="true" stored="false"/>
  <dynamicField name="*_i" type="int" indexed="true" stored="false"/>
  <dynamicField name="*_b" type="boolean" indexed="true" stored="false"/>
  <dynamicField name="*_bs" type="booleans" indexed="true" stored="false"/>
  <dynamicField name="*_txt" type="text_general" indexed="true" stored="false"/>
  <dynamicField name="*_lc" type="lowercase_ws" multiValued="true" stored="false"/>
  <!-- /Dynamic fields  -->

  <copyField source="*" dest="_text_"/>
  <copyField source="*_txt_en" dest="text_en"/>
  <copyField source="tag_dimension*" dest="text_en"/>

  <!-- Type definitions -->
  <fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true"/>
  <fieldType name="strings" class="solr.StrField" sortMissingLast="true" docValues="true" multiValued="true"/>
  <fieldType name="date_range" class="solr.DateRangeField"/>
  <fieldType name="date" class="solr.TrieDateField" positionIncrementGap="0" docValues="true" precisionStep="0"/>
  <fieldType name="long" class="solr.TrieLongField" positionIncrementGap="0" docValues="true" precisionStep="0"/>
  <fieldType name="int" class="solr.TrieIntField" positionIncrementGap="0" docValues="true" precisionStep="0"/>
  <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
  <fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/>

  <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.EnglishPossessiveFilterFactory"/>
      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
      <filter class="solr.PorterStemFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <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.LowerCaseFilterFactory"/>
      <filter class="solr.EnglishPossessiveFilterFactory"/>
      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
      <filter class="solr.PorterStemFilterFactory"/>
    </analyzer>
  </fieldType>
  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
    <analyzer type="index">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <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.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>
  <fieldType name="lowercase_ws" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="/" replacement=" "/>
      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>
</schema>
