在xquery中查找非词典值的频率

在xquery中查找非词典值的频率,xquery,marklogic,marklogic-8,Xquery,Marklogic,Marklogic 8,有没有办法找到没有范围索引的元素的频率? 我使用的cts:frequency()不支持任何非词典的元素您需要某种类型的索引才能获取计数。除了范围索引之外,还有一种使用词汇库的方法: for $word in cts:element-words(xs:QName("city")) return $word || " " || xdmp:estimate( cts:search( fn:doc(), cts:element-word-query(xs:

有没有办法找到没有范围索引的元素的频率?


我使用的
cts:frequency()
不支持任何非词典的元素

您需要某种类型的索引才能获取计数。除了范围索引之外,还有一种使用词汇库的方法:

for $word in cts:element-words(xs:QName("city"))
return 
  $word || " " || 
  xdmp:estimate(
    cts:search(
      fn:doc(), 
      cts:element-word-query(xs:QName("city"), $word)))
请理解,如果您有多个单词的值,这种方法可能不会提供您期望的值。例如,如果你有旧金山和圣地亚哥,你会得到这些数量:

  • 桑:2
  • 弗朗西斯科:1
  • 迭戈:1

为了获得准确的基于值的计数,范围索引是您的最佳选择

您需要某种类型的索引才能获得计数。除了范围索引之外,还有一种使用词汇库的方法:

for $word in cts:element-words(xs:QName("city"))
return 
  $word || " " || 
  xdmp:estimate(
    cts:search(
      fn:doc(), 
      cts:element-word-query(xs:QName("city"), $word)))
请理解,如果您有多个单词的值,这种方法可能不会提供您期望的值。例如,如果你有旧金山和圣地亚哥,你会得到这些数量:

  • 桑:2
  • 弗朗西斯科:1
  • 迭戈:1
为了获得准确的基于值的计数,范围索引是您的最佳选择