我使用 marklogic 的搜索功能来创建搜索页面。截至目前,我正在运行 XQuery 以通过search:search
. 作为一个简单的示例,请参见以下代码:
xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
search:search('test',
<options xmlns='http://marklogic.com/appservices/search'></options>)
此搜索搜索数据库中的所有内容,这在许多情况下都很好。在其他情况下,我使用cts:collection-query
. 这些收藏品为我的搜索提供了很好的背景。
现在,我想根据“主”文档中的数据关系来限制我的搜索结果。这个“主”文档具有对象模型中的所有关系。如果该对象模型具有对文档的引用,我希望该文档包含在搜索中。本质上,“主”/模型文档是搜索的上下文。
我试图集思广益,想出一些最好的方法来解决这个问题。到目前为止,这是我想出的,但我希望更熟悉 Marklogic 的人(我只使用它 6 个月)可以引导我朝着一个好的方向前进:
- 将模型文档中引用的所有文档添加到唯一集合中。然后根据该集合查询搜索。但是,随着模型的更改,必须更新集合。
- 将模型文档加载到我的代码中并获取所有引用的列表并将它们添加到查询
cts:document-query
(或类似)。 - 在我的 XML 文档中以某种方式重构我的“模型”概念。
感谢您的任何意见或建议。