使用alfresco search.luceneSearch或search.lib.js使用特定类别名称读取所有文档

时间:2014-07-24 13:41:58

标签: lucene alfresco alfresco-share web-scripting

类别名称 |  地理(8)  研究Db(18)

我在露天实施我自己的预先搜索。我需要阅读与特定类别相关的所有文件。

示例:

如果地理位置下有20个文件,则lucene查询应该在搜索关键字“banana”下阅读特定文件。

进一步说明 -  我正在使用search.lib.js进行搜索。我想分析结果,以找出文件属于哪个类别。例如,我想知道有多少文档属于语言和子类别下的类别。我尝试使用Classification API但我没有得到我想要的结果。任何想法如何通过结果来获取每个文档的类别名称?

是否有像node.properties [“cm:creator”]这样的简单方法?

感谢

janaka

2 个答案:

答案 0 :(得分:0)

我认为你应该更多地指出你的问题:

  1. 您使用的是cm:内容还是自定义内容?
  2. 您要在文件内容中搜索关键字吗?或者您要在特定元数据中搜索关键字?
  3. 您想创建一个webscript(java或javascript)吗?
  4. 需要考虑的一件事:

    如果您使用+ PATH:“cm:generalclassifiable / ....”进行lucene查询中的分类,性能将会很慢(遵循我的经验)

答案 1 :(得分:0)

您可以使用例如下一个查询来查找 / cm以下任意深度的所有节点:语言

var results = search.luceneSearch("+PATH:\"cm:generalclassifiable/cm:Languages//*\");

看一下这个网址:https://wiki.alfresco.com/wiki/Search#Path_Queries

获得所有元素后,您可以循环播放所有元素,并进入下面的哪个类别。当然,您需要为每个类别/子类别创建一些计数器:

for(i = 0; i < results.length; i++){
    var node = results[i];
    var categoryNodeRef = node.properties["cm:categories"];
    var categoryDesc = categoryNodeRef.properties["cm:description"];
    var categoryName = categoryNodeRef.properties["cm:name"];
}

这不完全是解决方案,但开始时可能是一个有用的想法。

对不起,如果不是你要求的,我刚从假期来到。