标签: jcr-sql2

Apache Jackrabbit JCA 2.7.5 .docx和.xlsx索引

我正在使用Appache Jackrabbit JCA 2.7.5,问题是文件.docx和.xlsx没有编入索引.

我的步骤:

  • 像在glassfish上一样部署Jackrabbit JCAresource adapter
  • 创建一个Connector Connection Pool用于resource adapter指示ConfigFile=path/to/the/repository.xmlHomeDir=path/to/the //miss the repository.xml
  • Connector Resources为连接器池(jndi)创建一个
  • 创建Web应用程序
  • 创建类以从连接器资源获取会话(下面的代码)

    import java.io.Serializable;
    import java.net.MalformedURLException;
    import javax.annotation.Resource;
    import javax.ejb.Stateless;
    import javax.jcr.LoginException;
    import javax.jcr.Repository;
    import javax.jcr.RepositoryException;
    import javax.jcr.Session;
    import javax.jcr.SimpleCredentials;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    @Stateless
    public class OcmRepository implements Serializable {
    
        public Repository repository;
        public Session session;
    
        public OcmRepository() {
        }
    
        public Session getSession(String log, String mdp) throws LoginException, RepositoryException, NamingException, MalformedURLException { …
    Run Code Online (Sandbox Code Playgroud)

java jackrabbit jcr java-ee jcr-sql2

21
推荐指数
1
解决办法
580
查看次数

如何在jackrabbit中获取旧版本节点的属性?

我创建了节点并创建了3个版本.

String path = "/my111";
MyClass m1  = new  MyClass();
m1.setPath(path);
m1.setName("Myname");
m1.setLanguage("English");      
ocm.create(m1);
ocm.save();     

for (int i = 0; i < 4; i++) {
 ocm.checkout(path);
 m1.setName("mz676666" + i);
 ocm.update(m1);
 ocm.save();
 ocm.checkin(path);         
  } 

 VersionIterator iterator = ocm.getAllVersions(path);
 while (iterator.hasNext()) {
      Version version = (Version)iterator.next();
       System.out.println("version::"+version.getName());           
}


Output :

version::jcr:rootVersion
version::1.0
version::1.1
version::1.2
version::1.3
Run Code Online (Sandbox Code Playgroud)

现在我想得到name一个版本1.2..

我试过了

org.apache.jackrabbit.ocm.version.VersionIterator iterator = ocm.getAllVersions(path);
    while (iterator.hasNext()) {
        Version version = (Version)iterator.next();
        System.out.println("version::"+version.getName());

    MyClass m1 = (MyClass) ocm.getObject(path, version.getName());
    System.out.println(m1.getName());  // But …
Run Code Online (Sandbox Code Playgroud)

java jackrabbit jcr jcr-sql2

8
推荐指数
1
解决办法
1574
查看次数

JCR SQL2多值属性搜索

我想在内容存储库中使用一个或多个值作为多值属性的输入参数进行搜索.例如:查找主要类型为'nt:unstructured'的所有节点,其属性'multiprop'(多值属性)包含两个值都是"一"和"两".

queryString传递给queryManager.createQuery的方式应该如何?

谢谢.

jcr multivalue modeshape jcr-sql2

7
推荐指数
1
解决办法
4722
查看次数

如何使用多个isdescendantnode使用order

我试图从jcr中的不同区域抓取相同类型的多个节点,并按日期排序.

SELECT * FROM [social:asiResource] 
WHERE [sling:resourceType] = 'social/qna/components/hbs/topic' AND 
[isFeatured_b] = true AND 
NOT CONTAINS([cq:tags],'administrative:blacklist') AND 
(ISDESCENDANTNODE([/path/to/content]) OR 
ISDESCENDANTNODE([/path/to/content]))
ORDER BY [cq:lastModified] DESC
Run Code Online (Sandbox Code Playgroud)

这将返回正确的结果集,但不是正确的顺序.事实上改变DESCASC不以任何方式改变的结果.

我的解决方案目前是进行多个查询并执行一个允许ORDER BY按照它应该运行的联合.

SELECT * FROM [social:asiResource] 
WHERE [sling:resourceType] = 'social/qna/components/hbs/topic' AND 
[isFeatured_b] = true AND 
NOT CONTAINS([cq:tags],'administrative:blacklist') AND 
ISDESCENDANTNODE([/path/to/content]) 
UNION 
SELECT * FROM [social:asiResource] WHERE 
[sling:resourceType] = 'social/qna/components/hbs/topic' AND 
[isFeatured_b] = true AND 
NOT CONTAINS([cq:tags],'administrative:blacklist') AND 
ISDESCENDANTNODE([/path/to/content])
ORDER BY [cq:lastModified] DESC
Run Code Online (Sandbox Code Playgroud)

不幸的是,我正在搜索大约30个节点,使后一个查询无法使用.有没有办法使用ORDER BY而不使用UNION

jcr jcr-sql2 aem

6
推荐指数
1
解决办法
625
查看次数

如何在Apache Jackrabbit上运行查询,并举例说明

我正在使用Apache Jackrabbit作为数据库。

In my case, root node has numbers of child nodes(only at depth 1).
All child node has unique name, i.e., some Integer.
Each child Node have some properties that I have used further.
Run Code Online (Sandbox Code Playgroud)

我的任务

我必须采取其键(整数值)最小的前10个节点。

我的想法

为了实现上述目标,我进行了一个查询,以对所有子节点的键进行排序,并选择前10位。然后使用该键,获得所有对应的节点,并在工作后删除所有这些键/值对。

为此,我在互联网上搜索了很多运行查询的方法。您能告诉我如何在apache jackrabit上运行查询吗?如果您通过示例进行说明,那就很好。

编辑编号 1个

公共课程JackRabbit {

public static void main(String[] args) throws Exception {

    try {

        Repository repository = JcrUtils.getRepository("http://localhost:4502/crx/server");
        javax.jcr.Session session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()));

        Node root = session.getRootNode();


        // Obtain the query manager for the session via the workspace …
Run Code Online (Sandbox Code Playgroud)

java database jackrabbit jcr jcr-sql2

5
推荐指数
2
解决办法
8731
查看次数

JCR SQL2 - JCR 浏览器中的结果查询顺序

我使用一个应用程序,我们可以在其中操作 JCR 节点,通常您会重命名、删除、删除或移动它们。

使用 JCR API,我可以访问存储库中的节点并按照它们在 JCR 中的顺序返回一组节点。

我希望能够使用 JCR SQL2 查询来做同样的事情。我没有发现任何关于此的信息,现在开始相信这是不可能的。

例如,如果我有一个 JCR 树,例如:

parentNode
|_childNode1
|_childNode2
|_childNode3
|_childNode4
Run Code Online (Sandbox Code Playgroud)

当使用 JCR SQL2 查询时,它会以不同的顺序返回它们:childNode1、childNode2、childNode3、childNode4

我查看这些文档等: http: //docs.jboss.org/jbossdna/0.7/manuals/reference/html/jcr-query-and-search.html#jcr-sql2-query-language http://www .day.com/specs/jcr/2.0/6_Query.html

提前致谢


编辑:如果Java用于您的搜索是一个选项,您可能想通过java查看JCR repo中的递归搜索

不过可能不是最有效的,所以请注意性能损失。

sorting jcr jcr-sql2

5
推荐指数
1
解决办法
3556
查看次数

SQL2 - 获取子节点属性

这似乎是一个相当简单的查询,但我一直在敲打我的头几个小时.我有一个类似于下面的节点结构:

food-group
    jcr:content
        nuts -> type=almonds
        meat -> beef=true
        fruit -> type=apples,oranges,bananas
Run Code Online (Sandbox Code Playgroud)

我需要从子节点收集三种类型的属性:一个是字符串,布尔和字符串数组.我认为以下sql2查询将工作并获取它们的属性,但无论出于何种原因我收到错误:

QUERY

SELECT 
    parent.* 
FROM 
    [cq:PageContent] AS parent 
INNER JOIN 
    [nt:base] as child ON ISCHILDNODE(parent) 
WHERE 
    ISDESCENDANTNODE(parent, [/content/grocerystore/food/])"
Run Code Online (Sandbox Code Playgroud)

错误:

Need to specify the selector name because the query contains more than one selector.
Run Code Online (Sandbox Code Playgroud)

感谢任何帮助,因为我过去几天一直在这里.

jcr jcr-sql2 aem

3
推荐指数
1
解决办法
5740
查看次数

如何在JCR SQL2查询中转义动态生成的String值?

让我假装我有一个像这样的JCR 2查询字符串:

String sql2Query = "SELECT * FROM [cq:PageContent] " +
                   "WHERE [aProperty] <> \" + aValue + "\"";
Run Code Online (Sandbox Code Playgroud)

是否有帮助方法可以逃脱aValue

顺便说一句,我已经知道在SQL2中我们可以使用占位符进行查询,让框架为我们处理值的转义,但如果我要动态创建这个查询,我怎么能逃避aValue以防止SQL注入以及建立破碎的查询?

java jackrabbit jcr jcr-sql2

3
推荐指数
1
解决办法
1759
查看次数

为什么 CONTAINS 在 JCR-SQL2 中发现不相等的文本字符串?

使用 JCR-SQL2 查询时,我注意到CONTAINS操作符找到的节点与条件中的字符串不完全相同。

例子

以下查询:

SELECT * FROM [nt:base] AS s WHERE CONTAINS(s.*, 'my/search-expression')
Run Code Online (Sandbox Code Playgroud)

不仅会找到包含my/search-expression字符串的节点,还会找到带有像my/another/search/expression.

为什么查询不能只找到提供的确切字符串?如何更改以缩小结果范围?

这个问题旨在由我自己回答,用于知识共享 - 但可以随意添加您自己的答案或改进现有答案。

jcr jcr-sql2

3
推荐指数
1
解决办法
3015
查看次数

JCR按路径查询

我试图通过此查询查询给定节点类型的子树:

SELECT * FROM [my:Type] AS my WHERE PATH(my) LIKE '/content/subtree/%'
Run Code Online (Sandbox Code Playgroud)

不知怎的,它没有给出任何结果 - 使用ISDESCENDANTNODE工作 - 但是只要我总共有> 5k个元素,查询性能就很糟糕 - 无论是在我的子树内部还是外部.

java jackrabbit jcr jcr-sql2

2
推荐指数
1
解决办法
8124
查看次数

了解CQ5 Lucene索引规则

信息: 我已经为cq5提供了索引配置文件.我没有通过指定以下规则索引属性cq:template:

<index-rule nodeType="nt:base">
 <property nodeScopeIndex="false">cq:template</property>
</index-rule>
Run Code Online (Sandbox Code Playgroud)

我重建了索引.日志显示重新索引已正确完成.

我面临的问题: 当我执行以下SQL2查询时,它给出了与没有上述索引规则时给出的相同的结果:

SELECT s.[cq:template] FROM [nt:base] AS s WHERE s.[cq:template] like '/apps/geometrixx/templates/contentpage'
Run Code Online (Sandbox Code Playgroud)

lucene jcr-sql2 aem

2
推荐指数
1
解决办法
3273
查看次数

Cq5中的查询构建器API

嗨,我正在实现一个Java模块来获取具有特定组件的页面.下面是我使用的代码片段,但在运行模块时会收到警告说没有找到PredicateEvaluator 'sling:resourceType'.请建议我将resourceType属性作为查询参数的正确方法

Map<String, String> predicateMap = new HashMap<String, String>();
predicateMap.put("path","/content/geometrixx-outdoors/en/men");
predicateMap.put("type", "cq:Page");
predicateMap.put("sling:resourceType", "geometrixx-outdoors/components/title");
predicateMap.put("p.limit", "-1");
QueryBuilder queryBuilder = slingScriptHelper.getService(QueryBuilder.class);
com.day.cq.search.Query queryObj = queryBuilder.createQuery(PredicateGroup.create(predicateMap), session);
Run Code Online (Sandbox Code Playgroud)

jcr jcr-sql2 aem

0
推荐指数
1
解决办法
549
查看次数

标签 统计

jcr-sql2 ×12

jcr ×11

jackrabbit ×5

java ×5

aem ×4

database ×1

java-ee ×1

lucene ×1

modeshape ×1

multivalue ×1

sorting ×1