如何将计算形状添加到索引中?
我有一个班级
public class Partner
{
public double Latitude { get; set; }
public double Longitude { get; set; }
public double WorkingRadius { get; set; }
public double WorkingRadiusShape
{
get
{
return string.Format("Circle({0},{1}, d={2})", Latitude, Longitude, WorkingRadius);
}
}
}
使用以下索引
public class PartnersByLocation : AbstractIndexCreationTask<Partner>
{
public PartnersByLocation()
{
Map = partners => from doc in partners
select new
{
WorkingRadiusShape = doc.WorkingRadiusShape
};
Spatial(x => x.WorkingRadiusShape, options => options.Geography.Default());
}
}
我重建并运行我的应用程序,但索引PartnersByLocation为空。我不确定我做错了什么。索引报告没有错误,我已检查合作伙伴集合是否为写入WorkingRadiusShape属性的属性设置了值。我的语法或方法是否存在根本性的错误?
答案 0 :(得分:0)
我明白了。
Map = partners => from doc in partners
where doc.AbilityKeyIds != null
select new
{
WorkingRadiusShape = string.Format("Circle({0},{1}, d={2})", doc.Latitude, doc.Longitude, doc.WorkingRadius)
};
Spatial(x => x.WorkingRadiusShape, options => options.Geography.Default());
关键是在索引时移动赋值WorkingRadiusShape,否则该属性仅在文档读/写时更新。因此,如果存在任何已弃用/无效的条目,则在写入索引时将不会更新这些条目,并且索引将中断。就我而言,我在其中一个合作伙伴条目中为WorkingRadius存储了10000。此值导致索引中断,因为最大值为180,可以作为“d”传递。在分配形状时要注意最大值。