限时领|《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:151083

评论

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

基于Web的6个完美3D图形WebGL库

2D3D前端可视化开发

前端开发 WebGL webgl库 3d图形库 webgl框架

李志飞回媒体“出门问问硬件和ToB业务”表现不错,将做中国 OpenAI,美国YC项目1/3已基于大模型

B Impact

新必应(New Bing)申请与使用教程

kcodez

聊天机器人 ChatGPT newbing 新必应

Zebec完成BNB Chain以及Near链上协议部署,多链化进程加速

股市老人

「推荐收藏!」【MySQL技术之旅】(4)总结和盘点优化方案系列之常用SQL的优化

码界西柚

MySQL 数据库 2月日更 优化专题

重磅!GitLab 提出五大预测,洞见 2023 年 DevSecOps 发展趋势

极狐GitLab

DevOps 安全 DevSecOps 安全左移 供应链安全

CleanMyMac更新最新版本x4.12.5

茶色酒

CleanMyMac X2023

飞书首次披露2022年1亿美金ARR,明确 TO B商业化立场

B Impact

【ECCV 2022】高效视频学习框架 EVL,CLIP 助力视频识别

Zilliz

业务+研发=一体化管理平台?

没有用户名丶

小程序化

docker jenkins

平凡人生

vue项目中webpack-dev-server的open和host0.0.0.0配置冲突

咖啡教室

Vue webpack

DawnSql超越传统数据仓库

陈飞

分布式数据库 实时数仓 数仓 实时数据湖

使用开源实时监控 HertzBeat 5分钟搞定 Linux 监控

TanCloud探云

Java GitHub 开源

智慧赋能,Analysys易观宣布接入百度“文心一言”能力,共同打造数字经济智慧分析全系产品及服务

易观分析

易观新闻 易观

Zebec完成BNB Chain以及Near链上协议部署,多链化进程加速

鳄鱼视界

DawnSql构建数仓--DawnSql集群的安装

陈飞

分布式数据库 实时数仓 实时数据引擎 实时数据平台

面试官:熔断和降级有什么区别?

王磊

java面试

通过案例理解MQTT主题与通配符

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 通配符

API+DevOps:华为云API Arts一体化平台,端到端呵护您的API

API

小游戏也能脱离微信运行到自己的app中

Onegun

微信小程序 小游戏 小游戏开发 微信小程序-游戏

TO B Ask100-1、2| 破解“ All in one”悖论;如何降低客户成功成本?

B Impact

无FTTR不千兆,华为星光F30让家中不再有“隐秘的角落”

脑极体

华为 宽带 光纤

2023 年 dotnet 仓库社区年度调查已经开始

newbe36524

C#

「 Java基础-泛型 」一文说清Java泛型中的通配符T、E、K、V、N、?和Object的区别和含义

小刘学编程

Java 源码阅读 Java泛型 构架师

不是留给飞书的时间不够,而是中国To B需要重塑时间观

B Impact

《数字经济全景白皮书》金融篇:五十弦翻塞外声,金融热点领域如何实现增长?

易观分析

金融 经济

java高级工程师体系课第四周作业

刘博

2023-02-16:两种颜色的球,蓝色和红色,都按1~n编号,共计2n个, 为方便放在一个数组中,红球编号取负,篮球不变,并打乱顺序, 要求同一种颜色的球按编号升序排列,可以进行如下操作: 交换相邻

福大大架构师每日一题

算法 rust 福大大

这些「误区」99%的研发都踩过

程序人生 职场

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