2011-07-05 96 views
0

我是Jackrabbit的新手。在我們的應用程序中,我們從未打開repository.xml(如workspace.xml)文件中的SearchIndex節,因爲我們總是使用JCR UUID引用直接訪問給定的文檔。我們使用Jackrabbit v2.2.1Oracle作爲存儲庫。現在我們的需求正在擴大,因爲我們希望使用文檔元數據功能來存儲關於文檔的上下文信息,以便我們可以使用元數據來檢索選定的一組文檔。Jackrabbit XPath問題

作爲第一步,我在workspace.xml文件中添加了默認SearchIndex部分並重新啓動了JCR。

我在日誌文件中看到了一堆這樣的線條 - 然後我看到它在工作區域下創建了索引文件夾。

2011-07-05 15:04:01.724 INFO [Web容器:0] MultiIndex.java:1204索引.../VFS:元數據/ 21ee130e-978e-415F-bfd1-7aa03d91​​608c/VFS:屬性(3500 )

我有這樣的文件夾結構。當我在創建JCR一個文檔,我指定元數據信息作爲其是由一個複雜的XSD類型與像DOCTYPE,uploadedBy,contextValue標記文檔的一部分,等等

/ (root) 
    /MyApp (sub-folder) 
     /documents/ (sub-folder) 
     /document-1.pdf (file) 
     /document-2.pdf (file) 
    /accounts/ (sub-folder) 
     /account.txt (file) 
     etc... 

以下XPath表達式起作用。

// JCR:根/ VFS:元數據// * [VFS:屬性/ VFS:DOCTYPE = 'TAX_DOCS']

如果我給錯誤的值,例如,而不是 'TAX_DOCS','稅「,它沒有返回任何文件,如預期的那樣很好。這證明元數據按預期正確存儲,並且正確地用於過濾器過程。

該查詢的問題是,它開始從根文件夾搜索,但我只想從/ MyApp /文檔子文件夾搜索。所以,我想這一點:

// JCR:根/ MyApp的/文件// VFS://元* [VFS:屬性/ VFS:DOCTYPE = 'TAX_DOCS']

它沒有返回。然後我也嘗試過,但沒有成功。

// JCR:根/ MyApp的/文件// * [VFS:元/ VFS:屬性/ VFS:DOCTYPE = 'TAX_DOCS']

那我做錯了嗎?我們需要設置或缺少workspace.xml配置中的任何東西嗎?

任何幫助表示讚賞。

謝謝你,傑克

回答

2

刪除雙從什麼,但最後一個路徑組件下調並使用@符號的屬性值,從而導致:

/jcr:root/MyApp/documents//*[vfs:attributes/@vfs:docType='TAX_DOCS'] 

的//結構看起來整個子樹而不是像/這樣的直接孩子。作爲XPath查詢的最後一步,JCR規範只需要實現來支持//構造。