2014-11-22 66 views
0

我想提出以下查詢,但我與它語法掙扎: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

你不能像提到的那樣提出這個問題。 而不是存儲半徑,從該位置存儲一個圓形,然後您可以調用相交。

+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