是否可以使用一个索引作为另一个索引的基础?
public class BlogPostsOrderedByCreated : AbstractIndexCreationTask<BlogPost, BlogPost> {
/* Ordering Blogs after creation-date */
}
// TODO: Implement another index that uses above index
//public class BlogSelection :
这是可能的,还是我必须创建一个全新的索引来复制其他索引的代码?如果不可能,为什么呢?
答案 0 :(得分:3)
不,你不能这样做,因为实现这一点非常复杂,交换的价值很小。
实现这一点很复杂,因为: - 当第一个索引中有任何更改时,您应该在第二个索引中通知。 - 你如何实现交易?
可能还有更多。索引之间的可靠性将引发一些非常复杂的问题需要解决,所以最好只有两个索引。
如果这在你的场景中没有意义,你可能一直在以错误的方式做事。例如,您不必创建任何BlogPostsOrderedByCreated和BlogSelection索引,只使用将同时执行这两项操作的linq查询:
session.Query<Post>()
.Where(x => x.Name == "Blog selection")
.OrderBy(x => x.CreatedDate)
.ToList();
答案 1 :(得分:0)
我的一般理解是,从客户端来看这将是棘手的 - 在一天结束时,这些索引定义被转换为linq到对象并发送到服务器。当所述linq是interperted时,它只能访问System命名空间和一些特定的raven。
在这样的场景中可以起作用的是在服务器上的bundle中定义索引。然后你可以做更多有趣的事情。不完全确定它会起作用,但我认为你有一个战斗机会。