如何在MarkLogic中定义XML之间的关系,并在搜索API时使用它?

如何在MarkLogic中定义XML之间的关系,并在搜索API时使用它?,marklogic,marklogic-8,marklogic-7,Marklogic,Marklogic 8,Marklogic 7,这些是我在数据库中插入的文档 <biblio> <biblioid>123</biblioid> <mediaid>456</mediaid> <name>dixit</name> <title>title</title> </biblio> <biblio> <biblioid>456</biblioid

这些是我在数据库中插入的文档

<biblio>
    <biblioid>123</biblioid>
    <mediaid>456</mediaid>
    <name>dixit</name>
    <title>title</title>
</biblio>

<biblio>
    <biblioid>456</biblioid>
    <mediaid>789</mediaid>
    <name>singla</name>
    <title>title1</title>
</biblio>

<media>
    <mediaid>456</mediaid>
    <mediaName>media1</mediaName>
    <title>hello</title>
</media>

<media>
    <mediaid>789</mediaid>
    <mediaName>media1</mediaName>
    <title>hello</title>
</media>

<media>
    <mediaid>384</mediaid>
    <mediaName>media2</mediaName>
    <title>hello</title>
</media>
我可以做到这一点,首先获取与名称匹配的所有biblio文档(“dixit”),然后从结果中提取mediaid(456),然后使用获取的mediaid(456)和medianame(media1)查询媒体文档

但我想通过search:search-API来实现这一点


有没有办法做到这一点,有没有什么地方可以定义XML元素之间的关系。

如果在media:id上放置一个范围索引,那么就可以进行一些超快速连接。这是战斗的一半

另一半是:如果我想解决这个问题,我会通过cts和xQuery来解决

但是:如果我真的想把它作为search:search的一部分,我会使用自定义约束来实现——然后自然地通过search:search库调用它们

可能的自定义约束: 按媒体名称分类的图书馆

  • 搜索名称有问题的媒体
  • 将此解析为参考文献
  • 返回书目文档的ct:document query*
然后,如果我对名为“biblio name”的biblio名称也有一个约束,那么我可以进行如下示例所示的搜索—最终都是通过搜索api交付的:

biblio-name:Dixit AND biblio-by-media-name:media1
*请注意,文档查询是一种方法。但是,我可能不会在biblio URI上构建它,而是在biblio文件中mediaid元素的范围查询上构建它。但这一切都与调整有关。在上面更简化的示例中,结果将是相同的


如果在media:id上放置范围索引,则可以进行一些超快速连接。这是战斗的一半

另一半是:如果我想解决这个问题,我会通过cts和xQuery来解决

但是:如果我真的想把它作为search:search的一部分,我会使用自定义约束来实现——然后自然地通过search:search库调用它们

可能的自定义约束: 按媒体名称分类的图书馆

  • 搜索名称有问题的媒体
  • 将此解析为参考文献
  • 返回书目文档的ct:document query*
然后,如果我对名为“biblio name”的biblio名称也有一个约束,那么我可以进行如下示例所示的搜索—最终都是通过搜索api交付的:

biblio-name:Dixit AND biblio-by-media-name:media1
*请注意,文档查询是一种方法。但是,我可能不会在biblio URI上构建它,而是在biblio文件中mediaid元素的范围查询上构建它。但这一切都与调整有关。在上面更简化的示例中,结果将是相同的


我认为你不可能只用一个
search:seach
call就能做到这一点。为什么要在一个查询中混合文档和媒体?我只能想象你可能想把它用于出口目的..我不认为你只需要一个
search:seach
call就可以做到这一点。为什么要在一个查询中混合文档和媒体?我只能想象你可能想把这个用于出口目的..谢谢David宝贵的回答。我想知道你将如何使用cts和xQuery。欢迎你。对于cts/xQuery,您将使用与自定义约束相同的函数。一起删除搜索层。这有意义吗?谢谢大卫宝贵的回答。我想知道你将如何使用cts和xQuery。欢迎你。对于cts/xQuery,您将使用与自定义约束相同的函数。一起删除搜索层。这有意义吗?