为什么live projections
是索引的一部分(TransformResults属性)?索引用于文档查询,而投影用于文档转换。那么他们为什么要合并呢?
如果实时预测不是指数的一部分,则可以对同一指数进行多次实时预测。结果会有更少的索引,我猜RavenDb的性能会好一点。
更新。通过查询上的Select语句(如过滤的位置)进行实时投影会很棒。
答案 0 :(得分:4)
这实际上是一个公平的问题。我认为答案是将TransformResults
放在索引中是最常见的用例,并且考虑到RavenDB中现有的索引结构,它更容易实现。
如果您想要在查询时定义TransformResults
的真实场景,请以临时方式在邮件列表上发布功能请求。
但我很确定答案是
我接受了
的拉取请求
因为您是第一个要求此功能的人; - )
答案 1 :(得分:3)
因为我们需要一个放置它们的地方,所以大多数索引只有一个转换结果函数,所以这是一个很好的地方。它还减少了你必须了解的有关RavenDB的事情。否则,你会有一个名为变形金刚的顶级关注点,它通常只用于一个索引,因此提出了为什么它们被分开的问题。
答案 2 :(得分:2)
看看这里:http://ravendb.net/docs/client-api/querying/handling-document-relationships
重要的是这个:
在TransformResults中声明的函数将在查询结果上执行
这意味着,TransformResults函数将在查询时执行,而不是在索引时执行。这显然是一个根本的区别。