<?xml version="1.0" encoding="UTF-8"?>

<!--
    Generated by <a href="http://dtddoc.sourceforge.net/">DTDDoc</a>. 
    
    @title Configuration Reference
    @root IndexServer
-->
<!--
    It is the root element of the Index Server configuration. 
-->
<!ELEMENT IndexServer (LogFile,XFileFactoryClass?,IndexManager+)>

<!--
    This tag defines an index.<br/>
    The configuration file must contain one of this element for each index you want to create.
-->
<!ELEMENT IndexManager (IndexName,IndexDescription?,IndexDirectory,AnalyzerClass,Source+,Log?,Tasks?)>

<!--
    Path to the main log file. This Log collects messages from the server itself.
-->
<!ELEMENT LogFile (#PCDATA)>

<!--
    Path to the index-specific log file.
    If this element is omitted, then all index level messages go to the 
    main log file. 
-->
<!ELEMENT Log (#PCDATA)>

<!--
    Defines the XFileFactory class to be used.
    If not present the org.apache.lucene.server.SimpleXFileFactory will be used. 
-->
<!ELEMENT XFileFactoryClass (#PCDATA)>

<!--
    Name of the index. This name is used as an identifier by the server.
-->
<!ELEMENT IndexName (#PCDATA)>

<!--
    this is the path to the directory where Lucene files are stored for this index.
-->
<!ELEMENT IndexDirectory (#PCDATA)>

<!--
    the java Analyzer class that will be used to create the index.
-->
<!ELEMENT AnalyzerClass (#PCDATA)>

<!--
    informative description.
-->
<!ELEMENT IndexDescription (#PCDATA)>

<!--
    A source is a set of files to be indexed.<br/>
    It is defined by a Location and several FileHandler.
    An index may be consist of several sources.
    <br/><br/>
    A given file <i>matches</i> the source if :
    <lu>
        <li>it is part of the source's location</li>
        <li>AND it matches at least one of the source's FileHandler</li>
    </lu>
    <br/>
    If a file matches more than one sources, only the first one in appearance order is retained for this file.
    In the same way if a file matches several FileHandler, the first one will be taken.
-->
<!ELEMENT Source (Location,FileHandler+)>

<!--
    the location is a base path that determines a set of files.<br/><br/>
    There are three types of locations.<br/>
    <ul>
        <li><b>Single File Location</b> : represented by a path to a single file. (ex. c:/documents/doc.txt).
        The set of files is a singleton.</li>
        <li><b>Directory Location</b> : represented by a path to a valid directory. (ex. c:/documents/).
        In a directory Location, the set of files is the set of all files from all subdirectories.</li>
        <li><b>Files List Location</b> : represented by a path to a valid directory plus a regular expression. (ex. c:/documents/{.*\.txt}).
         In this case the set of file is consists of all the files from the specified directory whose name matches the regular expression.
         Note that the regular Expression is surrounded in brackets.</li>
    </ul>
    <br/>
-->
<!ELEMENT Location (#PCDATA)>

<!--
    This element defines what to do with each type of file that the file set includes.
-->
<!ELEMENT FileHandler (FileType,FileHandlerClass)>
<!--
    A FileType is a valid regular expression.</br>
    A file is said to match the enclosing FileHandler if its name matches this regular expression.
-->
<!ELEMENT FileType (#PCDATA)>
<!--
    Name of a java class that implements the org.apache.lucine.server.FileHandlerInterface interface.     
-->
<!ELEMENT FileHandlerClass (#PCDATA)>

<!--
    Defines a list of tasks to be scheduled.
-->
<!ELEMENT Tasks (Build*)>

<!--
    The build task is the action of rebuild the entire index.
-->
<!ELEMENT Build EMPTY>

<!--
    Day of the week for on which this task must be scheduled.   
-->
<!ATTLIST Build when (EVERYDAY|MONDAY|TUESDAY|WEDNESDAY|FRIDAY|THURSDAY|SATURDAY|SUNDAY) #REQUIRED >

<!--
    Time at which the task must start (in the form of hh:mm:ss).
-->
<!ATTLIST Build at CDATA #REQUIRED >

<!--
    The port attribute indicates the TCP port on which the server will listen. 
    Actually if this attribute is specified, the server will create its own RMI registry using this port number.
    If it is omitted, the server will use the default registry (in that case you must have the rmiregistry program running on your host).
-->
<!ATTLIST IndexServer port CDATA #IMPLIED >

<!--
    At high level, the index server will be verbose when building the index. It lists all the files that are treated
    and the matched source.<br/>
    It is useful to which files are indexed and which one are not.<br/>
    Beware that with a large amount of files, the log file can grow quickly. 
-->
<!ATTLIST Log level (HIGH|LOW) #IMPLIED >
<!--
    Defines a local XFileFactory that overrides the default one.
-->
<!ATTLIST Location XFileFactoryClass CDATA #IMPLIED >