小编Dav*_*sel的帖子

如何在XPath/XQuery中获取所有后代?

我正在尝试浏览文档以了解其结构.该文档正在向我提供,因此我无法访问原始文档,但我可以对服务器进行查询.我相信它是无架构的.我通过作为MarkLogic一部分的CQ Web应用程序访问该文档.

我基本上想让一棵完全填充的树归还给我.这似乎很容易,但尚未证实.我查看了W3C和其他几个网站,似乎没有任何工作.

提前致谢,

圭多

xml xpath xquery

2
推荐指数
1
解决办法
5021
查看次数

如何获取Marklogic数据库中的文档总数?

我在Marklogic数据库中有大约20个lacs文档.我希望我的搜索应用程序中的文档总数用于分页.获得我正在使用的总数

xdmp:estimate(cts:search(doc(), $query))
Run Code Online (Sandbox Code Playgroud)

其中$ query是组合在一起的各种查询的组合cts:and-query.但我没有得到正确的总数.当$ query为空时,它显示的计数远远高于数据库中的文档总数.我用的时候

xdmp:estimate(doc())
Run Code Online (Sandbox Code Playgroud)

它显示了正确的总数,但它将是静态总数,它不会根据查询而改变.我想根据响应特定查询返回的结果来计算总数,这就是为什么我将$ query作为参数传递但是它没有显示正确的总数.fn:count()显示正确的总数但当文件数量大约为20 lacs时则fn:count()不起作用,因为fn:count()比较慢xdmp:estimate().

请帮助我获取为响应用户输入的搜索词而返回的正确文档总数.

marklogic

2
推荐指数
1
解决办法
2082
查看次数

ldap搜索非常慢

我正在使用JNDI连接到LDAP活动目录,我想搜索名称中包含搜索字符串的用户,所以我的搜索方法如下:

