【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

创建基于查询参数的包

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

评论

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

百图生科AIGP平台发布:提供多种蛋白质生成能力,邀伙伴联手开发“新物种”

硬科技星球

就在明天!用友企业数智化财务峰会落地广州,聚焦实现业财合一新价值

用友BIP

Redis高频40问

程序员大彬

Java Redis redis 底层原理

币安/欧意合约自动跟单软件开发源代码

开发v-hkkf5566

又发现一个开源商城项目,谷粒商城外又多了个选择

马丁玩编程

解决90%面试问题!GitHub顶级"Java面试手册"了解下八股文天花板

三十而立

Java java面试

关于 MyBatis 我总结了 10 种通用的写法

三十而立

Java mybatis

从GPT-4、文心一言再到Copilot,AIGC卷出新赛道?

引迈信息

微软 AIGC 文心一言 GPT-4

TitanIDE:云原生开发到底强在哪里?

行云创新

ide 云原生 云开发

经过小折腾,可算是把 Code Coverage API 用上了

HoneyMoose

任务卷轴模式系统开发NFT技术

薇電13242772558

系统

如何高效搭建资产管理平台?众安科技告诉你答案是图技术

NebulaGraph

图数据库

ShareSDK iOS端如何实现微信分享链接与登录

MobTech袤博科技

龙蜥白皮书精选:敏捷开发场景下的调度器热升级 SDK

OpenAnolis小助手

敏捷开发 sdk 白皮书 调度器 龙蜥社区

记录丨阿里云校招生的成长经历

阿里巴巴云原生

阿里云 云原生 校招

设计师的魔法:让你的冰冷设备即刻变成迪士尼

鼎道智联

设计 动效设计

VisBug:助力前端开发的浏览器插件

南城FE

CSS 效率工具 前端 浏览器 插件

git客户端软件:Sublime Merge 激活版

真大的脸盆

Mac Mac 软件 Git客户端

面试造火箭?GitHub飙升“2023(Java 岗)面试真题汇总”转载40万

三十而立

Java java面试

用AI回忆起曾被忘却的语言

白洞计划

AI

《云原生架构容器&微服务优秀案例集》惊喜来袭

阿里巴巴云原生

阿里云 容器 微服务 云原生

GPT-4 可以开始测试了

HoneyMoose

模型驱动软件开发 打造企业数字化未来

力软低代码开发平台

百度安全助力小度智能屏通过中国泰尔实验室适老化技术测试认定

百度安全

智能硬件

智慧公厕:未来城市的必备设施

光明源智慧厕所

物联网 智慧城市

永洪BI、瓴羊Quick BI领衔国产BI工具

巷子

MobTech|如何选择应用内广告SDK产品

MobTech袤博科技

阿里云高级技术专家林立翔:基于阿里云弹性GPU服务的神龙AI加速引擎,无缝提升AI训练性能

云布道师

阿里云 AI

Dubbo + ZooKeeper丨如何解决线上故障排查链路长的难题

阿里巴巴云原生

阿里云 开源 云原生 dubbo Zookeepe

游戏版《西部世界》来了!NPC全由AI操控,行动自如有理想和记忆,基于最新GAEA技术系统打造

Openlab_cosmoplat

AI 游戏 开源社区

【iOS逆向与安全】利用IDAPython插件提高反汇编和逆向工程效率

小陈

安全 逆向 iOS逆向 ios安全 逆向分析

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