MarkLogic,如何在cts字段查询中向字段添加权重

问题描述 投票:1回答:1

我有这段代码

declare variable $a as xs:string := "case-insensitive punctuation-insensitive 
unwildcarded";  

declare variable $b as xs:string* := tokenize($a, ' ');

let $d as cts:query := cts:field-word-query("FULL-CASE-NAME", "complaints", 
$b, 30)
return <q>{$d}</q>

产生这个

<q>
  <cts:field-word-query weight="30" xmlns:cts="http://marklogic.com/cts">
    <cts:field>FULL-CASE-NAME</cts:field>
    <cts:text xml:lang="en">complaints</cts:text>
    <cts:option>case-insensitive</cts:option>
    <cts:option>punctuation-insensitive</cts:option>
    <cts:option>unwildcarded</cts:option>
  </cts:field-word-query>
</q>

但我想要生产的是这个

<q>
  <cts:field-word-query weight="30" xmlns:cts="http://marklogic.com/cts">
    <cts:field weight="10">FULL-CASE-NAME</cts:field>
    <cts:text xml:lang="en">complaints</cts:text>
    <cts:option>case-insensitive</cts:option>
    <cts:option>punctuation-insensitive</cts:option>
    <cts:option>unwildcarded</cts:option>
  </cts:field-word-query>
</q>

不同之处在于该行具有作为属性的附加权重

<cts:field weight="10">FULL-CASE-NAME</cts:field>
xquery marklogic
1个回答
2
投票

cts:field只保留了该字段的名称。权重(初始代码中的30)已经存在,作为属性附加到cts:field-word-query,它所属的位置。

HTH!

© www.soinside.com 2019 - 2024. All rights reserved.