从Solr4搜索结果打开Alfresco文档
我使用的是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是什么?从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
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:...