问题标签 [jcr-sql2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jcr - 长耳兔橡木索引
我正在执行这个 JCR SQL2 查询:
并得到我应该创建索引的警告:
我做了,像这样:
其中 propertyName 是以下字符串之一:deleted、state、jcr:localname、jcr:path、jcr:property、jcr:fullText、property、localname、path、user、fullText
但我仍然收到警告,我猜这意味着我的索引不会被使用。当我打印出所有可用的索引时,我得到以下信息:
可用索引:deleted, repMembers, counter, state, jcr:localname, jcr:path, acPrincipalName, jcr:property, jcr:fullText, uuid, property, localname, nodetype, reference, principalName, path, user, authorizableId, fullText
所以看起来我的索引是在一些 jcr 默认索引已经存在的地方创建的,比如 nodetype、acPrincipalName、reference、repMembers、authorizableId 和 counter
任何提示我在这里做错了什么?我只想确保查询尽可能快,所以我真的很想知道如何创建 Oak 将使用的索引。
我使用的是 Oak 1.5.12 版本,我的存储库是这样实例化的:
xpath - 搜索功能在 AEM 中的工作原理
从 AEM 文档中,我可以弄清楚如何为 AEM 内容搜索编写查询,但是搜索功能在 AEM 中如何工作?哪个包或框架具有搜索内容并呈现回来的魔力。使用搜索查询时如何遍历内部内容?
aem - AEM 6.2 JCR 查询节点属性而不是 JCR 创建/修改/发布日期?
我正在尝试编写一个查询,我可以从 AEM 中的某个位置获取内容,该位置可以追溯到 24 个月前的今天,但该日期不基于发布/修改/创建日期。他们要求日期基于称为“发布日期”的内容。
我在创建日期后有以下工作:
但我真的需要它离开这里找到的内容的“发布发布日期”:
我可以加入或使用某些东西来使用节点的属性作为发布日期而不是[jcr:created]
作为我的范围吗?或者我是否必须执行查询,将其保存在临时列表中并根据发布日期的节点属性采取措施?
jcr - 存储在 Jackrabbit 中的文档的唯一标识符
我对 Apache Jackrabbit 相当陌生,据我检查,我无法得到这个问题的具体答案。因此,我发布以下问题:
我需要存储在 Jackrabbit 中的文档的唯一标识符(无论文档是存储在文件系统还是数据库中)。我确实getIdentifier()
在javax.jcr.Node
. 但不确定它是否对存储库中的每个文档节点都是唯一的,以及我是否可以依靠这个标识符来获取文档以进行更新或删除?
基本上,我正在寻找一个唯一标识符,例如返回的唯一标识符new IDfSysObject().getObjectId().getId()
,以防Documentum
我可以回溯文档。
jcr - 删除时找不到 Jackrabbit 中复制节点的节点标识符
我使用 Jackrabbit 复制了一个节点session.getWorkspace().copy(sourceNode.getPath(), destinationNode.getPath())
据我所知,此操作更改会立即持续存在。但是,当我尝试使用 获取复制的节点以将其删除时session.getNodeByIdentifier("nodeId of copied node")
,它会给出 ItemNotFoundException。该错误的原因是复制的节点mix:referenceable
在复制期间丢失了属性,这导致 getNodeByIdentifier 失败。
问题是如何将mix:referenceable
属性设置为复制的节点,因为复制操作后我无法从会话中获取节点。有人可以帮我解决这个问题吗?
更新:
代码:
例外:
线程“主”javax.jcr.InvalidItemStateException 中的异常:无法更新陈旧的项目:org.apache.jackrabbit.rmi.server.ServerObject.getRepositoryException(ServerObject.java:111) 中的 item.save() 在 org.apache。 jackrabbit.rmi.server.ServerSession.save(ServerSession.java:265) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl。在 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346) 在 sun.rmi.transport.Transport 的 java.lang.reflect.Method.invoke(Method.java:498) 调用(DelegatingMethodAccessorImpl.java:43) $1.run(Transport.java:200) 在 sun.rmi.transport.Transport$1.run(Transport.java:197) 在 java.security.AccessController。在 sun.rmi.transport.Transport.serviceCall(Transport.java:196) 在 sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) 在 sun.rmi.transport.tcp 的 doPrivileged(Native Method)。 TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) 在 java.security.AccessController.doPrivileged(Native Method) 在 sun .rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor .java:617) 在 java.lang.Thread.run(Thread.java:748) 在 sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276) 在 sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253) 在 sun.rmi.server.UnicastRef.invoke(UnicastRef.java:162) 在 org.apache.jackrabbit.rmi.server.ServerXASession_Stub.save (来源不明)在 org.apache.jackrabbit.rmi.client.ClientSession.save(ClientSession.java:272)
请注意,我使用的是 JCR 2.0 此外,如果我将代码更改为session.refresh(false)
,代码工作正常,但我无法从会话中找到节点标识符来删除相同的节点标识符,这是我最初的问题。
jcr - 为什么 CONTAINS 在 JCR-SQL2 中找到不相等的文本字符串?
使用 JCR-SQL2 查询时,我注意到CONTAINS
运算符找到的节点与条件中的字符串不完全相同。
例子
以下查询:
不仅会找到包含my/search-expression
字符串的节点,还会找到带有类似my/another/search/expression
.
为什么查询不能只找到提供的确切字符串?如何更改以缩小结果范围?
此问题旨在由我自己回答,以共享知识 - 但请随时添加您自己的答案或改进现有答案。
magnolia - JCR-SQL2过滤查询以仅获取空节点
我有以下 JCR-SQL2-Query:
现在我得到了所有名为“NameOfTheNode”的节点。但我想将结果限制为分别为空的节点没有子节点。
我怎么能那样做?
lucene - JCR-SQL - 包含函数不转义特殊字符?
我有以下查询字符串:
SELECT jcr:title, jcr:created, jcr:description FROM cq:PageContent WHERE jcr:path LIKE '/content/.../%' AND CONTAINS (., '*') ORDER BY date ASC
问题是查询正在返回给定路径中的所有节点,即使它们在任何属性中都没有星号。我想转义星号字符,但结果是一样的。我试过这样的事情:
SELECT jcr:title, jcr:created, jcr:description FROM cq:PageContent WHERE jcr:path LIKE '/content/.../%' AND CONTAINS (., '\*') ORDER BY date ASC
甚至是这样的:
SELECT jcr:title, jcr:created, jcr:description FROM cq:PageContent WHERE jcr:path LIKE '/content/.../%' AND CONTAINS (., '\*\*\*\*\*\*\*\*\*\*\*') ORDER BY date ASC
在所有这些查询中,结果是相同的,即使这些页面都没有包含星号字符的属性(或其中 11 个)
jcr:contains 函数的文档说:
在单引号 (“'”) 的 searchexp 文字实例中,双引号 (“"”) 和连字符 (“-”) 必须用反斜杠 (“\”) 转义。因此,反斜杠本身也必须转义,以结束作为双反斜杠(“\”)。
没有提到其他字符*
,因此即使没有任何转义(?),它也应该可以工作。请让我理解为什么我在这里得到这样的结果以及如何正确地转义这些字符。
aem - jcr sql-2 获取节点名
我正在使用 aem 6.3 并想获取页面名称
SELECT * FROM [cq:Page] WHERE ISDESCENDANTNODE("/content/Product/Silhouettes/Accessories/Bands/Headband")
如果我需要使用 sql-2 检索节点的名称,我该如何实现?
aem - SQL2 查询在路径中搜索当前路径(在路径字段或 RTE 中定义)
如何使用 sql2 查询执行以下操作:
要求:
小路:/content/consumer
- 转到一个节点级别,例如:/content/consumer/en-us
- 搜索在“/content/consumer/en-us”等路径字段中创作的字符串
- 如果
(current Node != Pathfield)
然后显示它。
重复从 1 到 3 的所有其他语言环境(en-ca、fr-fr、de-de 等)的步骤。
这是我尝试过的:
如果我运行:
这将显示所有路径,而与本地无关。我正在寻找的是:/content/consumer/[^en-us]%(即不像 en-us)。
这是我到目前为止所做的:
问题出在查询生成器中,我得到的命中数远远少于 crxde 中的裸 xpath 查询: