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

1 xquery marklogic marklogic-8

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

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

Dav*_*sel 5

您需要某种类型的索引才能获得计数.除了范围索引,这里是使用单词词典的方法:

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)))
Run Code Online (Sandbox Code Playgroud)

了解如果您有多字值,这种方法可能无法为您提供所期望的值.例如,如果您有<city>旧金山</ city>和<city> San Diego </ city>,您将获得以下计数:

  • san:2
  • 弗朗西斯科:1
  • 迪戈:1

为了获得准确的,基于价值的计数,范围指数是您最好的选择.