我正在尝试浏览文档以了解其结构.该文档正在向我提供,因此我无法访问原始文档,但我可以对服务器进行查询.我相信它是无架构的.我通过作为MarkLogic一部分的CQ Web应用程序访问该文档.
我基本上想让一棵完全填充的树归还给我.这似乎很容易,但尚未证实.我查看了W3C和其他几个网站,似乎没有任何工作.
提前致谢,
圭多
我在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().
请帮助我获取为响应用户输入的搜索词而返回的正确文档总数.
我正在使用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) 我是XQuery和MarkLogic的新手.我正在尝试更新MarkLogic中的文档并获取扩展树缓存完整错误.为了完成工作,我增加了扩展树缓存,但不建议这样做.我想调整此查询,以便它不需要同时缓存尽可能多的XML.
这是我的查询
我已将我的查询上传为图像,因为当我将其粘贴到编辑器上时它并不那么漂亮.如果有人知道更好的方法请建议.
提前致谢.
我有几个这样的JSON:
[{
"type": "car",
"field1": "test"
}, {
"type": "bike",
"field1": "test"
}]
Run Code Online (Sandbox Code Playgroud)
我将它们存储在MarkLogic 8.4中,我想对它们执行一些搜索查询以根据类型检索文档(例如:查找类型为"car"的所有文档).
我有两个可能的解决方案:
在表现和/或最佳实践方面,一种方法是否优于另一种方法?
谢谢,罗曼.
嗨,我在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查询不起作用。
我已经发布了示例 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) 我有一个名为"监控"的角色,能够在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) 我尝试过下面提到的 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)
请建议我如何更改动态变量值。
我有一个包含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)
然而,这会导致问题在问题文本中没有"名称".例如,在上面的例子中,返回了两个问题.我认为这是因为我正在使用的查询未经过滤传递,因此如果该片段存在匹配,它将从片段返回任何问题.
这个假设是否正确?
我能做些什么才能实现我想做的事 - 有效率?
谢谢!