0

MarkLogic 新手,我在使用 MarkLogic REST API 的 /suggest 端点时遇到了一些问题。

我正在尝试根据测试数据库中所有文档的“名称”属性生成建议。

文档如下所示: app-prototype (3 Documents) | /gs/cobra.json

{
"name": "cobra", 
"kind": "mammal", 
"desc": "The cobra is a venomous, hooded snake of the family Elapidae."
}

调用http://host:port/v1/suggest?partial-q=c总是返回一个空集,我怀疑这是我的搜索选项/配置的问题。

回复:

{
    "suggestions": []
}

使用以下建议选项.xml:

<options xmlns="http://marklogic.com/appservices/search">
    <default-suggestion-source>
    <range type="xs:string">
        <element ns="" name="name"/>
        <attribute ns="" name="name"/>
    </range>
    </default-suggestion-source>
</options>

以及以下属性范围索引配置: 属性范围索引

不确定我在这里是否误解了名称空间/范围索引的使用。

任何人都可以阐明这里可能出了什么问题吗?

编辑:将索引替换为元素范围索引,如下所示: 元素范围索引

并将默认建议源更新为:

<options xmlns="http://marklogic.com/appservices/search">
    <default-suggestion-source>
        <range type="xs:string">
            <element ns="http://marklogic.com/xdmp/dls" name="name"/>
            <attribute ns="http://marklogic.com/xdmp/dls" name="name"/>
        </range>
    </default-suggestion-source>
</options>

仍然没有返回结果。

4

1 回答 1

2

您的 (JSON) 文档不包含name属性,而是包含属性name。这些由元素范围索引捕获。或者,您也可以在name. 替换索引,并相应地调整您的默认建议来源。

确保元素范围索引使用空的命名空间 uri。JSON 属性永远不会在命名空间中(这与没有命名空间中的元素的行为相匹配)。

还要确保<attribute ..>从建议源中删除 ,否则它仍会查找属性范围索引。

于 2018-06-12T04:39:21.447 回答