Indexing 包含子项和排除父项的MarkLogic字段索引权重规则

Indexing 包含子项和排除父项的MarkLogic字段索引权重规则,indexing,marklogic,marklogic-8,Indexing,Marklogic,Marklogic 8,发件人: 如果一个字段有两个或多个具有不同权重的元素,并且其中一个元素是另一个元素的子元素,则使用父元素的权重,忽略子元素的权重 但不清楚当祖先和后代拥有权重并且后代的直系父代被排除在外时会发生什么。例如,假设我有一个文档: <X> <A> <B> <C> (root)从字段中排除,包含在weight=1中,被排除在外,包含在weight=2中。中某个术语的字段匹配是用1加权还是用2加权?(有没有办法检查索引权重是如何

发件人:

如果一个字段有两个或多个具有不同权重的元素,并且其中一个元素是另一个元素的子元素,则使用父元素的权重,忽略子元素的权重

但不清楚当祖先和后代拥有权重并且后代的直系父代被排除在外时会发生什么。例如,假设我有一个文档:

<X>
  <A>
    <B>
      <C>


(root)从字段中排除,
包含在
weight=1
中,
被排除在外,
包含在
weight=2
中。
中某个术语的字段匹配是用1加权还是用2加权?(有没有办法检查索引权重是如何影响分数的,以确认这样的配置是否按预期工作?

我进行了一次快速测试,这似乎与文档相矛盾。我创建了一个名为
test
的字段。它不包括根和元素
B
,但包括权重为
1.0的
A
,以及权重为“2.0”的
B
。然后,我在QConsole中运行了以下命令:

xdmp:document-insert("/field-test-X.xml", <X>test</X>, (), "field-test"),
xdmp:document-insert("/field-test-XA.xml", <X><A>test</A></X>, (), "field-test"),
xdmp:document-insert("/field-test-XAB.xml", <X><A><B>test</B></A></X>, (), "field-test"),
xdmp:document-insert("/field-test-XABC.xml", <X><A><B><C>test</C></B></A></X>, (), "field-test"),
xdmp:document-insert("/field-test-XAC.xml", <X><A><C>test</C></A></X>, (), "field-test"),
xdmp:document-insert("/field-test-XC.xml", <X><C>test</C></X>, (), "field-test")
;

cts:search(collection("field-test"), cts:field-word-query("test", "test")) ! (xdmp:node-uri(.) || " - " || cts:score(.))
这告诉我们,单词
test
内部元素
C
得分较高,不管它是直接出现在
a
内部,还是出现在被排除元素
B
之间,甚至是单独出现。在所有情况下,结果得分最高,这表明应用了更高的提升


等等。。对于
cts:field value query
,文档似乎是正确的,但对于
cts:field word query
,文档似乎不正确。这种行为似乎前后不一致。无论如何,我将提交一个bug报告……非常有趣……因此,当子元素中出现术语匹配时,使用
cts:field value query
将根据祖先权重对其进行评分,或者对于
cts:field word query
将获得子元素的评分?
/field-test-XABC.xml - 30976
/field-test-XC.xml - 30976
/field-test-XAC.xml - 30976
/field-test-XA.xml - 22528