MarkLogi c Smart Mastering не возвращает матчи - PullRequest
0 голосов
/ 14 апреля 2020

Я использую интеллектуальную среду мастеринга, основанную на платформе Data Hub. Я сталкиваюсь с проблемой при выполнении смарт-мастеринга. Я получаю результат матча обратно, но он не содержит документов, которые были сопоставлены. Когда я запускаю:

import module namespace matcher = "http://marklogic.com/smart-mastering/matcher"
at "com.marklogic.smart-mastering/matcher.xqy";
matcher:find-document-matches-by-options-name(
fn:doc("/Trade/126753e6-ca73-454f-b6cd-1bdf63323ac8.json"), "da49a395-3389-4ba2-8fbb-ab2615ee618d",
fn:true(), cts:collection-query("Cash") )


в моей консоли запросов, он возвращает статистику совпадений вместе с сопоставленными документами.

<results total="1" page-length="200" start="1">
<match-query>
<cts:and-not-query xmlns:cts="http://marklogic.com/cts">
<cts:positive>
<cts:and-query>
<cts:collection-query>
<cts:uri>mdm-content</cts:uri>
</cts:collection-query>
<cts:or-query>
<cts:and-query>
<cts:json-property-value-query weight="10">
<cts:property>cshTrdNotiAmt</cts:property>
<cts:value xml:lang="en">120</cts:value>
<cts:value xsi:type="xs:double" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">120</cts:value>
<cts:option>case-insensitive</cts:option>
</cts:json-property-value-query>
<cts:json-property-value-query weight="10">
<cts:property>cshTrdAmtCrryCd</cts:property>
<cts:value xml:lang="en">GBP</cts:value>
<cts:option>case-insensitive</cts:option>
</cts:json-property-value-query>
</cts:and-query>
</cts:or-query>
</cts:and-query>
</cts:positive>
<cts:negative>
<cts:document-query>
<cts:uri>/Statement/126753e6-ca73-454f-b6cd-1bdf63323ac8.json</cts:uri>
</cts:document-query>
</cts:negative>
</cts:and-not-query>
</match-query>
<result uri="/Cash/9b627589-5fa5-481a-b498-d7cbbf2bfc83.json" index="1" score="20" threshold="R100001" action="">
<matches>
<match>fn:doc("/Cash/9b627589-5fa5-481a-b498-d7cbbf2bfc83.json")/envelope/instance/CashBook/number-node("cshTrdNotiAmt")</match>
<match>fn:doc("/Cash/9b627589-5fa5-481a-b498-d7cbbf2bfc83.json")/envelope/instance/CashBook/text("cshTrdAmtCrryCd")</match>
</matches>
</result>
</results>

Однако, делая вызов покоя через мое приложение java он не возвращает сопоставленные документы. Я вызываю пользовательский файл сопоставления, который вызывает:

let resultXML = matcher.findDocumentMatchesByOptions(doc, options,
                    1, pageOffset, includeMatch, cts.collectionQuery(collectionName));

Даже до синтаксического анализа до json я все равно не получаю сопоставленные документы, и для параметра includeMatch установлено значение true , Я что-то упустил?

1 Ответ

0 голосов
/ 15 апреля 2020

Первый вопрос, который я хотел бы задать: вы используете одного и того же пользователя в QConsole и для вызовов REST. Если нет, то это, скорее всего, проблема с разрешениями.

...