.. raw:: latex \newpage Metacat Indexing =========================== Lorem ipsum SOLR background information --------------------------- Features: * something * something * more * even more Something to explain the advantage of solr over the old metacat index approach Indexed documents and fields ----------------------------- Metacat reuses the default DataONE index which includes many common metadata formats out-of-the-box 1. EML 2. FGDC 3. Dryad Default indexed fields ----------------------- Describe the existing fields like in the DataONE docs, with link to them Index configuration overview ---------------------------- Describe the configuration files and extension points for the implementation Adding additional document types and fields -------------------------------------------- Step-by-step guide for adding new documents and indexed fields. Querying the index -------------------- Provide example SOLR queries and expected results. Show a variety of return types and query facets. Access Policy enforcement ------------------------- Explain how access control is processed and honored when utilizing the index. Regenerating the index from scratch ----------------------------------- When the SOLR index has been drastically modified, a complete regenration of the index may be necessary. In order to accomplish this: Step-by-step instructions NOTE: this may take a long time depending on the size of your Metacat store. Class design overview ---------------------- .. figure:: images/indexing-class-diagram.png Figure 1. Class design overview. .. @startuml images/indexing-class-diagram.png package index.model { abstract class FieldSpec { - String name + abstract String[] extract(Reader s); } class D1IndexField { } class XpathIndexField { - String xpath } class MCIndexDocDef { - Set fields + add(FieldSpec) + remove(FieldSpec) } } FieldSpec <|-- D1IndexField FieldSpec <|-- XpathIndexField MCIndexDocDef o--"*" FieldSpec package index { interface GenericIndex { + insert(String, Map) + String [] query(String) + remove(String) + update(String, Map) } class D1Index { } class SolrjIndex { } class Embedded { } class LuceneIndex { } class MetacatIndex { + remove(String) + retrieve(String) + update(String, Reader) } class DocType { + boolean isEml() + boolean isSysmeta() + boolean isSyseml() + boolean isSysdryad() + boolean isSysfgdc() } } GenericIndex <|-- D1Index GenericIndex <|-- SolrjIndex SolrjIndex <|-- Embedded GenericIndex <|-- LuceneIndex @enduml