如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

创建基于查询参数的包

  • 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:151199

评论

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

从用户关系看产品发展

石云升

产品经理 产品思维 产品分析 10月月更

一文读懂 OceanBase 数据库的SLog日志

OceanBase 数据库

oceanbase OceanBase 开源 OceanBase 社区版 OceanBase 数据库大赛

这本笔记!仅需16个小时,让你像阿里P7一样掌握Spring源码解析

Java 架构 面试 程序人生 编程语言

Groovy入门常用语法

FunTester

Java 语法 测试开发 Groovy FunTester

【Python自动化测试网站推荐】免费资源网址,帮你找到所有想要的资源!!

程序员阿沐

使用AI在原神里自动钓鱼,扫描Git仓库泄露的密码 【蛮三刀酱的Github周刊第三期】

Zhendong

GitHub

8. 这篇博客,把python从数值到模块、到字典、到元组,真python入门复习教程通览

梦想橡皮擦

10月月更

带你读Paper丨分析ViT尚存问题和相对应的解决方案

华为云开发者联盟

论文阅读 华为云 Vision Transformer 卷积核

华为宣布启动“开源雨林”计划,与社区伙伴共迎开源挑战

🐬【MySQL技术专题】该换换你的数据库版本了,让我们一同迎接8.0的到来哦!(初探篇)

码界西柚

MySQL 运维 MySQL8.0 MySQL 数据库 10月月更

一文说清楚css3具有颠覆意义的2D转换效果

你好bk

CSS html css3 大前端 html/css

kubernetes pod访问不了外网但是宿主机可以

ilinux

腾讯云原生数据库 TDSQL-C荣获“云原生卓越技术提供商”奖项

腾讯云数据库

数据库 tdsql

盘盘 DevOps“衍生品”: DevSecOps、NoOps、AIOps

飞算JavaAI开发助手

号角声响!联想图像发起“百家百试”项目第二期,诠释“真国货之光”

必须得会的汽车ECU研发基础--ECU是什么1

SOA开发者

「IM开源推荐」前微信技术专家打造,golang实现,一键部署,客户端SDK全平台支持,轻松替代IM云服务

OpenIM

沈抚示范区·“华为云杯”2021全国AI大赛圆满落幕

华为云开发者联盟

人工智能 华为云 modelarts AppCube AI大赛

MyCAT、DRDS、TIDB、TDSQL、TBase 在实现分布式事务时的区别及其各自的优势?

腾讯云数据库

数据库 tdsql

🚄【Redis基础指南】推荐给大家的「主从模式」+「缓存穿透」的学习小贴士(提炼优化)

码界西柚

redis Redis缓存穿透 10月月更

流计算 Oceanus 限量1元秒杀,立省2000元

腾讯云大数据

ERP系统能帮你做些什么?ERP系统的部署类型哪个更适合你?

低代码小观

企业 企业管理 信息化管理 流程管理

北京博睿宏远数据科技股份有限公司声明

博睿数据

Redis和tdsql数据异地同步(迁移)案例

腾讯云数据库

数据库 tdsql

解读世界互联网大会新品——智能运维2.0,管运提效再升级

云计算

ERP对你有帮助吗?ERP是什么时候开始出现的?

低代码小观

管理 企业 企业管理 运营管理 企业管理系统

Android性能优化之Android 10+ dex2oat实践

字节跳动终端技术

字节跳动 移动开发 Android; 火山引擎

报名|飞桨中国行- AI赋能软硬件产品创新

百度大脑

人工智能 百度 飞桨

TDSQL交易型分布式数据库背景分析

腾讯云数据库

数据库 tdsql

云原生数据库TDSQL-C和传统主备方式数据库有什么区别?

腾讯云数据库

数据库 tdsql

出自阿里P8之手的这份微服务架构实践手册,为何能霸榜GitHub一周

进击的王小二

Java 架构 分布式 微服务

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