2016-05-31 40 views
0

從MarkLogic文件我試圖找出一種方法來檢索基於插入文件的時間從MarkLogic文件。我怎麼可以檢索根據他們的插入時間

對於我所知道的,使用xdmp:document-timestamp來檢查文檔時間戳,但是這個時間戳取決於最近對文檔的更新。 MarkLogic是否維護文檔的插入時間戳?如果是的話,我該如何使用它?

目前,我以fn:doc()[last()-10 to last()]中的謂詞爲例來獲取最近插入的文檔。但我想要一個更具動態性的方式來獲取特定時間戳之間的文檔。

回答

1

MarkLogic不會自動執行此操作(可能是雙時間文檔或DLS?)。

此外,你可以不依賴於URI來在插入的順序。

你想要什麼聽起來像內容處理框架(CPF)的一部分。 CPF在「屬性」片段中存儲一些有用的信息。如果這還不夠,還有管道的樣品,以保持之類的東西插入和更新的時間戳等

-Or通過自己的代碼或觸發存儲在最好的套房您的需要的方式這些信息。您不必爲此使用CPF,並且如果它是您唯一的用例,那麼在某些情況下CPF可能會有點矯枉過正,因爲它具有開銷。觸發器或您自己的代碼可能會影響相同的結果。您存儲數據的位置取決於您。如果您尚未使用屬性,並且在文檔中有一個方便的地方(某些標題部分或包裝器),則將其存儲在那裏而不是屬性片段(出於幾個原因)。再次,如果你有二進制內容,那麼使用屬性是可選的。

+0

同意,我想你需要應用程序級的代碼來插入一個帶有你想跟蹤的時間戳的元素。 –

4

MarkLogic可以選擇自動維護上次修改。它是早期的選項,並將lastModified屬性保存在properties-fragment中。然而,屬性存儲在一個單獨的片段中,從而導致額外的開銷,並在磁盤上佔用更大的空間。如果可能的話,考慮爲文檔本身添加一個元素或屬性,然後自己維護它。你可以在一個預先提交的觸發器中,通過一個攝取變換來做到這一點,或者(如果你想確保它始終存在)。如果要將原始內容與這些添加項分開,請使用信封模式。

一旦你的元素,你可以把它一個普通的範圍指標,並使用該查詢和排序結果。如果您想要最新的10個文檔,請確保按降序排序,然後先抓取10個。

如果您還想使用相關評分的日期,請確保使用非零分數函數選項你的範圍查詢。另請參見:http://docs.marklogic.com/cts:element-range-query

HTH!

相關問題