我在MarkLogic服务器中有一个数据库。该数据库有许多集合。其中一些集合具有名称空间,而某些具有不同的名称空间。要知道不同的名称空间的查询是什么?我的目标是构建一个搜索应用程序,该应用程序将允许用户使用搜索栏并使文档从最相关的集合中返回。由于所有集合都具有不同的xml结构,因此我也想基于集合和搜索来自定义文档的显示。
答案 0 :(得分:2)
但是您对我的问题尚不清楚,但是如果您想从数据库中获取所有唯一的名称空间,则可以运行:
fn:distinct-values(//namespace-uri())
,如果您想从数据库中获取所有唯一集合(关于数据库的集合词汇):
cts:collections()
,如果您只想对特定集合执行搜索:
在搜索中:搜索用途:
<additional-query>{cts:collection-query('collectionName')}</additional-query>
在cts:search中使用:
cts:collection-query(("reports", "analysis")))
答案 1 :(得分:1)
获取数据库中唯一集合列表的一种方法是使用App Services Search API。您可以在搜索选项中指定一个集合约束,它将返回唯一的集合。下面的示例指定了没有前缀的集合约束,然后返回构面值的列表以及为每个集合计算的文档数。
(: insert test documents here :)
xquery version "1.0-ml";
for $i in 0 to 5
let $collection := "https://example.com/" || $i
for $j in 0 to $i
return xdmp:document-insert("/example-doc/" || $i || "-" || $j, <example/>, (), $collection);
(: Use search API to get collections as a facet :)
xquery version "1.0-ml";
import module namespace search =
"http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
(: build a collection constraint facet :)
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="collections">
<collection prefix="" facet="true" />
</constraint>
</options>
(: return facets ordered by the number of documents in each collection :)
let $facets := search:search("", $options)/search:facet/search:facet-value
for $facet in $facets
order by $facet/@count descending
return (element collection {($facet/@name, $facet/@count)})
返回:
<collection name="https://example.com/5" count="6"/>
<collection name="https://example.com/4" count="5"/>
<collection name="https://example.com/3" count="4"/>
<collection name="https://example.com/2" count="3"/>
<collection name="https://example.com/1" count="2"/>
<collection name="https://example.com/0" count="1"/>
答案 2 :(得分:0)
我在MarkLogic上构建的应用程序最典型地看到的是,它们对所有文档类型都具有单个搜索ui,或者对每种文档类型都具有单独的搜索ui。您始终可以跨任何文档类型进行全文搜索,并且可以定义和显示构面,无论它们适用于全部文档还是仅适用于部分文档。例如,集合名称可以是一个构面,但您也可以有一个名为Keyword的构面,它仅适用于两个集合,而另一个名为Company的构面则适用于其他三个集合。
简而言之,请考虑一下您想首先提供哪些最终用户功能,然后再考虑如何在技术上实现该功能。我怀疑知道名称空间确实对搜索ui至关重要,并且很可能仅在索引级别才重要。
HTH!