<?xml version="1.0" ?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  -->


<schema name="nested-docs" version="1.6">

  <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
  <field name="id_i" type="int" indexed="true" multiValued="false" docValues="true" stored="false" useDocValuesAsStored="false" />
  <!-- copy id field as int -->
  <copyField source="id" dest="id_i"/>

  <!-- for versioning -->
  <field name="_version_" type="long" indexed="false" stored="false" docValues="true"/>
  <!-- points to the root document of a block of nested documents -->
  <field name="_root_" type="string" indexed="true" stored="false"/>

  <!-- populated by for NestedUpdateProcessor -->
  <field name="_nest_parent_" type="string" indexed="true" stored="true"/>
  <field name="_nest_path_" type="_nest_path_" />

  <dynamicField name="*_s" type="string" indexed="true" stored="true"/>
  <dynamicField name="*_ss" type="string" indexed="true" stored="true" multiValued="true"/>

  <!-- required to test updates nested inplaceUpdates -->
  <field name="inplace_updatable_int"   type="int"   indexed="false" stored="false" docValues="true"/>

  <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>

  <fieldType name="_nest_path_" class="solr.NestPathField" />

  <!-- Point Fields -->
  <fieldType name="int" class="solr.IntPointField" docValues="true"/>
  <fieldType name="long" class="solr.LongPointField" docValues="true"/>
  <fieldType name="double" class="solr.DoublePointField" docValues="true"/>
  <fieldType name="float" class="solr.FloatPointField" docValues="true"/>
  <fieldType name="date" class="solr.DatePointField" docValues="true"/>

  <!-- Fields required for SignatureUpdateProcessor -->
  <field name="signatureField" type="string" indexed="true" stored="false"/>
  <dynamicField name="*_sS" type="string" indexed="true" stored="true" multiValued="true"/>

  <!-- Fields required for LatLonDocValuesField test -->
  <fieldType name="latlon" class="solr.LatLonPointSpatialField" docValues="true"/>
  <field name="latlon" type="latlon" indexed="true" stored="false"/>

  <uniqueKey>id</uniqueKey>

</schema>
