我正在探索相关信息,以获取有关影响Marklogic得分的因素的信息。
<qry:relevance-info xmlns:qry="http://marklogic.com/cts/query">
<qry:score
formula="(256*scoreSum/weightSum)+(256*qualityWeight*documentQuality)"
computation="(256*1274/4)+(256*1*0)">81536</qry:score>
..
</qry:relevance>
有人对weightSum因子有想法吗?
Marklogic在计算weightSum的值时考虑了什么。
答案 0 :(得分:1)
在查询子表达式中使用权重来提高或降低子表达式对相关性得分的贡献。
例如,您可以为叶级
cts:query
构造函数指定权重,例如cts:word-query
和cts:element-value-query
;有关详细信息,请参见XQuery and XSLT Reference Guide。您还可以在等效的Search API抽象中指定权重,例如结构化的查询构造value-query
和word-constraint-query
,或者在查询选项中定义单词或值约束时。默认权重为1.0。请遵循以下准则选择自定义权重:
- 要提高得分贡献,请将权重设置为大于1.0。
- 要降低分数贡献,请将权重设置为0到1.0。
- 要对得分不做任何贡献,请将权重设置为0。
- 要使得分贡献为负,请将权重设置为负数。
分数是标准化的,因此权重不是分数的绝对乘数。取而代之的是,权重指示与同一个表达式中的其他子表达式相比,给定查询子表达式中的术语要加权的数量。权重2.0会使与该查询匹配的字词对得分的贡献翻倍。同样,权重为0.5会使与该查询匹配的字词对得分的贡献减半。在某些情况下,分数达到最高,因此权重2.0和权重20,000可以对分数产生相同的贡献。
如果查询表达式中有多个组件,并且希望对表达式的某些部分进行匹配以使其比其他部分更重,则添加权重特别有用。有关此示例,请参见Increase the Score for some Terms, Decrease for Others。