我尝试按照搜索开发者指南中的示例来配置要在搜索结果中提取的记录元素。
<options xmlns="http://marklogic.com/appservices/search">
<extract-document-data>
<extract-path xmlns:pdbe="http://schemas.abbvienet.com/people-db/envelope" xmlns:pdbm="http://schemas.abbvienet.com/people-db/model">/pdbe:person-envelope/pdbm:person/pdbm:account</extract-path>
</extract-document-data>
</options>
有了这些选项,我就会收到错误。
[1.0-ml] XDMP-UNBPRFX: (err:XPST0081) Prefix pdbe has no namespace binding
即使我从指南中的示例中逐步尝试示例,我也会得到错误(只要我回击它并尝试提取,如果没有命中,那么它没有错误。)
我做错了吗?
更新
如果我首先使用/config/namespaces
REST端点添加命名空间,然后使用REST API进行搜索,那么我将获取提取的值。但是,我无法在查询控制台中使用search:search
进行测试。如果我删除config/namespaces
,那么我在查询控制台中看到的问题与直接来自REST端点的错误相同。
答案 0 :(得分:3)
Syntax Summary部分中记录的示例有一个拼写错误(我已经提醒过文档团队):xmlns属性拼写错误&#34; xmnls&#34;。这将解释使用该逐字示例时的错误。
按原样粘贴您的示例,看起来它工作正常(MarkLogic 8.0-5.2)。也许你纠正了&#34; xmnls&#34;发布问题时出错?
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
search:search("hello sample-property-constraint:boo",
<options xmlns="http://marklogic.com/appservices/search">
<extract-document-data>
<extract-path
xmlns:pdbe="http://schemas.abbvienet.com/people-db/envelope"
xmlns:pdbm="http://schemas.abbvienet.com/people-db/model">
/pdbe:person-envelope/pdbm:person/pdbm:account
</extract-path>
</extract-document-data>
</options>)