设置 MarkLogic /suggest 选项(REST API)

Setting up MarkLogic /suggest options (REST API)

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

我正在尝试根据测试数据库中所有文档的 'name' 属性生成建议。

文档如下所示: 应用程序原型(3 个文档)| /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,总是返回一个空集,我怀疑这是我的搜索问题 options/configuration。

回复:

{
    "suggestions": []
}

使用以下建议-options.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>

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

不确定我是否误解了此处 namespaces/range 索引的使用。

谁能说明这里可能出了什么问题?

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

并将默认建议来源更新为:

<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>

仍然没有返回结果。

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

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

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

HTH!