我有一個這樣的XML文檔。在marklogic服務器中獲取不同的結果集
<Authors>
<Author>
<name>R.N Tagore</name>
<book>Gitanjli</book>
</Author>
<Author>
<name>Premchand</name>
<book>Panch Parameshvar</book>
</Author>
<Author>
<name>H.R Bacchan</name>
<book>Madhushala</book>
</Author>
<Author>
<name>Premchand</name>
<book>Gaban</book>
</Author>
<Author>
<name>Premchand</name>
<book>Nirmala</book>
</Author>
<Author>
<name>Premchand</name>
<book>Nirmala</book>
</Author>
</Authors>
從上面的XML我需要不同的作者姓名列表。
爲此,我可以寫一個查詢一樣,
fn:distinct-values(cts:search(fn:doc()//pa:Author/pa:name,cts:and-query(())))
什麼上面的代碼需要做的是,它會得到一個作者名結果,然後FN:不同的值()功能會過濾不同的作者姓名來自該結果集。對於目前的情況下它會正常工作,因爲XML只有6個,但數據時,數據是非常高的讓我們說50 LAC的
cts:search(fn:doc()//pa:Author/pa:name,cts:and-query(()))
查詢上述部分會給XDMP-EXPNTREECACHEFULL例外,因爲我們正在努力在內存中緩存50個lac元素。
所以需要您的幫助,通過使用cts:搜索或搜索:搜索 API才能獲得唯一的作者姓名。我不想先獲取結果集,然後使用fn:distinct-values()從結果集中提取不同的記錄。
謝謝,