来自MarkLogic's documentation on fields:
如果一个字段有两个或多个具有不同权重的元素,并且如果其中一个元素是另一个元素的子元素,则使用父元素的权重,并忽略子元素的权重。
但是,当祖先和后代具有权重并且后代的直接父母被排除时,不清楚会发生什么。例如,假设我有一份文件:
<X>
<A>
<B>
<C>
<X>
(root)已从字段中排除,<A>
包含weight=1
,<B>
被排除,<C>
包含在weight=2
中1}}。 <C>
中某个字词的字段匹配是用1还是2加权? (有没有办法检查索引权重如何对分数做出贡献,以确认这样的配置是否按预期工作?)
答案 0 :(得分:1)
我进行了快速测试,这似乎与文档相矛盾。我创建了一个名为test
的字段。它排除了根和元素B
,但包括A
重量为1.0
,B
重量为&#39; 2.0&#39;。然后我在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(.))
它让我回答:
/field-test-XABC.xml - 30976
/field-test-XC.xml - 30976
/field-test-XAC.xml - 30976
/field-test-XA.xml - 22528
这告诉我们,元素test
中的单词C
会得到更高的分数,无论它是直接在A
内,还是在B
之间。 ,甚至是自己的。在所有情况下,结果得分最高,这表明应用了更高的提升。
HTH!