2016-03-08 43 views
0

對於在Solr中索引的所有文檔,給出邊界數據(經緯度,POLYGON的長點)。我正在接收其中一個邊界作爲輸入,並且我想要檢索所有邊界完全位於給定邊界內的文檔,或者它與給定邊界內區域的50%以上重疊。換句話說,與給定邊界的交界面積大於50%的邊界。 (100%是指它是完全內部)在Solr中搜索與給定邊界的50%面積重疊的邊界

邊界是在WKT(公知的文本)格式如POLYGON(((40 40,20 45,45 30,40 40)))

回答

3

所以基本上你已經索引了多邊形數據,並且你有一個查詢多邊形。並且您希望查找查詢多邊形覆蓋至少50%的所有索引多邊形。說得通。

我將使用典型的相交過濾器(您可以在Solr Ref Guide中看到如何操作)開始此操作,並使用RptWithGeometrySpatialField作爲字段類型。這會讓所有索引的文檔(多邊形)與之間的任何重疊。

雖然50%的重疊要求很棘手;它會非常慢。您可以編寫一個Solr PostFilter,它從位於該空間字段下的相同Solr高速緩存中檢索索引形狀,然後使用JTS操作來確定重疊。副手,我認爲這是通過裁剪完成的,然後您可以計算該區域。但是,對於每個搜索結果來說,這樣做會非常昂貴(遺憾的是要將其分解給您)。儘管如此,如果不是典型的搜索應用程序,也許你的要求將允許它。

作爲一個不需要自定義編碼的不好的替代品,考慮BBoxField已經實際做到了這一點,但對於矩形。它基於重疊比率進行評分,並且可以使用Solr的{!frange}對分數進行過濾。