RavenDB - 如何使一个WithinRadiusOf(radius,lat,lng)查询其中radius是文档属性?

问题描述:

我想提出以下查询,但我与它语法挣扎:RavenDB - 如何使一个WithinRadiusOf(radius,lat,lng)查询其中radius是文档属性?

var query = session.Advanced.LuceneQuery<Object,IndexDefinition>().WithinRadiusOf(doc.MaxRadius,latitude,longitude).Where(x => x.StringProperty.Contains("xxx")); 

这样做的关键是,“doc.MaxRadius”是对索引文件的属性。我想避免迭代结果,但它看起来像我将不得不在“包含”过滤器上查询,然后这样做。有没有人能够完成这种性质的查询?

你不能像提到的那样提出这个问题。 而不是存储半径,从该位置存储一个圆形,然后您可以调用相交。

+0

太棒了!我错过了这个文档。我正在尝试它。 – 2014-11-23 11:43:15

+0

我正在尝试实施您的建议,但无法正确编制索引。该索引抛出一条错误消息“System.IndexOutOfRangeException:索引超出了数组的范围。”之后调用Spatial4n.Core.Io.ShapeWriter.ReadStandardShape()。我的索引赋值如下所示:__ = SpatialGenerate(“WorkingRadiusShape”,“Circle(”+ doc.Latitude.ToString()+“,”+ doc.Longitude.ToString()+“,d =”+ doc.WorkingRadius。 ToString()+“)”,SpatialSearchStrategy.GeohashPrefixTree,12)。你能看到我做错了吗?该文档不显示匹配的示例。 – 2014-11-23 13:10:03