On Wed, Jul 22, 2009 at 11:35 AM, Grant Ingersoll<gsing...@apache.org> wrote:
>> My initial thoughts are to index each description as a separate field and
>> append the language identifier to the field name, for example, three
>> fields
>> with description_en, description_de, descrtiption_fr.  Is this the best
>> approach or is there a better way?

FWIW, this approach is essentially what we did at the Library of
Congress to support multi-lingual fulltext search in the World Digital
Library [1] webapp. It seems to have paid off pretty well, since we
were able to configure analysis on a per-language basis.

In case you are curious I've attached a copy of our schema.xml to give
you an idea of what we did.

//Ed

[1] http://www.wdl.org/
<?xml version="1.0" encoding="ISO-8859-15"?>
<schema name="example" version="1.1">
  <!-- 
    Note: there are lots more types available, see original schema.xml for
    the full picture. 
  -->
  <types>
    <fieldType name="string" class="solr.StrField" omitNorms="true" sortMissingLast="true"/>
    <fieldType name="integer" class="solr.SortableIntField" omitNorms="true"/>
    <fieldType name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>

    <!--  default -->
    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
    </fieldType>
    <fieldType name="suggest_text_eng" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    <fieldType name="suggest_text_por" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="brazilian-stopwords.txt"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    <fieldType name="suggest_text_fra" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="french-stopwords.txt"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    <fieldType name="suggest_text_spa" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="spanish-stopwords.txt"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    <fieldType name="suggest_text_rus" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="russian-stopwords.txt"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

    <!--  Arabic (based on aramorph) -->
    <fieldType name="text_arabic" class="solr.TextField">
      <analyzer type="index">
        <tokenizer class="solr.ArabicTokenizerFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.ArabicTokenizerFactory"/>
      </analyzer>
    </fieldType>
    <!-- ArabicAnalyser = ArabicTokenizer => ArabicStemmer => ArabicGrammaticalFilter -->
    <fieldType name="text_arabic_analyzed" class="solr.TextField">
      <analyzer type="index" class="solr.ArabicAnalyzer"/>
      <analyzer type="query" class="solr.ArabicAnalyzer"/>
    </fieldType>
    
    <!--  Brazilian (Portuguese) -->
    <fieldType name="text_brazilian" class="solr.TextField">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" words="brazilian-stopwords.txt"/>
        <filter class="solr.ISOLatin1AccentFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" words="brazilian-stopwords.txt"/>
        <filter class="solr.ISOLatin1AccentFilterFactory"/>
      </analyzer>
    </fieldType>
    <!-- BrazilianAnalyser = StandardTokenizer => StandardFilter => StopFilter => BrazilianStemFilter => LowerCaseFilter -->
    <fieldType name="text_brazilian_analyzed" class="solr.TextField">
      <analyzer type="index" class="solr.BrazilianAnalyzer"/>
      <analyzer type="query" class="solr.BrazilianAnalyzer"/>
    </fieldType>
    
    <!-- Chinese -->
    <fieldType name="text_chinese" class="solr.TextField">
      <analyzer type="index">
        <tokenizer class="solr.ChineseTokenizerFactory"/>
        <filter class="solr.ChineseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.ChineseTokenizerFactory"/>
        <filter class="solr.ChineseFilterFactory"/>
      </analyzer>
    </fieldType>
    <!-- ChineseAnalyser = ChineseTokenizer => ChineseFilter -->
    <fieldType name="text_chinese_analyzed" class="solr.TextField">
      <analyzer type="index" class="solr.ChineseAnalyzer"/>
      <analyzer type="query" class="solr.ChineseAnalyzer"/>
    </fieldType>
 
    <!--  Spanish -->
    <fieldtype name="text_spanish" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StandardFilterFactory"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="spanish-stopwords.txt"/>
         <filter class="solr.ISOLatin1AccentFilterFactory"/>
     </analyzer>
     <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StandardFilterFactory"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="spanish-stopwords.txt"/>
         <filter class="solr.ISOLatin1AccentFilterFactory"/>
     </analyzer>
   </fieldtype>
    <fieldtype name="text_spanish_analyzed" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StandardFilterFactory"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="spanish-stopwords.txt"/>
         <filter class="solr.SnowballPorterFilterFactory" language="Spanish"/>
     </analyzer>
     <analyzer type="query">
         <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.StandardFilterFactory"/>
         <filter class="solr.LowerCaseFilterFactory"/>
         <filter class="solr.StopFilterFactory" ignoreCase="true" words="spanish-stopwords.txt"/>
         <filter class="solr.SnowballPorterFilterFactory" language="Spanish"/>
     </analyzer>
   </fieldtype>
   
       
    <!--  French -->
    <fieldType name="text_french" class="solr.TextField">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" words="french-stopwords.txt"/>
        <filter class="solr.ISOLatin1AccentFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" words="french-stopwords.txt"/>
        <filter class="solr.ISOLatin1AccentFilterFactory"/>
      </analyzer>
    </fieldType>
    <fieldType name="text_french_analyzed" class="solr.TextField">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <!-- run the lowercase filter before the sop words filter because the words in the file are in lower case -->
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" words="french-stopwords.txt"/>
        <filter class="solr.FrenchStemFilterFactory"/>
        <!--  the french stemmer brings back uppercase letters in stems, run lowercase filter once more -->
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ISOLatin1AccentFilterFactory"/>
        <filter class="solr.ElisionFilterFactory" articles="french-articles.txt"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" words="french-stopwords.txt"/>
        <filter class="solr.FrenchStemFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ISOLatin1AccentFilterFactory"/>
        <filter class="solr.ElisionFilterFactory" articles="french-articles.txt"/>
      </analyzer>
    </fieldType>
    
    <!-- Russian -->
    <fieldType name="text_russian" class="solr.TextField">
      <analyzer type="index">
        <tokenizer class="solr.RussianLetterTokenizerFactory"/>
        <filter class="solr.RussianLowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.RussianLetterTokenizerFactory"/>
        <filter class="solr.RussianLowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    <fieldType name="text_russian_analyzed" class="solr.TextField">
      <analyzer type="index" class="solr.RussianAnalyzer"/>
      <analyzer type="query" class="solr.RussianAnalyzer"/>
    </fieldType>
 
  </types>
  
  <fields>
    <!-- language agnostic fields -->
    <field name="id" type="string" indexed="true" stored="true" multiValued="false"/>
    <field name="start" type="integer" indexed="true" stored="true" multiValued="false"/>
    <field name="end" type="integer" indexed="true" stored="true" multiValued="false"/>
    <field name="time_period" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="object_type" type="string" indexed="true" stored="true" multiValued="false"/>
    <field name="institution_code" type="string" indexed="true" stored="true" multiValued="false"/>
    <field name="collection_code" type="integer" indexed="true" stored="true" multiValued="true"/>
    <field name="topic_code" type="string" indexed="true" stored="true" multiValued="true"/>
    <!-- geofeatures -->
    <field name="region_code" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="subregion_code" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="country_code" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="province_code" type="string" indexed="true" stored="true" multiValued="true"/>
    <!-- image info -->
    <field name="thumb_low" type="string" indexed="false" stored="true" multiValued="false"/>
    <field name="thumb_medium" type="string" indexed="false" stored="true" multiValued="false"/>
    <field name="thumb_high" type="string" indexed="false" stored="true" multiValued="false"/>
    <field name="service_low" type="string" indexed="false" stored="true" multiValued="false"/>
    <field name="service_medium" type="string" indexed="false" stored="true" multiValued="false"/>
    <field name="service_high" type="string" indexed="false" stored="true" multiValued="false"/>
    <field name="service_master" type="string" indexed="false" stored="true" multiValued="false"/>
    
    <!-- language specific fields -->
    
    <!-- Arabic -->
    <field name="additional_subject_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="country_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="creator_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="description_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="keyword_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="physical_description_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="place_publication_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="province_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="publisher_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="region_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="subregion_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="title_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="topic_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_title_ara" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_creator_ara" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_keyword_ara" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_additional_subject_ara" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_region_ara" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_subregion_ara" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_country_ara" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_province_ara" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_topic_ara" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="suggest_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="text_ara" type="text_arabic_analyzed" indexed="true" stored="true" multiValued="true"/>
    <field name="collection_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>        
    <field name="item_language_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
    <field name="city_ara" type="text_arabic" indexed="true" stored="true" multiValued="true"/>
                        
    
    <!-- English -->
    <field name="additional_subject_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="country_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="creator_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="description_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="keyword_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="physical_description_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="place_publication_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="province_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="publisher_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="region_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="subregion_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="title_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="topic_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_title_eng" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_creator_eng" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_keyword_eng" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_additional_subject_eng" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_region_eng" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_subregion_eng" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_country_eng" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_province_eng" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_topic_eng" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="suggest_eng" type="suggest_text_eng" indexed="true" stored="true" multiValued="false"/>
    <field name="text_eng" type="text" indexed="true" stored="true" multiValued="false"/>
    <field name="collection_eng" type="text" indexed="true" stored="true" multiValued="true"/>       
    <field name="item_language_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    <field name="city_eng" type="text" indexed="true" stored="true" multiValued="true"/>
    
    <!-- French -->
    <field name="additional_subject_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="country_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="creator_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="description_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="keyword_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="physical_description_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="place_publication_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="province_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="publisher_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="region_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="subregion_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="title_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="topic_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_title_fra" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_creator_fra" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_keyword_fra" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_additional_subject_fra" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_region_fra" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_subregion_fra" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_country_fra" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_province_fra" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_topic_fra" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="suggest_fra" type="suggest_text_fra" indexed="true" stored="true" multiValued="false"/>
    <field name="text_fra" type="text_french_analyzed" indexed="true" stored="true" multiValued="false"/>
    <field name="collection_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>      
    <field name="item_language_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    <field name="city_fra" type="text_french" indexed="true" stored="true" multiValued="true"/>
    
    <!-- Brazilian (Portuguese) -->
    <field name="additional_subject_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="country_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="creator_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="description_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="keyword_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="physical_description_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="place_publication_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="province_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="publisher_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="region_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="subregion_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="title_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="topic_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_title_por" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_creator_por" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_keyword_por" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_additional_subject_por" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_region_por" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_subregion_por" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_country_por" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_province_por" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_topic_por" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="suggest_por" type="suggest_text_por" indexed="true" stored="true" multiValued="false"/>
    <field name="text_por" type="text_brazilian_analyzed" indexed="true" stored="true" multiValued="false"/>
    <field name="collection_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>     
    <field name="item_language_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    <field name="city_por" type="text_brazilian" indexed="true" stored="true" multiValued="true"/>
    
    <!-- Russian -->
    <field name="additional_subject_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="country_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="creator_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="description_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="keyword_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="physical_description_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="place_publication_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="province_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="publisher_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="region_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="subregion_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="title_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="topic_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_title_rus" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_creator_rus" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_keyword_rus" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_additional_subject_rus" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_region_rus" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_subregion_rus" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_country_rus" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_province_rus" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_topic_rus" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="suggest_rus" type="suggest_text_rus" indexed="true" stored="true" multiValued="false"/>
    <field name="text_rus" type="text_russian_analyzed" indexed="true" stored="true" multiValued="false"/>
    <field name="collection_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>    
    <field name="item_language_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    <field name="city_rus" type="text_russian" indexed="true" stored="true" multiValued="true"/>
    
    <!-- Spanish -->
    <field name="additional_subject_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="country_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="creator_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="description_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="keyword_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="physical_description_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="place_publication_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="province_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="publisher_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="region_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="subregion_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="title_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="topic_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_title_spa" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_creator_spa" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_keyword_spa" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_additional_subject_spa" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_region_spa" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_subregion_spa" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_country_spa" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_province_spa" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_topic_spa" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="suggest_spa" type="suggest_text_spa" indexed="true" stored="true" multiValued="false"/>
    <field name="text_spa" type="text_spanish_analyzed" indexed="true" stored="true" multiValued="false"/>
    <field name="collection_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>      
    <field name="item_language_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    <field name="city_spa" type="text_spanish" indexed="true" stored="true" multiValued="true"/>
    
    <!-- Chinese (zho) -->
    <field name="additional_subject_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="country_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="creator_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="description_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="keyword_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="physical_description_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="place_publication_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="province_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="publisher_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="region_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="subregion_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="title_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="topic_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_title_zho" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_creator_zho" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_keyword_zho" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_additional_subject_zho" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_region_zho" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_subregion_zho" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_country_zho" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_province_zho" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="facet_topic_zho" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="suggest_zho" type="text_chinese" indexed="true" stored="true" multiValued="false"/>
    <field name="text_zho" type="text_chinese_analyzed" indexed="true" stored="true" multiValued="false"/>
    <field name="collection_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>    
    <field name="item_language_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
    <field name="city_zho" type="text_chinese" indexed="true" stored="true" multiValued="true"/>
  </fields>
  
  <copyField source="title_ara" dest="facet_title_ara"/>
  <copyField source="creator_ara" dest="facet_creator_ara"/>
  <copyField source="keyword_ara" dest="facet_keyword_ara"/>
  <copyField source="additional_subject_ara" dest="facet_additional_subject_ara"/>
  <copyField source="region_ara" dest="facet_region_ara"/>
  <copyField source="subregion_ara" dest="facet_subregion_ara"/>
  <copyField source="country_ara" dest="facet_country_ara"/>
  <copyField source="province_ara" dest="facet_province_ara"/>
  <copyField source="topic_ara" dest="facet_topic_ara"/>
  <copyField source="text_ara" dest="suggest_ara"/>
  
  <copyField source="title_eng" dest="facet_title_eng"/>
  <copyField source="creator_eng" dest="facet_creator_eng"/>
  <copyField source="keyword_eng" dest="facet_keyword_eng"/>
  <copyField source="additional_subject_eng" dest="facet_additional_subject_eng"/>
  <copyField source="region_eng" dest="facet_region_eng"/>
  <copyField source="subregion_eng" dest="facet_subregion_eng"/>
  <copyField source="country_eng" dest="facet_country_eng"/>
  <copyField source="province_eng" dest="facet_province_eng"/>
  <copyField source="topic_eng" dest="facet_topic_eng"/>
  <copyField source="text_eng" dest="suggest_eng"/>

  <copyField source="title_fra" dest="facet_title_fra"/>
  <copyField source="creator_fra" dest="facet_creator_fra"/>
  <copyField source="keyword_fra" dest="facet_keyword_fra"/>
  <copyField source="additional_subject_fra" dest="facet_additional_subject_fra"/>
  <copyField source="region_fra" dest="facet_region_fra"/>
  <copyField source="subregion_fra" dest="facet_subregion_fra"/>
  <copyField source="country_fra" dest="facet_country_fra"/>
  <copyField source="province_fra" dest="facet_province_fra"/>
  <copyField source="topic_fra" dest="facet_topic_fra"/>
  <copyField source="text_fra" dest="suggest_fra"/>

  <copyField source="title_por" dest="facet_title_por"/>
  <copyField source="creator_por" dest="facet_creator_por"/>
  <copyField source="keyword_por" dest="facet_keyword_por"/>
  <copyField source="additional_subject_por" dest="facet_additional_subject_por"/>
  <copyField source="region_por" dest="facet_region_por"/>
  <copyField source="subregion_por" dest="facet_subregion_por"/>
  <copyField source="country_por" dest="facet_country_por"/>
  <copyField source="province_por" dest="facet_province_por"/>
  <copyField source="topic_por" dest="facet_topic_por"/>
  <copyField source="text_por" dest="suggest_por"/>

  <copyField source="title_rus" dest="facet_title_rus"/>
  <copyField source="creator_rus" dest="facet_creator_rus"/>
  <copyField source="keyword_rus" dest="facet_keyword_rus"/>
  <copyField source="additional_subject_rus" dest="facet_additional_subject_rus"/>
  <copyField source="region_rus" dest="facet_region_rus"/>
  <copyField source="subregion_rus" dest="facet_subregion_rus"/>
  <copyField source="country_rus" dest="facet_country_rus"/>
  <copyField source="province_rus" dest="facet_province_rus"/>
  <copyField source="topic_rus" dest="facet_topic_rus"/>
  <copyField source="text_rus" dest="suggest_rus"/>

  <copyField source="title_spa" dest="facet_title_spa"/>
  <copyField source="creator_spa" dest="facet_creator_spa"/>
  <copyField source="keyword_spa" dest="facet_keyword_spa"/>
  <copyField source="additional_subject_spa" dest="facet_additional_subject_spa"/>
  <copyField source="region_spa" dest="facet_region_spa"/>
  <copyField source="subregion_spa" dest="facet_subregion_spa"/>
  <copyField source="country_spa" dest="facet_country_spa"/>
  <copyField source="province_spa" dest="facet_province_spa"/>
  <copyField source="topic_spa" dest="facet_topic_spa"/>
  <copyField source="text_spa" dest="suggest_spa"/>

  <copyField source="title_zho" dest="facet_title_zho"/>
  <copyField source="creator_zho" dest="facet_creator_zho"/>
  <copyField source="keyword_zho" dest="facet_keyword_zho"/>
  <copyField source="additional_subject_zho" dest="facet_additional_subject_zho"/>
  <copyField source="region_zho" dest="facet_region_zho"/>
  <copyField source="subregion_zho" dest="facet_subregion_zho"/>
  <copyField source="country_zho" dest="facet_country_zho"/>
  <copyField source="province_zho" dest="facet_province_zho"/>
  <copyField source="topic_zho" dest="facet_topic_zho"/>
  <copyField source="text_zho" dest="suggest_zho"/>

  <uniqueKey>id</uniqueKey>
  <defaultSearchField>text_eng</defaultSearchField>
  <solrQueryParser defaultOperator="AND"/>
</schema>

Reply via email to