我在我们的 中处理了 40 多万条TEST database记录,从集合中删除了坏记录。在几个小时的过程中,这一切都在一次射击中完成。
输入的数据PROD是相同的,但是当我尝试运行相同的作业时,它超时给我错误SVC-EXTIME Time Limit Exceeded。
可能导致这种情况发生的适用超时设置是什么?
我有一个内容存储库,其中最新版本的文档使用 IsLatestVersion 三元组。
这是带有 isLatestVersion 三元组的文档示例。
Document URI: /Transaction/00000000000101000000/1.xml
<aptp:Transaction xmlns:aptp="http://sample.com/aptp">
<aptp:TransactionDate>2016-07-28</aptp:TransactionDate>
<aptp:TransactionType>Principal</aptp:TransactionType>
<aptp:Operation>Buy</aptp:Operation>
<sem:triple name="isLatestVersion"
xmlns:aptp="http://sample.com/aptp"
xmlns:sem="http://marklogic.com/semantics">
<sem:subject datatype="http://www.w3.org/2001/XMLSchema#string">
/Transaction/00000000000101000000/1.xml
</sem:subject>
<sem:predicate>isLatestVersion</sem:predicate>
<sem:object datatype="http://www.w3.org/2001/XMLSchema#boolean">true</sem:object>
</sem:triple>
</aptp:Transaction>
Run Code Online (Sandbox Code Playgroud)
我希望以下代码片段返回最新版本 uri 的序列。它当前返回一个空集。
import module namespace sem = "http://marklogic.com/semantics" at "/MarkLogic/semantics.xqy";
let $uris :=
(
"/Transaction/00000000000101000000/1.xml",
"/Transaction/00000000000101000001/1.xml",
"/Transaction/111111/1.xml"
)
let $query := cts:triple-range-query($uris, "isLatestVersion", fn:true())
return
cts:uris("", (), $query)
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗?
我正在使用 ML 9.0 版并开始使用 TDE(模板驱动提取)。我有很多 XML 文件(每个 50 kb 的 3500 个 xml 文件)并将它们成功加载到 ML。我成功创建了一些基本模板(TDE)。但是当我到达同一元素组的重复组时,视图返回一个空结果。唯一的方法是将上下文设置在我不想要的较低级别,因为我无法从更高的节点中选择元素。
下面的 XML 定义显示了 XML 文件的示例:
<scope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<item>
<transaction>
<type>CI</type>
<sscc>00000379471900000025</sscc>
<location>4260210630688</location>
<device>VISTALINK.004</device>
<date>2017-04-25</date>
<time>02:15:33</time>
<gmtOffset>+02:00</gmtOffset>
<actorId>155081</actorId>
</transaction>
<order>
<orderNumber>3794719</orderNumber>
</order>
<load>
<rti>
<ean>8714548186004</ean>
<grai>8003087145481860040019877322</grai>
<column>2</column>
<size>
<width>1900</width>
<height>95</height>
<depth>0</depth>
</size>
<position>
<x>2062,48707520218</x>
<y>2015,24337520512</y>
<z>0</z>
</position>
</rti>
<rti>
<ean>8714548106002</ean>
<grai>8003087145481060020016434653</grai>
<column>0</column>
<size>
<width>1900</width>
<height>95</height>
<depth>0</depth>
</size>
<position/>
</rti>
<rti>
<ean>8714548186004</ean>
<grai>8003087145481860040012803719</grai>
<column>2</column>
<size>
<width>1900</width>
<height>95</height>
<depth>0</depth>
</size>
<position>
<x>2064,20629390666</x>
<y>2124,57539157396</y>
<z>0</z>
</position>
</rti>
<rti>...</rti> …Run Code Online (Sandbox Code Playgroud) 假设我有一个XML-
<SearchPage ID="123" version="1.3" xmlns="http://some/path">
.....some child elements
</SearchPage>
Run Code Online (Sandbox Code Playgroud)
如何从中获取所有属性名称?
根据文档:值词典是通过配置范围索引创建的。可以为整个数据库或特定元素或属性创建 Word 词典。
这是否意味着创建单词词典不需要范围索引?范围索引在创建唯一的单词/值列表中起什么作用?
我一直在测试将我们的一个系统迁移到Marklogic 9并使用Optics API.
我们的一个功能涉及通过member_id,member_name对索赔进行分组并获取总和和计数,所以我做了类似这样的事情:
var results = op.fromView('test', 'claims')
.groupBy(['member_id', 'member_name'], [
op.count('num_claims', 'claim_no'),
op.sum('total_amount', 'claim_amount')
])
.orderBy(op.desc('total_amount'))
.limit(200)
.result()
.toArray();
Run Code Online (Sandbox Code Playgroud)
以上工作正常.结果是形式的
[
{
member_id: 1,
member_name: 'Bob',
num_claims: 10,
total_amount: 500
},
...
]
Run Code Online (Sandbox Code Playgroud)
但是,我们还有一个"公司"字段,每个索赔都是在另一家公司下提交的.基本上,相关的视图列是claim_no,member_id,member_name,company,claim_amount
我希望能够显示一个列,其中列出了member_id/member_name已提交索赔的不同公司,以及每个公司的索赔数量.
即我希望我的结果如下:
[
{
member_id: 1,
member_name: 'Bob',
num_claims: 10,
total_amount: 500,
companies: [
{
company: 'Ajax Co',
num_claims: 8
},
{
company: 'Side Gig',
num_claims: 2
}
]
},
...
]
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情:
results = results.map((member, index, array) => {
var companies = op.fromView('test', …Run Code Online (Sandbox Code Playgroud) 如何删除新行字符.
Sample Code.
let $b := <root><title>Fees • Levies<?brk type="line"?>
Other file</title></root>
return replace($b//title/text(),'\n','')
Expected Output :
Fees • Levies Other file
Run Code Online (Sandbox Code Playgroud) 我正在做一些锻炼以找出性能方面哪个更好,无论是元素值查询还是路径范围查询。
我发现使用路径范围查询的搜索比元素值查询慢一点。
即使加载了额外的路径范围索引,有没有人知道使用路径范围查询搜索的速度缓慢。
我使用了下面的代码。
xdmp:document-delete("/aname4.xml")
xdmp:document-insert("/aname1.xml",
<name><fname>John</fname><mname>Rob</mname><lname>Goldings</lname></name>),
xdmp:document-insert("/aname2.xml",
<name><fname>Jim</fname><mname>Ken</mname><lname>Kurla</lname></name>),
xdmp:document-insert("/aname3.xml",
<name><fname>Ooi</fname><mname>Ben</mname><lname>Fu</lname></name>),
xdmp:document-insert("/aname4.xml",
<name><fname>James</fname><mname>Rick</mname><lname>Tod</lname></name>)
create path range index "/name/fname"
checked response time with following search code
cts:search(doc(),cts:path-range-query("/name/fname","=","Jim"),"filtered")
cts:search(doc(),
cts:element-value-query(xs:QName("fname"),"jim"),
"filtered")
Run Code Online (Sandbox Code Playgroud)
在使用路径范围查询时,我应该考虑哪些特定的事情
任何建议都将受到高度赞赏,因为它有助于我们设计高效的搜索代码。
我正在尝试获取 MarkLogic 中的森林数据目录。我使用以下方法获取数据目录...使用服务器评估调用接口以管理员身份运行查询。如果没有,请告诉我如何获取森林数据目录
ServerEvaluationCall forestDataDirCall = client.newServerEval()
.xquery("admin:forest-get-data-directory(admin:get-configuration(), admin:forest-get-id(admin:get-configuration(), \"" + forestName +"\"))");
for (EvalResult forestDataDirResult : forestDataDirCall.eval()) {
String forestDataDir = null;
forestDataDir = forestDataDirResult.getString();
System.out.println("forestDataDir is " + forestDataDir);
}
Run Code Online (Sandbox Code Playgroud) marklogic ×10
xquery ×4
marklogic-8 ×3
marklogic-9 ×3
xml ×2
xpath ×2
java ×1
lexicon ×1
rest ×1
triplestore ×1