gpt4 book ai didi

xpath - 有没有快速的方法来找到与 cts :element-value-match()? 匹配的父节点

转载 作者:行者123 更新时间:2023-12-03 17:10:15 24 4
gpt4 key购买 nike

我正在使用 cts:element-value-match()在大量 icd-10 代码(超过 70K 项)中找到一个值。由于我们使用字符串范围索引,因此结果很快返回。

项目的结构如下所示:

<item>
<value>E232</value>
<label>Diabetes insipidus</label>
<item>

这是我如何调用 cts:element-value-match() 的示例:
cts:element-value-match(xs:QName("label"), '*diabetes*', $options)

但是, cts:element-value-match()只返回值字符串。现在我需要一种快速的方法来找出这个值的父节点。我似乎可以做到这一点的唯一方法是使用非常慢的 XPath 表达式并将字符串与文档中的每个标签进行比较。
let $value:= /codes/items/item[label = $label]/value

有没有办法从结果字符串中获取父节点?如果没有,除了 cts:element-value-match()还有其他功能吗?我应该使用什么?或者我应该创建一个组合值/标签对的字段并只搜索该字段?

最佳答案

谢谢你们的建议。我没有意识到将 XPath 表达式添加到 cts:search 的第一个参数的末尾会加快查询速度。但只要我不使用未过滤选项,它就可以工作!我还尝试使用 cts:element-value-match() 和 cts:word-query() 并发现单词查询更快。

我还发现添加 cts:index-order() 加快了结果。

这是我的最终查询的样子:

let $q := xdmp:get-request-field('q', 'diabetes') let $start := xs:positiveInteger(xdmp:get-request-field('start', '1')) 
let $page-length := xs:positiveInteger(xdmp:get-request-field('start', '10'))
let $end := $start + $page-length - 1

let $results := cts:search(doc('/reference-data/icd-10-codes.xml')/codes/items/item, cts:word-query($q), ("filtered", cts:index-order(cts:element-reference(xs:QName("label")))))[$start to $end]

这会在大约 1/10 秒内将结果返回到 HTML 表格 View ,这对于我的“值(value)展示”阶段来说已经足够了。

我注意到我必须使用“过滤”选项。 “未过滤”选项似乎仅在根元素用作 cts:search() 函数的第一个参数时才有效。所以我猜想完整的 ICD-10 文档仍在加载到 e-node 中。

如果 1/10 秒在生产中太长,我们可以将文件分成 70K 小文件。

再次感谢 Mads 和 David!

关于xpath - 有没有快速的方法来找到与 cts :element-value-match()? 匹配的父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44161481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com