RavenDb为什么将TransformResults放在索引中

时间:2012-01-27 05:39:09

标签: .net ravendb

为什么live projections是索引的一部分(TransformResults属性)?索引用于文档查询,而投影用于文档转换。那么他们为什么要合并呢?

如果实时预测不是指数的一部分,则可以对同一指数进行多次实时预测。结果会有更少的索引,我猜RavenDb的性能会好一点。

更新。通过查询上的Select语句(如过滤的位置)进行实时投影会很棒。

3 个答案:

答案 0 :(得分:4)

这实际上是一个公平的问题。我认为答案是将TransformResults放在索引中是最常见的用例,并且考虑到RavenDB中现有的索引结构,它更容易实现。

如果您想要在查询时定义TransformResults的真实场景,请以临时方式在邮件列表上发布功能请求。

但我很确定答案是

  

我接受了

的拉取请求

因为您是第一个要求此功能的人; - )

答案 1 :(得分:3)

因为我们需要一个放置它们的地方,所以大多数索引只有一个转换结果函数,所以这是一个很好的地方。它还减少了你必须了解的有关RavenDB的事情。否则,你会有一个名为变形金刚的顶级关注点,它通常只用于一个索引,因此提出了为什么它们被分开的问题。

答案 2 :(得分:2)

看看这里:http://ravendb.net/docs/client-api/querying/handling-document-relationships

重要的是这个:

  

在TransformResults中声明的函数将在查询结果上执行

这意味着,TransformResults函数将在查询时执行,而不是在索引时执行。这显然是一个根本的区别。