我有两个示例XML文件如下:
abc.xml
<data>
<text>i am a test user and doing testing here more and more. What are you doing?</text>
<data>
def.xml
<data>
<text>We are a doing nothing here you can say it time pass. what are you doing?</text>
<data>
现在我为<text>
元素创建了元素词词典。我对以下内容感兴趣:
答案 0 :(得分:1)
答案 1 :(得分:1)
1)对于所有唯一单词和匹配片段的数量:
for $w in cts:element-words(xs:QName('text'))
return
element word {
attribute count {
xdmp:estimate(cts:search(doc(), cts:word-query($w))
},
$w }
这应该很快,但为了得到实际的字数而不仅仅是片段数,我想你可能要检查每个片段,这可能会变得很慢:
sum(
cts:search(doc(), cts:word-query($w))/cts:highlight(.,
cts:word-query($w),<match/>)/count(//match)
)
2)对于每个文件的所有唯一单词:
for $d in doc()
return element file {
for $w in cts:element-words(xs:QName('text'), (), (),
cts:document-query(xdmp:node-uri($d))
return element word { $w }
}
如果您启用了URI词典,那么您可以通过迭代cts:uris()
而不是doc()
并将该值作为第四个参数传递给cts:element-values()
来进一步优化2),而不是在文档上调用xdmp:node-uri
。