首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Solr4搜索结果打开Alfresco文档

从Solr4搜索结果打开Alfresco文档
EN

Stack Overflow用户
提问于 2016-10-14 08:19:53
回答 3查看 837关注 0票数 0

我正在使用Al新鲜co5.1社区版,其中Solr4配置为搜索服务,事务查询配置为混合(Solr & DB)

当我从下面的URL在Solr中进行搜索时

Solr:https://localhost:8443/solr4/#/alfresco/query

我得到以下格式的搜索结果与一些ID和其他信息。

Solr搜索结果(为可读性截断结果JSON )

代码语言:javascript
复制
{
  "responseHeader": {
    "status": 0,
    "QTime": 25,
    "params": {
      "q": "testing",
      "defType": "dismax",
      "qt": "",
      "indent": "true",
      "wt": "json",
      "_": "1476349027637"
    }
  },
  ...
    "docs": [
      {
        "id": "_DEFAULT_!8000000000000040!80000000000008e3",
        "_version_": 0,
        "DBID": 2275
      },
      {
        "id": "_DEFAULT_!8000000000000072!8000000000000902",
        "_version_": 0,
        "DBID": 2306
      },
      {
        "id": "_DEFAULT_!8000000000000040!80000000000008ea",
        "_version_": 0,
        "DBID": 2282
      },
      {
        "id": "_DEFAULT_!800000000000000b!80000000000008ef",
        "_version_": 0,
        "DBID": 2287
      },
      {
        "id": "_DEFAULT_!8000000000000071!80000000000008f0",
        "_version_": 0,
        "DBID": 2288
      },
      {
        "id": "_DEFAULT_!8000000000000025!80000000000008eb",
        "_version_": 0,
        "DBID": 2283
      }
    ]
  },
  "processedDenies": false
}

我正在尝试构建一个UI,在这些搜索结果中,用户可以单击Al新鲜to检索相应的文档。下面是我用来从Al新鲜to检索内容的Alfresco。

打开文档的Alfresco:http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/content?id=

一个示例Alfresco文档ID如下所示。我在Solr4搜索结果中没有返回这样的ID。

示例文档Id:

7edf97f4-43cf-4fe5-8099-85608776d159

问题:

1) Solr4返回的ID是什么?

2)如何才能从搜索结果中检索到相关的Alfresco文档ID?

编辑:

关于我直接使用Solr的需求的一些背景

Alfresco将用于基于内部用户(通常来自Intranet的业务内容管理员)的一些模板创建文档。我们有一个前端网络应用程序(面向客户),这将有一个搜索部分。当用户使用一些关键字(通常是全文搜索)执行搜索操作时,我们将调用Solr来搜索由Business创建的文档中的内容,并且同样的结果将显示在Web应用程序的前端。当用户单击相应的搜索结果时,文档内容将从前面的When应用程序中显示出来。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-14 15:45:01

将其实现为Alfresco脚本要容易得多。

使用JavaScript,您可以使用轻量级的脚本技术(如RESTful和Freemarker )构建自己的JavaScript界面。

使用web脚本,您可以访问搜索根对象

search - org.alfresco.repo.jscript.Search - Root对象,提供对各种Alfresco搜索接口的访问,如FTS、Lucene、XPath和保存的搜索结果。

除了以管理员身份运行之外,每个用户都可以使用您的REST web脚本。

代码语言:javascript
复制
    <webscript>
      <shortname>My Rest Query</shortname>
      <url>/api/my/query</url>
      <format default="json">argument</format>
      <authentication runas="admin">guest</authentication>
      <transaction allow="readonly">required</transaction>
    </webscript>

有很多教程..。

票数 3
EN

Stack Overflow用户

发布于 2016-10-15 11:08:34

1) Solr返回的ID可能是Solr中索引文档的ID。你不能把它和阿尔弗雷科一起用。

2) Solr似乎返回节点的DBID。DBID是在文件systemModel.xml中定义的从方面sys: node :可引用的属性sys:node,该属性引用节点的数据库id。您可以构建一个,它以这个DBID为参数并返回文档。

但是,作为想想看,您最好直接要求Alfresco执行Solr查询。它将返回包含所需的所有元数据的文档列表,包括每个文档的下载URL。

票数 2
EN

Stack Overflow用户

发布于 2017-11-28 00:28:00

为你的第二个问题添加一个部分的答案,因为定位这个信息很难,而且花费了相当长的时间。(2.如何才能从搜索结果中检索到相关的Al新鲜to文档ID ?)

若要查找与该DBID关联的文档,可以使用以下搜索语法:

  1. 转到Admin ->节点浏览器
  2. 将查询类型更改为lucene
  3. 输入以下搜索术语:@sys\:node:_DBID_YOU_FIND_TO_FIND

例如,查看本地solr4错误报告:

代码语言:javascript
复制
{
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"ERROR*"}},
  "response":{"numFound":2,"start":0,"docs":[
      {
        "id":"_DEFAULT_!800000000000008c!8000000000002289",
        "_version_":0,
        "DBID":4499},
...

若要查找该文档,请搜索:@sys\:node:4499

您可以在数字DBID周围添加引号--它适用于或不使用它们。

“@”和第一个反斜杠'\‘(转义第一个冒号)是必需的--如果删除了查询并将错误记录在catalina.out中,则查询中断。

第二个冒号不能包含反斜杠转义-它不是一个错误(日志中没有任何内容),但不会找到任何结果。

如果有必要,将工作区://SpacesStore中的搜索范围更改为归档://SpacesStore,以定位已被删除的文档。

您可以加入DBID,如下所示,同时找到它们(至少在相同的空间存储区中):

代码语言:javascript
复制
@sys\:node-dbid:1234 OR @sys\:node-dbid:2345 OR @sys\:node-dbid:...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40038343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档