Search 数据关系作为Marklogic中搜索的上下文
我使用marklogic的搜索功能创建搜索页面。现在,我正在运行一个XQuery,通过Search 数据关系作为Marklogic中搜索的上下文,search,xquery,marklogic,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:s
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>)
xquery版本“1.0-ml”;
导入模块命名空间搜索=”http://marklogic.com/appservices/search"
位于“/MarkLogic/appservices/search/search.xqy”;
搜索:搜索('测试',
)
此搜索搜索数据库中的所有内容,在许多情况下这是正常的。在其他情况下,我使用cts:collection query
基于集合进行搜索。这些收藏为我的搜索提供了很好的背景
现在,我想根据“主”文档中的数据关系限制搜索结果。此“主”文档具有对象模型中的所有关系。如果该对象模型具有对文档的引用,我希望该文档包含在搜索中。基本上,“main”/“model”文档是搜索的上下文
我想集思广益,想出一些最好的办法。以下是我到目前为止的想法,但我希望更熟悉Marklogic的人(我只使用它6个月)能引导我朝着一个好的方向前进:
cts:documentquery
(或类似方式)将它们添加到查询中感谢您的任何意见或建议。所有这些想法都很好用。决定使用哪一个取决于您的应用程序的细节,例如主文档的更改频率(以及您是否控制它), 重新构建XML有多难
另外要考虑的是,可以在文档更新上设置触发器,可以自动执行集合更改。
-David Lee我将从(2)开始,看看性能是否足够好。这将取决于您的用例,但我希望它可以用于数千甚至数十万个引用确保使用单个术语
cts:documentquery($list of references)
。这将比cts:or查询(对于$list of references中的$ref返回cts:document query($ref))更快。,因为索引查找可以是一个单一过程,而不是N个单独的查找。我喜欢添加触发器的想法。最后使用了#1#2在我的数据库中大约慢了3倍。此外,由于XML中的庞大关系模型,#2的代码开始变得难看。有了集合,我可以让所有开发人员轻松地重用。我很可能在将来实现触发器。