public static List<LDAPUser> searchContactsByName(
        ExtendedDirContext extendedDirContext, String name) {

    try {

        LdapContext ldapContext = extendedDirContext.getLdapContext();
        String searchBaseStr = extendedDirContext.getSearchBase();

        String sortKey = LDAPAttributes.NAME;
        ldapContext.setRequestControls(new Control[] { new SortControl(
                sortKey, Control.CRITICAL) });

        SearchControls searchCtls = new SearchControls();
        searchCtls.setTimeLimit(1000 * 10);

        String returnedAtts[] = { LDAPAttributes.USER_NAME,
                LDAPAttributes.NAME };
        searchCtls.setReturningAttributes(returnedAtts);

        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

        String searchFilter = "(&(ObjectCategory=person)(cn=*" + name
                + "*))";

        NamingEnumeration<SearchResult> results = ldapContext.search(
                searchBaseStr, searchFilter, searchCtls);

        List<LDAPUser> users = new ArrayList<LDAPUser>(0);
        while (results.hasMoreElements()) {
            SearchResult sr = (SearchResult) results.next();
            Attributes attrs = …
Run Code Online (Sandbox Code Playgroud)

java jndi ldap active-directory

2
推荐指数
1
解决办法
1万
查看次数

需要帮助重写XQuery以避免MarkLogic中扩展的树缓存完全错误

我是XQuery和MarkLogic的新手.我正在尝试更新MarkLogic中的文档并获取扩展树缓存完整错误.为了完成工作,我增加了扩展树缓存,但不建议这样做.我想调整此查询,以便它不需要同时缓存尽可能多的XML.

这是我的查询在此输入图像描述

我已将我的查询上传为图像,因为当我将其粘贴到编辑器上时它并不那么漂亮.如果有人知道更好的方法请建议.

提前致谢.

caching xquery marklogic

2
推荐指数
1
解决办法
650
查看次数

MarkLogic - 集合和索引之间的最佳解决方案

我有几个这样的JSON:

[{
    "type": "car",
    "field1": "test"
}, {
    "type": "bike",
    "field1": "test"
}]
Run Code Online (Sandbox Code Playgroud)

我将它们存储在MarkLogic 8.4中,我想对它们执行一些搜索查询以根据类型检索文档(例如:查找类型为"car"的所有文档).

我有两个可能的解决方案:

  • 将Marklogic集合设置为每个文档.示例:在示例文档中放置"car"和"bike"集合.在我的搜索查询中,我可以添加集合限制.
  • 在每个JSON的"type"字段上放置一个索引

在表现和/或最佳实践方面,一种方法是否优于另一种方法?

谢谢,罗曼.

collections json marklogic marklogic-8

2
推荐指数
1
解决办法
112
查看次数

如何在MarkLogic 6中执行不区分大小写的匹配

嗨,我在MarkLogic中使用了cts搜索和XPath查询,并且还使用了多个参数。我需要同时捕获大写字母和小写字母(在XML搜索中)。

样本XML

<PP uri="/2000_4_174.xml">
  <P name="jur" value="ht"/>
  <P name="sitting" value="17 AUGUST"/>
  <P name="startpage" value="174"/>
</PP>
Run Code Online (Sandbox Code Playgroud)

我的XQuery

let $attr1  := "JUR"
let $attr2  := "startpage"
let $value1 := "ht"
let $value2 := "174"

let $uri := //PP[P[@name=$attr1 and @value=$value1] and   P[@name=$attr2 and @value=$value2]]/@uri
return $uri
Run Code Online (Sandbox Code Playgroud)

当$ attr1值为jur时,查询成功运行,但是我想提供大写或小写形式的值。请让我知道任何选择。

注意:更改归类cts后,搜索可以同时使用大写和小写字母,但XPath查询不起作用。

xpath xquery marklogic

2
推荐指数
1
解决办法
126
查看次数

如何使用xpath获取具有属性的父元素

我已经发布了示例 XML 和预期的输出有助于获得结果。

示例 XML

<root>
  <A id="1">
    <B id="2"/>
    <C id="2"/>
  </A>
</root>
Run Code Online (Sandbox Code Playgroud)

预期输出:

<A id="1"/>
Run Code Online (Sandbox Code Playgroud)

xpath xquery marklogic

2
推荐指数
1
解决办法
2052
查看次数

添加通过角色在MarkLogic中删除文档的权限

我有一个名为"监控"的角色,能够在MarkLogic中插入/查看文档.我想添加删除文档的权限,但我不知道是否需要赋予它"执行"权限.

我的角色如下:

<role>
  <role-name>moderators-role</role-name>
  <description>The role assigned to the zabbix user that monitor all server apps</description>
  <permissions>
    <permission>
      <capability>read</capability>
      <role-name>moderators-role</role-name>
    </permission>
    <permission>
      <capability>update</capability>
      <role-name>moderators-role</role-name>
    </permission>
  </permissions>
  <privileges>
    <privilege>
      <privilege-name>rest-writer</privilege-name>
    </privilege>
    <privilege>
      <privilege-name>rest-reader</privilege-name>
    </privilege>
  </privileges>
</role>
Run Code Online (Sandbox Code Playgroud)

marklogic marklogic-8

1
推荐指数
1
解决办法
58
查看次数

Marklogic - 如何在 Xquery 中分配动态变量

我尝试过下面提到的 XQuery 。

declare variable $path  as xs:string :="D:\Mongo\";

    let $uri :="/MJ/1932/Vol1/Part1/387.xml"
    let $x := fn:normalize-space(fn:replace($uri,"/"," "))
    for $i in fn:tokenize($x, " ")
    let $j := fn:concat($path,$i)
    return($j)
Run Code Online (Sandbox Code Playgroud)

实际产量

    D:\Mongo\MJ
    D:\Mongo\1932
    D:\Mongo\Vol1
    D:\Mongo\Part1
    D:\Mongo\387.xml
Run Code Online (Sandbox Code Playgroud)

预期产出

D:\Mongo\MJ
D:\Mongo\MJ\1932
D:\Mongo\MJ\1932\Vol1
D:\Mongo\MJ\1932\Vol1\Part1
D:\Mongo\MJ\1932\Vol1\Part1\387.xml
Run Code Online (Sandbox Code Playgroud)

请建议我如何更改动态变量值。

xquery marklogic marklogic-8

1
推荐指数
1
解决办法
4004
查看次数

MarkLogic - 获得不同的价值观

我有一个包含XML文档的数据库,大致如此:

<document>
  <question_item>
    <question>What is your name?</question>
  </question_item>
  <question_item>
    <question>What is your address?</question>
  </question_item>
...
</document>
Run Code Online (Sandbox Code Playgroud)

我希望能够获取一个搜索词,然后返回一个明确的问题列表,其中找到该术语,例如使用上面的数据搜索"name",将返回一个结果,"你的名字是什么?".

我已经成功实现了这一点fn:distinct-values,但显然效率不高.

我想用CTS实现这个.我尝试过以下方法:

for $question in cts:element-values(
  xs:QName('question'),(),(), 
  cts:element-word-query(xs:QName("question"), "name"))
return $question
Run Code Online (Sandbox Code Playgroud)

然而,这会导致问题在问题文本中没有"名称".例如,在上面的例子中,返回了两个问题.我认为这是因为我正在使用的查询未经过滤传递,因此如果该片段存在匹配,它将从片段返回任何问题.

这个假设是否正确?

我能做些什么才能实现我想做的事 - 有效率?

谢谢!

marklogic

1
推荐指数
1
解决办法
335
查看次数