<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<!--
  More information on gora-mongodb configuration and mapping's can be found
  at http://gora.apache.org/current/gora-mongodb.html
-->
<gora-otd>

    <class name="org.apache.nutch.storage.WebPage" keyClass="java.lang.String" document="webpage">
        <!-- fetch fields -->
        <field name="baseUrl" docfield="baseUrl" type="string"/>
        <field name="status" docfield="status" type="int32"/>
        <field name="prevFetchTime" docfield="prevFetchTime" type="int64"/>
        <field name="fetchTime" docfield="fetchTime" type="int64"/>
        <field name="fetchInterval" docfield="fetchInterval" type="int64"/>
        <field name="retriesSinceFetch" docfield="retriesSinceFetch" type="int32"/>
        <field name="reprUrl" docfield="reprUrl" type="string"/>
        <field name="content" docfield="content" type="binary"/>
        <field name="contentType" docfield="contentType" type="string"/>
        <field name="modifiedTime" docfield="modifiedTime" type="int64"/>
        <field name="prevModifiedTime" docfield="prevModifiedTime" type="int64"/>
        <field name="batchId" docfield="batchId" type="string"/>
        <field name="sitemaps" docfield="sitemaps" type="document"/>
        
        <!-- parse fields -->
        <field name="title" docfield="title" type="string"/>
        <field name="text" docfield="text" type="binary"/>
        <field name="signature" docfield="signature" type="string"/>
        <field name="prevSignature" docfield="prevSignature" type="string"/>
        <!-- score fields -->
        <field name="score" docfield="score" type="int32"/>
        <field name="stmPriority" docfield="stmPriority" type="int32"/>
        <field name="headers" docfield="headers" type="document"/>
        <field name="inlinks" docfield="inlinks" type="document"/>
        <field name="outlinks" docfield="outlinks" type="document"/>
        <field name="metadata" docfield="metadata" type="document"/>
        <field name="markers" docfield="markers" type="document"/>
        <field name="parseStatus" docfield="parseStatus" type="document"/>
        <field name="protocolStatus" docfield="protocolStatus" type="document"/>
    </class>
    
    <class name="org.apache.nutch.storage.Host" keyClass="java.lang.String" document="host">
        <field name="metadata" docfield="metadata" type="document"/>
        <field name="inlinks" docfield="inlinks" type="document"/>
        <field name="outlinks" docfield="outlinks" type="document"/>
    </class>

</gora-otd>
