<?xml version="1.0" encoding="UTF-8" ?>
<!--
  Copyright 2022-2022, RONDHUIT Co.,LTD.
-->
<schema name="default-config" version="1.6">
  <field name="_version_" type="plong"  indexed="false" stored="false"/>
  <field name="_root_"    type="string" indexed="true"  stored="false" docValues="false" />

  <field name="id"                   type="string" indexed="true" stored="true" required="true"  multiValued="false" />
  <field name="productCode"          type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="productName"          type="text_ja" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="productName_2g"       type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="productNameKana"      type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="promptForImage"       type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="image"                type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="price"                type="plong"  indexed="true" stored="true" required="false" multiValued="false" />
  <field name="taxKbn"               type="boolean" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="makerName"            type="text_ja" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="makerName_2g"         type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="makerNameKana"        type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="makerProduCode"       type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryL"            type="text_ja" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryL_2g"         type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryM"            type="text_ja" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryM_2g"         type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryS"            type="text_ja" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryS_2g"         type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryFacetInfo"    type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="stock"                type="plong"  indexed="true" stored="true" required="false" multiValued="false" />
  <field name="size"                 type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="weight"               type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="unitName"             type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="salesUnit"            type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="productInfo"          type="text_ja" indexed="true" stored="true" required="false" multiValued="true"  />
  <field name="productInfo_2g"       type="text_2g" indexed="true" stored="true" required="false" multiValued="true"  />
  <field name="standardDeliveryDate" type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="campaignFlg"          type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="campaignStart"        type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="campaignEnd"          type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="campaignPrice"        type="plong"  indexed="true" stored="true" required="false" multiValued="false" />
  <field name="dateSince"            type="pdate"  indexed="true" stored="true"/>

  <dynamicField name="*_str"      type="string"           indexed="true" stored="false" required="false" multiValued="false" />
  <dynamicField name="*_ja"       type="text_ja"          indexed="true" stored="false" required="false" multiValued="true" />
  <dynamicField name="*_2g"       type="text_2g"          indexed="true" stored="false" required="false" multiValued="true" />
  <dynamicField name="*_pathhie"  type="pathhie"          indexed="true" stored="false" required="false" multiValued="false" />
  <dynamicField name="*_htja"     type="text_ja"          indexed="true" stored="true"  required="false" multiValued="false" />
  <dynamicField name="*_ht2g"     type="text_2g"          indexed="true" stored="true"  required="false" multiValued="false" />
  <dynamicField name="random_*"   type="random" />

  <copyField source="productName"          dest="productName_2g"          />
  <copyField source="makerName"            dest="makerName_2g"            />
  <copyField source="makerNameKana"        dest="makerNameKana_2g"          />
  <copyField source="categoryL"            dest="categoryL_2g"              />
  <copyField source="categoryM"            dest="categoryM_2g"              />
  <copyField source="categoryS"            dest="categoryS_2g"              />
  <copyField source="categoryFacetInfo"    dest="categoryFacetInfo_pathhie" />
  <copyField source="productInfo"          dest="productInfo_2g"            />

  <uniqueKey>id</uniqueKey>

  <fieldType name="text_2g" class="solr.TextField" autoGeneratePhraseQueries="true" positionIncrementGap="100">
    <analyzer type="index">
      <charFilter name="mapping" mapping="mapping-kana.txt"/>
      <tokenizer name="nGram" maxGramSize="2" minGramSize="2"/>
      <filter name="lowercase"/>
    </analyzer>
    <analyzer type="query">
      <charFilter name="mapping" mapping="mapping-kana.txt"/>
      <tokenizer name="nGram" maxGramSize="2" minGramSize="2"/>
      <filter name="managedSynonymGraph" managed="synonym-2g"/>
      <filter name="lowercase"/>
    </analyzer>
  </fieldType>

  <fieldType name="text_ja" class="solr.TextField" autoGeneratePhraseQueries="true" positionIncrementGap="100">
    <analyzer type="index">
      <charFilter name="mapping" mapping="mapping-kana.txt"/>
      <tokenizer name="japanese" mode="normal"/>
      <filter name="japaneseKatakanaStem" minimumLength="4"/>
      <filter name="lowercase"/>
      <filter name="synonymGraph" expand="true" tokenizerFactory="solr.JapaneseTokenizerFactory"
              ignoreCase="true" synonyms="synonyms.txt"/>
    </analyzer>
    <analyzer type="query">
      <charFilter name="mapping" mapping="mapping-kana.txt"/>
      <tokenizer name="japanese" mode="normal"/>
      <filter name="japaneseKatakanaStem" minimumLength="4"/>
      <filter name="managedSynonymGraph" managed="synonym-ja"/>
      <filter name="lowercase"/>
    </analyzer>
  </fieldType>

  <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <tokenizer name="whitespace"/>
    </analyzer>
  </fieldType>

  <fieldType name="text_ng" class="solr.TextField" autoGeneratePhraseQueries="true" positionIncrementGap="100">
    <analyzer>
      <tokenizer name="nGram"/>
      <filter name="lowercase"/>
    </analyzer>
  </fieldType>

  <fieldType name="text_kwd" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <tokenizer name="keyword"/>
      <filter name="lowercase"/>
    </analyzer>
  </fieldType>

  <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <tokenizer name="standard"/>
      <filter name="stop" ignoreCase="true" words="stopwords_en.txt"/>
      <filter name="lowercase"/>
      <filter name="englishPossessive"/>
      <filter name="porterStem"/>
    </analyzer>
  </fieldType>

  <fieldType name="plong" class="solr.LongPointField" docValues="true"/>
  <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
  <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
  <fieldType name="pdate" class="solr.DatePointField" docValues="true"/>
  <fieldType name="random" class="solr.RandomSortField" indexed="true"/>

  <fieldType name="pathhie" class="solr.TextField">
    <analyzer type="index">
      <tokenizer name="pathHierarchy" delimiter="/"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer name="keyword"/>
    </analyzer>
  </fieldType>

  <fieldType name="suggest_ja" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <tokenizer name="japanese" mode="normal"/>
      <filter name="cjkWidth"/>
      <filter name="japaneseReadingForm" useRomaji="true"/>
      <filter name="shingle" minShingleSize="2" maxShingleSize="99"
              outputUnigrams="false" outputUnigramsIfNoShingles="true" tokenSeparator=""/>
      <filter name="lowercase"/>
    </analyzer>
  </fieldType>

<!-- depends on RCSS
  <fieldType name="suggest_ja_rcss" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
      <charFilter name="mapping" mapping="mapping-kana.txt"/>
      <tokenizer name="japanese" mode="normal"/>
      <filter class="com.rondhuit.solr.analysis.JaSuggestFilterFactory" concatKanjiToken="false" matchExactKanji="true" />
      <filter name="lowercase"/>
    </analyzer>
  </fieldType>
-->
</schema>
