数据关系作为Marklogic中搜索的上下文

Pau*_*aul 5 search xquery marklogic

我使用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>)
Run Code Online (Sandbox Code Playgroud)

此搜索搜索数据库中的所有内容,这在许多情况下都很好.在其他情况下,我基于集合进行搜索cts:collection-query.这些收藏品是我搜索的绝佳背景.

现在,我想根据"主"文档中的数据关系限制我的搜索结果.这个"主"文档具有对象模型中的所有关系.如果该对象模型具有对文档的引用,我希望该文档包含在搜索中.本质上,"主要"/模型文档是搜索的上下文.

我试图集体讨论一些最佳方法的想法.这是我到目前为止所提出的,但我希望有人更熟悉Marklogic(我只用了6个月)可以引导我朝着一个好方向前进:

  1. 将模型文档中引用的所有文档添加到唯一的集合中.然后根据该集合查询搜索.但是,随着模型的更改,必须更新集合.
  2. 将模型文档加载到我的代码中并获取所有引用的列表,并通过cts:document-query(或类似)将它们添加到查询中.
  3. 在我的XML文档中以某种方式重构我的"模型"概念.

感谢您的任何意见或建议.

DAL*_*DEI 2

所有这些想法都会很好地发挥作用。决定使用哪个取决于应用程序的细节,例如主文档更改的频率(以及您是否可以控制它)、重构 XML 的难度。

另一件需要考虑的事情是您可以在文档更新上设置触发器,该触发器可以自动执行集合更改。

——大卫·李