即使在谷歌搜索之后,我似乎也找不到答案。
我们遇到的问题导致我们的应用程序锁定。部分原因是因为我们有待解决的未完成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客户端内部版本号:2.5.2952
Raven服务器内部版本号:2.5.2952(RavenHQ)
同样值得注意的是:我们正在尽快升级到RavenDB 3.0,但这是一个实际的实时问题,我需要了解它为什么会发生!
最佳答案
是的,为确保更新文档,许多其他文档都指向索引,从而导致重建索引。
某些类型的操作需要索引号为陈旧的(或强制更新陈旧的索引)。有必要将最后期限传递给您的WaitForNonStaleResultsAsOfNow,该期限可以接收TimeSpan作为参数,因此您将等待索引对于预定义类型不陈旧。