即使在谷歌搜索之后,我似乎无法找到答案。
我们遇到导致我们的应用锁定的问题。部分原因是因为我们有等待释放修复的未完成的WaitForNonStaleResultsAsOfNow
调用(即我们已经删除它们),但这也是由所有索引的完全重建引起的。我相信导致所有索引重建的触发器是我们对一个(类型)文档进行更改时。例如:
我们有一个名为“代理商”的模型。当我们的用户登录时,我们使用他们的“AgencyId”来为他们提供特定于他们的数据。因此,大多数其他文件(例如“展示位置”,“发票”等)都有“AgencyId”字段。
代理商模型看起来像:
public class Agency
{
public string Id {get;set;}
public string AgencyName {get;set;}
// ...
}
Placement
(和其他机构特定文件)的示例
public class Placement
{
public string Id {get;set;}
public string AgencyId {get;set;} // relates to Agency Document
// ...
}
我们有一项功能,允许管理员将文档(PDF)上传到代理商的个人资料。我们将PDF存储在DFS中,并将代理模型上的“DocumentPath”属性设置为保存位置。
我的问题:更新代理商记录会导致重建所有相关文档的索引吗?即我知道AgencyIndex
会重建,但这会导致PlacementIndex
(以及所有其他相关索引)重建吗?
更多信息:
Raven Client Build#:2.5.2952
Raven Server Build#:2.5.2952(RavenHQ)
另外值得注意的是:我们正在努力升级到RavenDB 3.0,但这是一个真实的问题,我需要了解它为什么会发生!
答案 0 :(得分:0)
是的,确保更新其他许多指向的文档会导致索引重建。 某些类型的操作需要索引号为陈旧(或在陈旧索引上强制更新)。有必要将截止日期传递给WaitForNonStaleResultsAsOfNow,它可以将TimeSpan作为参数接收,因此您将等待索引不会因预定义类型而过时。