如何在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:Dixit AND biblio-by-media-name:media1
*请注意,文档查询是一种方法。但是,我可能不会在biblio URI上构建它,而是在biblio文件中mediaid元素的范围查询上构建它。但这一切都与调整有关。在上面更简化的示例中,结果将是相同的
如果在media:id上放置范围索引,则可以进行一些超快速连接。这是战斗的一半 另一半是:如果我想解决这个问题,我会通过cts和xQuery来解决 但是:如果我真的想把它作为search:search的一部分,我会使用自定义约束来实现——然后自然地通过search:search库调用它们 可能的自定义约束: 按媒体名称分类的图书馆
- 搜索名称有问题的媒体
- 将此解析为参考文献
- 返回书目文档的ct:document query*
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,您将使用与自定义约束相同的函数。一起删除搜索层。这有意义吗?