eXist-db范围索引中的条件组合索引失败

时间:2019-01-09 08:35:36

标签: exist-db

在eXist-db配置范围索引以指定值得索引的属性时,我遇到了以下问题。

<collection xmlns="http://exist-db.org/collection-config/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <index>
        <range>
            <create qname="tei:term">
                <condition attribute="type" value="main"/>
                <field name="mainTerm" type="xs:string"/>
            </create>
        </range>
    </index></collection>

发生错误:“ / db / system / config / db / range / collection.xconf cvc-complex-type.2.4.a:发现无效的内容以元素'condition'开始。'{” {{3 }}“:field}'。” 请帮助我。

2 个答案:

答案 0 :(得分:0)

常规配置结构和语法 索引配置collection.xconf文件是标准XML文档,其元素和属性由eXist-db命名空间http://exist-db.org/collection-config/1.0定义。以下示例显示了一个配置示例:

<collection xmlns="http://exist-db.org/collection-config/1.0">
    <index>
        <!-- Full text index based on Lucene -->
        <lucene>
            <text qname="SPEECH">
                <ignore qname="SPEAKER"/>
            </text>
            <text qname="TITLE"/>
        </lucene>

        <!-- Range indexes -->
        <range>
            <create qname="title" type="xs:string"/>
            <create qname="author" type="xs:string"/>
            <create qname="year" type="xs:integer"/>
        </range>
        <!-- N-gram indexes -->
        <ngram qname="author"/>
        <ngram qname="title"/>
    </index>
</collection>

要使用新的范围索引,请将范围索引定义包装到一个范围元素中:

<collection xmlns="http://exist-db.org/collection-config/1.0">
    <!--from Tamboti-->
    <index xmlns:mods="http://www.loc.gov/mods/v3">
        <lucene>
            <text qname="mods:title"/>
        </lucene>
        <!-- Range indexes -->
        <range>
            <create qname="mods:namePart" type="xs:string" case="no"/>
            <create qname="mods:dateIssued" type="xs:string"/>
            <create qname="@ID" type="xs:string"/>
        </range>
    </index>
</collection>

有条件的组合索引 对于组合索引,您可以指定条件以将被索引的值限制为具有满足某些条件的属性的元素中包含的值:

<range>
            <create qname="tei:term">
                <condition attribute="type" value="main"/>
                <field name="mainTerm" type="xs:string"/>
            </create>
        </range>

仅当tei:term元素具有名为type且值为main的属性时,才会对它进行索引。可以在索引定义中指定多个条件,在这种情况下,所有条件都需要匹配才能对值进行索引。

确保您具有有效的xml。有关更多详细信息,您可以在此处阅读文档:https://exist-db.org/exist/apps/doc/newrangeindex.xml

答案 1 :(得分:0)

您遇到的错误是架构验证错误,由最近引入的conditional combined index功能使用的<condition>元素触发。

我已将a fix提交给该错误,现在您可以忽略该错误。模式验证错误将对该功能没有任何影响。