Hello,

we are using solr 4.10.1. There are two cores for different use cases with 
around 20 million documents (location descriptions) per core. Each document has 
a geometry field which stores a point and a bbox field which stores a bounding 
box. Both fields are defined with:
<fieldType name="t_geometry" class="solr.SpatialRecursivePrefixTreeFieldType"
                   
spatialContextFactory="com.spatial4j.core.context.jts.JtsSpatialContextFactory"
                   geo="true" distErrPct="0.025" maxDistErr="0.00009" 
units="degrees" />

I'm currently trying to add a location search (find all documents around a 
point). My intention is to add this as filter query, so that the user is able 
to do an additional keyword search. These are the query parameters so far:
q=*:*&fq=typ:strasse&fq={!geofilt sfield=geometry 
pt=51.370570625523,12.369290471603 d=1.0}
To sort the documents by their distance to the requested point, I added 
following sort parameter:
sort={!geofilt sort=distance sfield: geometry 
pt=51.370570625523,12.369290471603 d=1.0} asc

Unfortunately I'm experiencing here some major performance/memory problems. The 
first distance query on a core takes over 10 seconds. In my first setup the 
same request to the second core completely blocked the server and caused an 
OutOfMemoryError. I had to increase the memory to 16 GB and now it seems to 
work for the geometry field. Anyhow the first request after a server restart 
takes some time and when I try it with the bbox field after a requested on the 
geometry field in both cores, the server blocks again.

Can anyone explain why the distance needs so much memory? Can this be optimized?

Kind regards,

Dirk

Reply via email to