lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Smiley, David W." <>
Subject Re: Solr and Polygon/Radius based spatial searches
Date Mon, 03 Feb 2014 22:10:49 GMT
Hi Lee,

On 2/3/14, 1:59 PM, "leevduhl" <> wrote:

>We have a public property search site that we are looking to replace the
>end index server on and we are looking at Solr as a possible replacement
>(ElasticSearch is another possibility).

Both should work equally well.

>One of the key search components of out site is to search on a bounding
>(rectangle), custom multi-point polygon, and/or a radius from a point.
>It appears that Solr3 and Solr4 both supported spatial searching, but
>different methods.  Also, per this link,
>, it appears that
>Solr only supports point, rectangle and circle shapes and needs JTS and/or
>WKT to support multi-point non non rectangular polygon shapes.

Yup.  I¹m not sure what you mean by a "multi-point² polygon thoughŠ is
that somehow different than a polygon that isn¹t multi-point?  All
polygons are comprised of at least 3 distinct points (a triangle).

>Our indexed data will included the long/lat values for all property
>If someone can provide sample queries for the following situations, it
>be appreciated:
>- All properties/points that fall within a multi-point polygon (ie:
>points: Lo1 La1, Lo2 La2, Lo3 La3, Lo4 La4, Lo5 La5, Lo1, La1)

mygeorptfieldname:²Intersects(POLYGON((x1 y1, x2 y2, x3 y3, Š, x1 y1)))²

Inside of the immediate parenthesis of Intersects is a standard WKT
formatted polygon.  Note ³x y² order (longitude space latitude).

>- All properties that fall within 1.5 miles (radius) of point: Lo1 La1

Just use Solr¹s standard ³geofilt² query parser:

I got the distance value by converting miles to kilometers which is what
goofily expects (1.5 * 1.60934400061469).

>Other spatial search type functionality that may be targeted included:
>- Ability to search within multiple polygons (both intersecting, non
>intersecting and combinations

No problem for union: Use standard WKT: MULTIPOLYGON or
GEOMETRYCOLLECTION.  If you want to combine them in interesting ways then
you¹re going to have to compute that client-side and send the resulting
polygon(s) to Solr (or ElasticSearch).  You could use JTS to do that,
which has a trove of spatial functionality for such things.  I¹m thinking
of some day adding some basic operator extensions to the WKT so you don¹t
have to do this on the client end.  Leveraging JTS server-side it would be
particularly easy, but it would also be pretty easy do it as a custom
shape aggregate, similar to Spatial4j 0.4¹s ShapeCollection.

>- Ability to search for properties that fall outside of a polygon

You could use ³IsDisjointTo" (instead of ³Intersects²) but you¹ll
generally get faster results by negating intersects.  For an example,
simply precede the first polygonal example with a ³NOT ³.


~ David

View raw message