写点什么

创建基于查询参数的包

  • 2011-08-03
  • 本文字数:1751 字

    阅读完需:约 6 分钟

目录

要求

用户级别

入门级

示例文件

在使用内容管理系统时,我们往往需要根据某些参数提取内容。一种极其常见的用例就是依据最后一次同步的日期或者生产系统中内容的最后修改日期,更新生产中的存储或者开发系统。我们可以通过编写一个简单的组件来轻松解决这个问题,首先查询存储库,并使用搜索结果来在服务器上创建包。

查询存储库

Day OOTB 提供了搜索存储库的组件,例如 http://localhost:4502/libs/cq/search/content/querydebug.hml http://localhost:4502/crx/ui/search.jsp

我们可以根据查询参数进行查询,也可在一次查询中指定 XPath/SQL(例如,搜索在 2010 年 4 月 1 日之后更改的所有内容)。

基于参数的搜索

Onhttp://localhost:4502/libs/cq/search/content/querydebug.html, type the params in the text area below:

http://localhost:4502/libs/cq/search/content/querydebug.html 中,在文本区域内输入以下参数:

复制代码
type=cq:Page
path=/content
daterange.property=jcr:content/cq:lastModified
daterange.lowerBound=2010-04-01
orderby=@jcr:content/cq:lastModified
orderby.index=true
orderby.sort=asc

基于 XPath 的查询

http://localhost:5502/crx/ui/search.jsp 中使用 XPath,如下所示:

复制代码
/jcr:root/content//element(*, cq:Page)
[
(@jcr:content/cq:lastModified > xs:dateTime('2010-04-01T00:00:00.000+05:30'))
]
order by jcr:content/@cq:lastModified

我们还可以创建自己的组件来进行搜素,方法是创建一个基于所传入的属性(参数)的 PredicateGroup,随后即可利用一个生成器对象(使用 predicateGroup 和可用 jcr 会话创建)来创建查询,如下所示:

复制代码
QueryBuilder builder = resource.getResourceResolver().adaptTo(QueryBuilder.class);
Session session = resource.getResourceResolver().adaptTo(Session.class);
String queryParam = request.getParameter(“query”);
Properties props = new Properties();
props.load(new ByteArrayInputStream(queryParam.getBytes(“ISO-8859-1″)));
PredicateGroup root = PredicateConverter.createPredicates(props);
// avoid slow //* queries
if (!root.isEmpty())
{
query = builder.createQuery(root, session);
query.setHitsPerPage(0);
}
<p>SearchResult result = query.getResult();</p>

在 SearchResult 对象中,我们可以提取 Hits (result.getHits),并遍历列表来显示结果。我们可以使用相同的列表来创建包,如下一节所述。

通过节点列表创建包

如果拥有节点列表,就可以通过创建过滤器并使用相同的过滤器来进行 Jcr 包定义,从而轻松创建包:

复制代码
DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
for (Hit hit: hits)
{
PathFilterSet pathFilterSet = new PathFilterSet(hit.getPath());
filter.add(pathFilterSet);
}
JcrPackage jcrPackage = packMgr.create(“testGroup”,”testPackage”);
JcrPackageDefinition jcrPackageDefinition = jcrPackage.getDefinition();
jcrPackageDefinition.setFilter(filter, false);
PrintWriter pkgout = new PrintWriter(System.out);
packMgr.assemble(jcrPackage, new DefaultProgressListener(pkgout));

在执行由组名称为“testGroup”的一个包及其中的一个包构成的组合时,将创建一个“testPackage”包,并可通过包管理器访问。

我已经创建了一个示例组件,方法是扩展创建组名称为 testGroup 的包的默认搜索组件。如果已经存在具有相同名称的包,则将忽略请求,不会覆盖现有包。您可以在这里获得示例组件。

访问 http://servername:port/apps/packages/createPkgWithQuery/createPkg.html ,安装并使用包。您可以使用类似于下面这样的参数:

复制代码
type=cq:Page
path=/content
daterange.property=jcr:content/cq:lastModified
daterange.lowerBound=2010-04-01
orderby=@jcr:content/cq:lastModified
orderby.index=true
orderby.sort=asc

clip_image004

本文遵守知识共享—署名- 非商业性使用- 相同方式共享3.0 Unported License (Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License) 许可条件。

查看原文: Creating packages based on query parameters

2011-08-03 05:151188

评论

发布
暂无评论
发现更多内容

新鲜出炉|指标平台「实践案例研究报告」等你来领~

Aloudata

数据分析 ETL 指标平台

阶跃星辰端到端语音模型 Step-Audio 2:深度思考+音色切换;11Labs 对话式 AI 增加 WebRTC支持丨日报

声网

AWS上实现超大规模模型训练的近线性扩展

qife122

AWS 分布式训练

Lombok @Builder失效问题排查与解决方案

qife122

Java maven

基于YOLOv8的狗狗品种(多达60种常见犬类)品种鉴别识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

人工智能

Astro机器人流畅运动背后的科技原理

qife122

机器人 轨迹优化

Gartner 2025报告出炉!KaiwuDB 连续三年入选中国数据库代表厂商

KaiwuDB

2023年八大最佳Codecademy替代平台

qife122

编程学习 技术课程

世界人工智能大会,我们带来两个好消息!

百度Geek说

黑龙江二级等保与三级等保核心差异解析

等保测评

研究机构科研管控系统(源码+文档+讲解+演示)

深圳亥时科技

Amazon Bedrock Runtime API 集成指南——从 Invoke Model API 迁移到 Converse API,简化生成式 AI 应用开发

亚马逊云科技 (Amazon Web Services)

WAIC看点:可交付AI登场,场景智能、专属知识将兑现下一代AI价值

Fabarta

人工智能 agent AI 智能体 个人智能体

亚马逊Q Developer:用自然语言构建机器学习模型

qife122

机器学习 Amazon SageMaker

梦精灵AI产品动态 | 提示词工具新功能预览

龙正哲

黑龙江等保合规体系构建与政策依据

等保测评

大数据-54 Kafka 安装配置 从 ZooKeeper 到 KRaft 的演进之路

武子康

Java 大数据 kafka 分布式 消息队列

利用数据绑定让动画更智能:在Rive中创建动态黄金计算器

qife122

rive 动画设计

黑龙江等保测评流程优化与效率提升

等保测评

"端云+多模态"新范式:《移远通信AI大模型技术方案白皮书》正式发布

财见

亚马逊机器人如何应对交通拥堵

qife122

机器人技术 多智能体系统

使用监督学习训练图像聚类模型

qife122

监督学习 图像聚类

Golang基础笔记十五之sync

Hunter熊

Go 后端 读写锁 互斥锁 对象池

量子计算先驱David Schuster的二十年探索之路

qife122

AWS 量子计算

基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】

程序员Geek

人工智能 yolo

亚马逊发布TEACh数据集训练家用机器人

qife122

人工智能 数据集

速卖通商品列表API响应数据解析

tbapi

速卖通API 速卖通数据采集 速卖通数据接口

Vibe Coding 时代的开源社区开发新体验

老纪的技术唠嗑局

AI+ OceanBase 开源 cursor MCP

SearchBox:一个神奇的搜索组件,比传统的搜索框 + 下拉框的方式体验好十倍!

OpenTiny社区

开源 前端 OpenTiny UI组件库

基于亮数据 MCP 的 Trae 智能体,让规模化 Google 数据实时分析触手可及

阿Q说代码

亚马逊ICML 2023论文技术速览

qife122

机器学习

创建基于查询参数的包_Java_Yogesh Bahuguna_InfoQ精选文章