以下对搜索API的json请求给出了没有请求转换的搜索结果:
{
"search": {
"qtext": "some query",
"options": {
"term": { "apply": "term", "term-option": ["lang=nl"] },
"transform-results": {
"apply": "metadata-snippet",
"preferred-elements": [ { "name": "title", "ns": "" } ]
}
}
}
}
当执行与xml请求相同的调用时,我会获得请求的元数据片段转换:
<search xmlns="http://marklogic.com/appservices/search">
<qtext>some query</qtext>
<options>
<term apply="term">
<term-option>lang=nl</term-option>
</term>
<transform-results apply="metadata-snippet">
<preferred-elements>
<element name="title" ns=''/>
</preferred-elements>
</transform-results>
</options>
</search>
我的json出了什么问题?
完整的请求信息:
POST /v1/search HTTP/1.1
Host: localhost:8003
Content-Type: application/json
Accept: application/json
Cache-Control: no-cache
{ "search": { "qtext": "some query", "options": { "term": { "apply": "term", "term-option": ["lang=nl"] }, "transform-results": { "apply": "metadata-snippet", "preferred-elements": [ { "name": "title", "ns": "" } ] } } } }
答案 0 :(得分:1)
metadata-snippet
查找文档属性中的元素。你确定标题在那里吗?如果它在文档中,请使用snippet
而不是metadata-snippet
。
HTH!
答案 1 :(得分:0)
跟进评论讨论(需要格式化)。由于您只想指定一些标题,我建议使用基于路径的约束,然后使用它来获取结果。您将需要此方法的路径范围索引。
<options xmlns="http://marklogic.com/appservices/search">
<extract-metadata>
<constraint-value ref="title"/>
</extract-metadata>
<constraint name="title">
<range type="xs:string" facet="false">
<path-index xmlns:my="http://example.com">
/root/my:title
</path-index>
</range>
</constraint>
</options>
如果这不起作用,探索的下一个选择是search response transformation,但我希望这会更简单。