首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Marklogic中返回过滤结果集?

如何在Marklogic中返回过滤结果集?
EN

Stack Overflow用户
提问于 2012-05-10 04:39:04
回答 3查看 669关注 0票数 2

考虑以下xml:

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications 
      with XML.</description>
   </book>
</catalog>

现在,我想对这个文档运行一个搜索查询,并希望返回一个经过过滤的结果集(例如,作者名称)。

其中一种方法是:-

代码语言:javascript
运行
AI代码解释
复制
xquery version "1.0-ml";
import module namespace search="http://marklogic.com/appservices/search" 
at "/Marklogic/appservices/search/search.xqy";

declare variable $options:=
<options xmlns="http://marklogic.com/appservices/search">
<transform-results apply="raw"/>
</options>;

for $x in search:search("", $options)/search:result
return $x//author/text()

但是,xpath首先在缓存中缓存整个结果,然后使用search:search 找到我们想要的节点。我不想要这个。我希望search:search API只返回所需的元素,这样就不会在marklogic服务器中缓存整个结果集。有人能告诉我,请告诉我如何在Marklogic实现这一点吗?

EN

回答 3

Stack Overflow用户

发布于 2012-05-10 15:11:01

据我所知,search:search函数实际上没有自己的缓存。您可能更喜欢使用search:parsesearch:resolve-nodes,但是为了提取作者文本,XQuery计算器仍然会将XML带入内存。

进一步远离search,您可以在author上创建一个范围索引,并使用cts:element-values直接从索引中获取其值。

票数 1
EN

Stack Overflow用户

发布于 2012-05-10 09:22:17

Puneet,如果您使用的是MarkLogic版本5.0,您可以配置一个名为“元数据片段”的内容,以获取您想要的元素,而不是默认的代码段。

下面是一个示例配置:

代码语言:javascript
运行
AI代码解释
复制
<options xmlns="http://marklogic.com/appservices/search">
    <transform-results  apply="metadata-snippet">
        <preferred-elements>
            <element name='ordinal' ns='http://marklogic.com/ns'/>
        </preferred-elements>
    </transform-results>
</options>

另一个:

代码语言:javascript
运行
AI代码解释
复制
<options xmlns="http://marklogic.com/appservices/search">
    <transform-results  apply="metadata-snippet">
        <preferred-elements>
            <element name='author' ns=''/>
            <element name='title' ns=''/>
        </preferred-elements>
    </transform-results>
</options>
票数 0
EN

Stack Overflow用户

发布于 2015-03-23 05:14:47

使用Cts:搜索,而不是搜索:搜索,如果你想要非常苗条的结果。

代码语言:javascript
运行
AI代码解释
复制
xquery version "1.0-ml";
import module namespace search="http://marklogic.com/appservices/search" 
 at "/Marklogic/appservices/search/search.xqy";

  declare variable $options:=
    <options xmlns="http://marklogic.com/appservices/search">
     <grammar xmlns="http://marklogic.com/appservices/search">
      <quotation>"</quotation>
       <implicit>
     <cts:and-query strength="20" xmlns:cts="http://marklogic.com/cts"/>
      </implicit>
     <starter strength="30" apply="grouping" delimiter=")">(</starter>
      <starter strength="40" apply="prefix" element="cts:not-query">- </starter>
  <joiner strength="10" apply="infix" element="cts:or-query" 
  tokenize="word">OR</joiner>
 <joiner strength="20" apply="infix" element="cts:and-query" 
  tokenize="word">AND</joiner>
 <joiner strength="30" apply="infix" element="cts:near-query" 
  tokenize="word">NEAR</joiner>
 <joiner strength="30" apply="near2" element="cts:near-query">NEAR/</joiner>
 <joiner strength="50" apply="constraint">:</joiner>
 <joiner strength="50" apply="constraint" compare="LT"
  tokenize="word">LT</joiner>
 <joiner strength="50" apply="constraint" compare="LE" 
  tokenize="word">LE</joiner>
 <joiner strength="50" apply="constraint" compare="GT" 
  tokenize="word">GT</joiner>
 <joiner strength="50" apply="constraint" compare="GE" 
  tokenize="word">GE</joiner>
 <joiner strength="50" apply="constraint" compare="NE" 
  tokenize="word">NE</joiner>
       </grammar>
       <transform-results apply="raw"/>
    </options>;

 let $query := cts:query(cts:parse("in-depth look",$options))
  let $searchresult := cts:search(fn:doc()//book,$query)
  for $each in $searchresult 
    return $each/author

这会给你一个比搜索更小的结果:搜索,你应该避免使用搜索:搜索,并通过这条路线。这提供了更多的灵活性和更小的结果集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10534193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档