注册查询在MarkLogic中如何工作?

注册查询在MarkLogic中如何工作?,marklogic,Marklogic,在文档中,它说“注册cts:查询表达式存储表达式的预计算版本” 这是否意味着注册查询会将查询的实际结果(XML文档)存储在某个缓存中 如果以上是真的 如果查询匹配大型文档集,会影响性能吗 正在使用什么缓存 更新/上载满足已注册查询的旧/新文档时,是否也会更新缓存(预评估)结果 如果以上为false,那么注册查询的内部功能是什么 注册cts:query对于您认为将再次使用的复杂查询非常有用,因为它存储了相交的术语列表结果,因此不必再次相交 想象一个复杂的cts:query,有很多布尔约束。当您

在文档中,它说“注册cts:查询表达式存储表达式的预计算版本”

这是否意味着注册查询会将查询的实际结果(XML文档)存储在某个缓存中

如果以上是真的

  • 如果查询匹配大型文档集,会影响性能吗
  • 正在使用什么缓存
  • 更新/上载满足已注册查询的旧/新文档时,是否也会更新缓存(预评估)结果

如果以上为false,那么注册查询的内部功能是什么

注册
cts:query
对于您认为将再次使用的复杂查询非常有用,因为它存储了相交的术语列表结果,因此不必再次相交

想象一个复杂的
cts:query
,有很多布尔约束。当您将其作为更大查询的一部分重用时,服务器将在术语列表缓存中缓存每个单独的术语列表,但它仍然必须为更大的查询执行所有交集工作。通过对较大的查询执行
cts:register()
,您告诉服务器存储相交结果,因此它可以作为
cts:register-query()
使用。节省服务器CPU的工作量

它最初是为那些希望定义一个动态搜索域的客户添加的,所有搜索都将针对该域执行(比如您从该站点购买的材料)。当搜索域变得足够复杂时,大量的工作将用于重新交叉相同的术语列表。注册查询有帮助。用户登录,将其域注册为查询,然后重新使用。然后,术语列表的交集工作就在它们的搜索和预物化域之间

服务器在隐式注册查询方面做得很好,因此不再像以前那样需要手动注册。注册很便宜。它只是一个查询散列和相应的交叉术语列表结果的查找表。由于结果在第一次使用时就已经计算出来了,所以存储成本很低,没有性能损失,只占用了一点内存。允许有一个固定的数量,较少使用的被清除

缓存是按机架维护的,因此即使在您更改数据时,缓存也不会过时。魔法


我将更深入地介绍这一点,包括展示如何轻松使用该功能的使用模式。

注册
cts:query
对于您认为将再次使用的复杂查询非常有用,因为它存储相交的术语列表结果,因此不必再次相交

想象一个复杂的
cts:query
,有很多布尔约束。当您将其作为更大查询的一部分重用时,服务器将在术语列表缓存中缓存每个单独的术语列表,但它仍然必须为更大的查询执行所有交集工作。通过对较大的查询执行
cts:register()
,您告诉服务器存储相交结果,因此它可以作为
cts:register-query()
使用。节省服务器CPU的工作量

它最初是为那些希望定义一个动态搜索域的客户添加的,所有搜索都将针对该域执行(比如您从该站点购买的材料)。当搜索域变得足够复杂时,大量的工作将用于重新交叉相同的术语列表。注册查询有帮助。用户登录,将其域注册为查询,然后重新使用。然后,术语列表的交集工作就在它们的搜索和预物化域之间

服务器在隐式注册查询方面做得很好,因此不再像以前那样需要手动注册。注册很便宜。它只是一个查询散列和相应的交叉术语列表结果的查找表。由于结果在第一次使用时就已经计算出来了,所以存储成本很低,没有性能损失,只占用了一点内存。允许有一个固定的数量,较少使用的被清除

缓存是按机架维护的,因此即使在您更改数据时,缓存也不会过时。魔法

我将更深入地介绍这一点,包括展示如何轻松使用该功能的使用模式