设置MarkLogic /建议选项(REST API)

时间:2018-06-12 02:42:58

标签: marklogic marklogic-9

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

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

文件如下: app-prototype(3份文件)| /gs/cobra.json

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

调用 destructured object ,总是返回一个空集,我怀疑这是我的搜索选项/配置的问题。

响应:

{
    "suggestions": []
}

使用以下suggest-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>

和以下属性范围索引配置: http://host:port/v1/suggest?partial-q=c

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

有人能说清楚这里可能出现的问题吗?

编辑:用元素范围索引替换索引,如下所示: Attribute Range Index

并将default-suggestion-source更新为:

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

仍然没有结果返回。

1 个答案:

答案 0 :(得分:2)

您的(JSON)文档不包含$(elementId).onchange(function(){ var len = this.val.length; if (len > 5) alert("You cannot exceed max of 6 characters"). }); 个属性,但包含name个属性。这些由元素范围索引捕获。或者,您也可以在name上使用路径范围索引。替换索引,并相应地调整default-suggestion-source。

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

同时确保从建议源中删除name,否则它仍会查找属性范围索引。

HTH!