我是MarkLogic的新手,我正在尝试使用搜索API从文档中提取信息。我的文件格式如下。
<nitf>
<head>
<title>ABC</title>
</head>
...
...
</nitf>
我只想在结果中显示与搜索查询匹配的文档的标题,即搜索API必须仅返回匹配文档的标题。我已经浏览了文档并尝试了一些不同的东西,例如@ehennum建议的查询选项,但没有效果。对此的任何帮助都会很棒。谢谢!
答案 0 :(得分:4)
Krishna,听起来你根本不想要片段,所以你应该turn off snippeting:
<search:transform-results apply="empty-snippet"/>
然后要获得标题,请使用extract-metadata:
<search:extract-metadata>
<search:qname elem-ns="" elem-name="title"/>
</search:extract-metadata>
答案 1 :(得分:2)
作为Dave良好建议的一个脚注,MarkLogic 7提供了Query By Example作为一个简单的搜索界面。请参阅:
http://docs.marklogic.com/REST/POST/v1/qbe
http://docs.marklogic.com/guide/search-dev/qbe#id_54044
特定查询类似于以下内容:
<q:qbe xmlns:q="http://marklogic.com/appservices/querybyexample">
<q:query>
... your query by example ...
</q:query>
<q:response>
<q:snippet><q:none/></q:snippet>
<q:extract><title/></q:extract>
</q:response>
</q:qbe>
如果我没记错,NITF不会使用命名空间,但如果确实如此,则必须使用前缀限定标题。
答案 2 :(得分:0)
要扩展来自@ dave-cassel的精美答案,自MarkLogic版本8以来,<search:extract-metadata>
选项已弃用,您应该使用search:extract-document-data
代替 - 直接从API文档中解除:
<search:extract-document-data selected="include">
<search:extract-path xmlns="">/userName</search:extract-path>
</search:extract-document-data>
更多:https://docs.marklogic.com/search:search#opt-extract-document-data