从Solr4搜索结果打开Alfresco文档

从Solr4搜索结果打开Alfresco文档,alfresco,solr4,Alfresco,Solr4,我使用的是Alfresco 5.1社区版,其中Solr4配置为搜索服务,事务查询配置为混合(Solr&DB) 当我从下面的URL在Solr GUI中进行搜索时 Solr查询GUI: 我得到以下格式的搜索结果以及一些ID和其他信息 Solr搜索结果(为便于阅读,结果被截断) 我正在尝试构建一个UI,在其中显示的搜索结果中,用户可以单击以在Alfresco中检索相应的文档。下面是我用来从Alfresco检索内容的AlfrescoAPI 用于打开文档的Alfresco API URL: Alfresc

我使用的是Alfresco 5.1社区版,其中Solr4配置为搜索服务,事务查询配置为混合(Solr&DB)

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

Solr查询GUI:

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

Solr搜索结果(为便于阅读,结果被截断)

我正在尝试构建一个UI,在其中显示的搜索结果中,用户可以单击以在Alfresco中检索相应的文档。下面是我用来从Alfresco检索内容的AlfrescoAPI

用于打开文档的Alfresco API URL:

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

示例文档Id:

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

问题:

1) Solr4返回的ID是什么?
2) 如何获取相关的Alfresco文档ID,以便能够从搜索结果中检索相同的ID

编辑:

关于我要求直接使用Solr的一些背景信息

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


提前感谢。

将它作为一个工具来实现会容易得多

使用Web脚本,您可以构建自己的RESTful界面 使用轻量级脚本技术,如JavaScript和 免费标记

使用web脚本,您可以访问:

搜索-- 根对象,提供对各种Alfresco搜索界面的访问 例如FTS Alfresco、Lucene、XPath和保存的搜索结果

您的REST web脚本可能对每个用户都可用,但:


我的Rest查询
/api/my/query
论点

将它作为一个组件来实现要容易得多

使用Web脚本,您可以构建自己的RESTful界面 使用轻量级脚本技术,如JavaScript和 免费标记

使用web脚本,您可以访问:

搜索-- 根对象,提供对各种Alfresco搜索界面的访问 例如FTS Alfresco、Lucene、XPath和保存的搜索结果

您的REST web脚本可能对每个用户都可用,但:


我的Rest查询
/api/my/query
论点
…

1)Solr返回的ID可能是Solr中索引文档的ID。你不能在户外使用它

2) Solr似乎返回节点的DBID。DBID是文件systemModel.xml中定义的aspect sys:referenceable中的sys:node DBID属性,它引用节点的数据库id。 您可以构建一个Alfresco repo webscript,它将此DBID作为参数并返回文档

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

1)Solr返回的ID可能是Solr中索引文档的ID。你不能在户外使用它

2) Solr似乎返回节点的DBID。DBID是文件systemModel.xml中定义的aspect sys:referenceable中的sys:node DBID属性,它引用节点的数据库id。 您可以构建一个Alfresco repo webscript,它将此DBID作为参数并返回文档


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

为您的第二个问题添加一个部分答案,因为查找此信息很困难,而且花费了相当长的时间。(2.如何获取相关的Alfresco文档ID,以便能够从搜索结果中检索到该ID?)

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

  • 转到管理工具->节点浏览器
  • 将查询类型更改为lucene
  • 输入以下搜索词:@sys \:node dbid:YOU\u希望\u查找的\u dbid\u
  • 例如,查看我们的本地solr4错误报告:

    {
      "responseHeader":{
        "status":0,
        "QTime":0,
        "params":{
          "q":"ERROR*"}},
      "response":{"numFound":2,"start":0,"docs":[
          {
            "id":"_DEFAULT_!800000000000008c!8000000000002289",
            "_version_":0,
            "DBID":4499},
    ...
    
    要查找该文档,请搜索:@sys\:node dbid:4499

    您可以在数字DBID周围添加引号-它可以使用引号,也可以不使用引号

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

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

    如有必要,请从更改搜索范围workspace://SpacesStore 到archive://SpacesStore 查找已删除的单据

    您可以按如下所示加入DBID,一次找到所有DBID(至少是同一存储空间中的DBID):


    添加第二个问题的部分答案,因为查找此信息很困难,而且花费了相当长的时间。(2.如何获取相关的Alfresco文档ID,以便能够从搜索结果中检索到该ID?)

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

  • 转到管理工具->节点浏览器
  • 将查询类型更改为lucene
  • 输入以下搜索词:@sys \:node dbid:YOU\u希望\u查找的\u dbid\u
  • 例如,看看我们的
        <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>
    
    {
      "responseHeader":{
        "status":0,
        "QTime":0,
        "params":{
          "q":"ERROR*"}},
      "response":{"numFound":2,"start":0,"docs":[
          {
            "id":"_DEFAULT_!800000000000008c!8000000000002289",
            "_version_":0,
            "DBID":4499},
    ...
    
    @sys\:node-dbid:1234 OR @sys\:node-dbid:2345 OR @sys\:node-dbid:...