I am currently using Solr 5.5.2 and implementing a GeoSpatial search that 
returns results within a radius in Km of a specified LatLon. Using a field of 
type solr.LatLonType and a geofilt query this gives good results but is much 
slower than our regular queries. Using a bbox query is faster but of course 
less accurate.

I then attempted to use a field of type 
solr.SpatialRecursivePrefixTreeFieldType to check performance and because I 
want to be able to do searches within a polygon eventually. The field is 
defined as follows

<fieldType name="location_rpt"   
class="solr.SpatialRecursivePrefixTreeFieldType" 
spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory"
            geo="true" distErrPct="0.05" maxDistErr="0.2" 
distanceUnits="kilometers" autoIndex="true"/>

<dynamicField name="*__location_rpt" type="location_rpt" indexed="true" 
stored="true" multiValued="false" omitNorms="true" />

I'm just using it to index single points right now. The problem is that the 
distance calculation is not working correctly. It seems to overstate the 
distances for differences in longitude.

For example a query for 
&fl=Id,LatLonRPT__location_rpt,_dist_:geodist()&sfield=LatLonRPT__location_rpt&pt=53.409490
 -2.979677&query={!geofilt sfield=LatLonRPT__location_rpt pt="53.409490 
-2.979677" d=25} returns

{
                "Id": "HAR/CH1/80763270",
                "LatLonRPT__location_rpt": "53.2 -2.916666",
                "_dist_": 24.295607
},
{
                "Id": "HAR/CH42/1918283949",
                "LatLonRPT__location_rpt": "53.393239 -3.028859",
                "_dist_": 5.7587695
}

The true distances for these results are 23.67 and 3.73 km and other results at 
a true distance of 17 km aren't returned within the 25 km radius.

The explain has the following
                
+IntersectsPrefixTreeQuery(IntersectsPrefixTreeQuery(fieldName=LatLonRPT__location_rpt,queryShape=Circle(Pt(x=53.40949,y=-2.979677),
 d=0.2° 25.00km),detailLevel=6,prefixGridScanLevel=7))

Is my set up incorrect in some way or is the 
SpatialRecursivePrefixTreeFieldType not suitable for doing radius searches on 
points in this way?

Thanks in anticipation for any suggestions.

Peter Lancaster.

________________________________
This message is confidential and may contain privileged information. You should 
not disclose its contents to any other person. If you are not the intended 
recipient, please notify the sender named above immediately. It is expressly 
declared that this e-mail does not constitute nor form part of a contract or 
unilateral obligation. Opinions, conclusions and other information in this 
message that do not relate to the official business of findmypast shall be 
understood as neither given nor endorsed by it.
________________________________

__________________________________________________________________________

This email has been checked for virus and other malicious content prior to 
leaving our network.
__________________________________________________________________________

Reply via email to