xquery函数返回一个匹配的文本,该文本位于其他文本之前

xquery函数返回一个匹配的文本,该文本位于其他文本之前,xquery,marklogic,marklogic-7,Xquery,Marklogic,Marklogic 7,我试图在我的数据库中的一个元素中搜索一个文本“carrace”。在我的结果中返回了以下结果,我需要对结果进行排序,以便“赛车比赛”排在第一位,因为它是精确匹配的,然后是按升序排列的其他结果。有没有办法在“赛车比赛”结果条目中增加一个高分 第一场汽车比赛 第二场汽车比赛 第三场赛车比赛 赛车比赛 又是第一场赛车比赛 又是第二场赛车比赛 再次进行第三次赛车比赛如果您有值如下所示的元素,您可以使用a来增加跨越整个元素的匹配分数,而不更改匹配: cts:boost-query( cts:elemen

我试图在我的数据库中的一个元素中搜索一个文本“carrace”。在我的结果中返回了以下结果,我需要对结果进行排序,以便“赛车比赛”排在第一位,因为它是精确匹配的,然后是按升序排列的其他结果。有没有办法在“赛车比赛”结果条目中增加一个高分

第一场汽车比赛
第二场汽车比赛
第三场赛车比赛
赛车比赛
又是第一场赛车比赛
又是第二场赛车比赛

再次进行第三次赛车比赛

如果您有值如下所示的元素,您可以使用a来增加跨越整个元素的匹配分数,而不更改匹配:

cts:boost-query(
  cts:element-word-query(xs:QName("myelement"),"car race"),
  cts:element-value-query(xs:QName("myelement"),"car race"))

值查询表示“匹配必须填充整个元素”;boost表示“匹配第一个查询,如果与第二个查询也有匹配,则从第二个查询中添加分数”。

如果您有值如下所示的元素,则可以使用a来增加跨整个元素的匹配分数,而不必更改匹配:

cts:boost-query(
  cts:element-word-query(xs:QName("myelement"),"car race"),
  cts:element-value-query(xs:QName("myelement"),"car race"))

值查询表示“匹配必须填充整个元素”;boost表示“匹配第一个查询,如果与第二个查询也匹配,则添加第二个查询的分数”。

请提供有关如何生成这些结果的更多详细信息。默认情况下,
cts:search
将以TFIDF顺序返回结果,这通常会导致“赛车”排在第一位。这里的情况并非如此,因此此信息对于确定问题是必要的。请提供有关如何生成这些结果的更多详细信息。默认情况下,
cts:search
将以TFIDF顺序返回结果,这通常会导致“赛车”排在第一位。这里的情况并非如此,因此这些信息对于确定问题是必要的。@Mads Hansen如果没有“赛车比赛”的比赛,是否有办法在“四月赛车比赛”之前获得“再次赛车”。如果精确匹配失败,则带来以匹配项开头的结果。您可以更改word查询以搜索单词(“car”、“race”)来查找包含“car”或“race”的文档,或者使用
cts:and-query((cts:element-word-query(xs:QName(“myelement”),“car”)、cts:element-word-query(xs:QName(“myelement”),“race”))包装
查找包含这两个词中任何一个的文档,然后增加短语“car race”以使包含“car race”的文档具有更高的相关性分数。@MadsHansen这是有效的,但在进行单个词搜索时则不行。分数是一样的,我没有办法从比赛开始提高成绩。@Mads Hansen如果没有“赛车赛”的比赛,有没有办法在“四月赛车赛”之前“再次赛车”。如果精确匹配失败,则带来以匹配项开头的结果。您可以更改word查询以搜索单词(“car”、“race”)来查找包含“car”或“race”的文档,或者使用
cts:and-query((cts:element-word-query(xs:QName(“myelement”),“car”)、cts:element-word-query(xs:QName(“myelement”),“race”))包装
查找包含这两个词中任何一个的文档,然后增加短语“car race”以使包含“car race”的文档具有更高的相关性分数。@MadsHansen这是有效的,但在进行单个词搜索时则不行。比分是一样的,我没有办法从比赛开始就提高成绩。