2016-10-14 17 views
0

我使用Alfresco的5.1社區版與Solr4配置爲搜索服務,並配置爲混合交易查詢(Solr的& DB)開幕露天文件

當我從下方Solr的GUI搜索URL

Solr的查詢界面:https://localhost:8443/solr4/#/alfresco/query

我得到以下格式的搜索結果與一些ID &其他信息。

Solr的搜索結果(結果JSON截斷可讀性)

{ 
    "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其中顯示這些搜索結果中,用戶可以通過點擊檢索露天相應文檔。下面是我用來從Alfresco檢索內容的Alfresco API。

露天API URL打開一個文件:http://localhost:8080/alfresco/api/-default-/public/cmis/versions/1.1/atom/content?id=

樣品露天文檔ID看起來像如下所示的一個。我沒有在Solr4搜索結果中返回這樣的ID。

樣本文檔編號:

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

問題:

1)什麼是Solr4返回的​​ID?
2)如何獲取相關的Alfresco文檔ID以便能夠從搜索結果中檢索相同的文檔ID?

編輯:

一些背景知識對我的要求使用Solr的直接

Alfresco的將被用於創建基於由INTERAL用戶提供一些模板(從內聯網業務內容管理員通常)文件。我們有一個前端Web應用程序(面向客戶),它將有一個搜索部分。當用戶使用某些關鍵字(通常爲全文搜索)執行搜索操作時,我們將調用Solr API來搜索由Business Admins創建的文檔中的內容,並且相同的結果將顯示在Web應用程序的前端。當用戶點擊各自的搜索結果時,文檔內容將從前端Web應用程序上顯示的Alfresco &中檢索。

在此先感謝。

+0

你爲什麼直接調用SOLR?爲什麼不寫一個共享頁面(很可能使用Aikau),並讓Alfresco與SOLR +爲你繪製文檔進行交談? – Gagravarr

+0

感謝您的更新@Gagravarr。我是Alfresco的新手,我在這裏學習東西。任何關於如何做到這一點的指針?最好是文檔或例子? – Venkat

+0

https://github.com/Alfresco/Aikau/blob/master/tutorial/chapters/Contents.md和http://docs.alfresco.com/5.1/concepts/dev-extensions-share-override-ootb-aikau -pages.html和https://docs.google.com/document/d/1q25jA5EQ5PRYekr8tpM3ELlwOQ8Ht3Ng6D4VWsKoZtY/pub將是我建議的出發點 – Gagravarr

回答

3

將它實現爲Alfresco Web Script會容易得多。

隨着Web腳本,你可以建立自己的RESTful接口 使用輕量腳本技術如JavaScript和 Freemarker的這樣。

使用web腳本,您可以訪問search root object

搜索 - org.alfresco.repo.jscript.Search - 根對象提供訪問各種露天搜索界面 如FTS-露天,Lucene的,XPath和保存搜索結果

您的REST網絡腳本可能會提供給每個用戶,但run as admin

<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> 

有許多tutorials ...

+0

輝煌!正是我在找什麼。對於那些正在尋找特定於搜索的Web腳本的人,您可以使用http:// localhost:8080/alfresco/service/index/package/org/alfresco/repository/search *注意:*如@imagine所述,這個,必須登錄到Alfresco。 – Venkat

2

1)的Solr返回的ID可能是Solr中的索引文件的ID。你不能和Alfresco一起使用它。

2)似乎Solr返回節點的DBID。 DBID是來自文件systemModel.xml中定義的方面sys:referenceable的屬性sys:node-dbid,它指向節點的數據庫ID。 您可以構建一個將此DBID作爲參數並返回文檔的Alfresco repo webscript。

但是作爲imagine said,您最好直接詢問Alfresco來執行您的Solr查詢。它會返回包含您需要的所有元數據的文檔列表,包括每個文檔的下載URL。

0

爲您的第二個問題添加部分答案,因爲查找此信息非常困難並花了相當長的一段時間。 (2.如何獲得相關文件的Alfresco ID能夠檢索搜索結果中的一樣嗎?)

要查找與DBID相關的文件,你可以使用下面的搜索語法:

  1. ,進入管理工具 - >節點瀏覽器
  2. 更改查詢類型Lucene的
  3. 輸入以下搜索詞:@sys \:節點DBID:THE_DBID_YOU_WANT_TO_FIND

例如,LO在我們當地solr4錯誤報告歐凱:

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

要查找的文件,請搜索:@sys \:節點DBID:4499

您可以添加圍繞數字DBID報價 - 這與不工作他們。

'@'和第一個反斜槓'\'(轉義第一個冒號)是REQUIRED - 如果這些查詢被移除並且將在catalina.out中記錄錯誤,查詢會中斷。

第二個冒號絕不能包含反斜槓轉義 - 它不是一個錯誤(沒有在日誌中),但沒有找到結果。

如有必要,請將搜索範圍從工作區:// SpacesStore更改爲存檔:// SpacesStore以查找已刪除的文檔。

你可以加入DBID的,如下圖所示,一次(至少是在相同的空間存儲)找到他們:

@sys\:node-dbid:1234 OR @sys\:node-dbid:2345 OR @sys\:node-dbid:...