marklogic - 限制 cts:search 设置 xml 元素的数量
问题描述
我有一个cts:query
并且我想限制我cts:query
只搜索一些 xml 元素。在不创建任何字段索引或修改 my 的情况下这是否可能cts:query
,因为 mycts:query
非常大.. 当我这样做时
cts:search((
//es:raw/wos_dps:REC/wos_dps:static_data/wos_dps:summary/wos_dps:titles/wos_dps:title,
//es:raw/wos_dps:REC/wos_dps:static_data/ wos_dps:fullrecord_metadata/ wos_dps:abstracts/ wos_dps:abstract
)
,
$q,
('unfiltered'))[1 to 10]
$q
我cts:query
下面的例子在哪里。我得到表达式是无法搜索的..如何实现这一点?..只是为了完成我的代码,以下是我的cts:query
,下面只是一个示例,它更大cts:query
:)
cts:and-query(
(
cts:or-query(
(
cts:near-query(
(
cts:or-query((
cts:word-query("Guideline", ("case-insensitive", "punctuation-insensitive", "whitespace-insensitive", "wildcarded")),
cts:word-query("guidelines", ("case-insensitive", "punctuation-insensitive", "whitespace-insensitive", "wildcarded"))
)
)
,
cts:or-query((
cts:word-query("clinical", ("case-insensitive", "punctuation-insensitive", "whitespace-insensitive", "wildcarded")),
cts:word-query("practice", ("case-insensitive", "punctuation-insensitive", "whitespace-insensitive", "wildcarded")),
cts:word-query("adherence", ("case-insensitive", "punctuation-insensitive", "whitespace-insensitive", "wildcarded"))
)
)
)
,
4,
('unordered'))
,
cts:near-query((
cts:word-query("phase", ("case-insensitive", "wildcarded")),
cts:or-query((
cts:word-query("0", ("case-insensitive", "wildcarded")),
cts:word-query("1", ("case-insensitive", "wildcarded")),
cts:word-query("2", ("case-insensitive", "wildcarded")),
cts:word-query("3", ("case-insensitive", "wildcarded")),
cts:word-query("4", ("case-insensitive", "wildcarded")),
cts:word-query("i", ("case-insensitive", "wildcarded")),
cts:word-query("ii", ("case-insensitive", "wildcarded")),
cts:word-query("iii", ("case-insensitive", "wildcarded")),
cts:word-query("iv", ("case-insensitive", "wildcarded"))
)))
,
0,
('unordered')),
cts:near-query((
cts:or-query((
cts:word-query("phase2*", ("case-insensitive", "wildcarded")),
cts:word-query("phase1*", ("case-insensitive", "wildcarded")),
cts:word-query("phase0*", ("case-insensitive", "wildcarded")),
cts:word-query("phase4*", ("case-insensitive", "wildcarded")),
cts:word-query("phase3*", ("case-insensitive", "wildcarded")),
cts:word-query("phasei*", ("case-insensitive", "wildcarded")),
cts:word-query("phaseii*", ("case-insensitive", "wildcarded")),
cts:word-query("phaseiii*", ("case-insensitive", "wildcarded")),
cts:word-query("phaseiv*", ("case-insensitive", "wildcarded"))
)),
cts:or-query((
cts:word-query("trail*", ("case-insensitive", "wildcarded")),
cts:word-query("study", ("case-insensitive", "wildcarded")),
cts:word-query("studies*", ("case-insensitive", "wildcarded"))
))
),
1,
('unordered')),
)
),
cts:collection-query(("http://xxxx/entity/wos/article")),
cts:element-attribute-value-query((xs:QName(xs:QName("wos_dps:pub_info"))),
(xs:QName("wos_dps:pubyear")),
"2017")
)
,
("unordered"))
解决方案
要回答您的核心问题,您可以使用cts:element-query将查询限制为特定元素。
您的查询有很大的优化空间。我不认为它会针对大型数据集进行扩展。我强烈建议您拥有任何与您联系的 MarkLogic 资源,看看您正在尝试做什么并评估您的方法。
推荐阅读
- python - 等效于迭代器的 cdr/rest
- java - @ConditionalOnProperty 注释在 Spring Boot 项目中不起作用
- sql - 带有 SELECT 排序的 Postgres INSERT INTO
- javascript - c# - 从代码隐藏中添加 javascript 函数
- php - 在 Bash 中使用 which php 有什么用?
- python - 类型错误:is_valid() 缺少 1 个必需的位置参数:'self'
- mongodb - MongoDB - 如何过滤包含键的文档
- wordpress - 在使用木材的第一页之后每页使用不同的帖子?
- graphql - 如何指定采用多种类型的 graphql 类型?
- c# - 编写实用程序类时异常处理的最佳实践 c#