Sorting by distance resources with WKT polygon data

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Sorting by distance resources with WKT polygon data

Grondin Luc
Hello,

I am having difficulties with sorting by distance resources indexed with WKT geolocation data. I have tried different field configurations and query parameters and I did not get working results.

I am using SOLR 6.6 and JTS-core 1.14. My test sample includes resources with point coordinates plus one associated with a polygon. I tried using both fieldtypes "solr.SpatialRecursivePrefixTreeFieldType" and "solr.RptWithGeometrySpatialField". In both cases, I get good results if I do not care about sorting. The problem arises when I include sorting.

With SpatialRecursivePrefixTreeFieldType:

The best request I used, based on the documentation I could find, was:
select?fl=*,score&q={!geofilt%20sfield=PositionGeo%20pt=45.52,-73.53%20d=10%20score=distance}&sort=score%20asc

The distance appears to be correctly evaluated for resources indexed with point coordinates. However, it is wrong for the resource with a polygon

<result name="response" numFound="5" start="0" maxScore="20015.115">
  <doc><float name="score">2.3913236</float></doc>
  <doc><float name="score">4.3242383</float></doc>
  <doc><float name="score">4.671504</float></doc>
  <doc><float name="score">4.806902</float></doc>
  <doc><float name="score">20015.115</float></doc>
</result>

(Please note that I have verified the polygon externally and it is correct)

With solr.RptWithGeometrySpatialField:

I get an exception triggered by the presence of « score=distance » in the request « q={!geofilt%20sfield=PositionGeo%20pt=45.52,-73.53%20d=10%20score=distance} »

java.lang.UnsupportedOperationException
                at org.apache.lucene.spatial.composite.CompositeSpatialStrategy.makeDistanceValueSource(CompositeSpatialStrategy.java:92)
                at org.apache.solr.schema.AbstractSpatialFieldType.getValueSourceFromSpatialArgs(AbstractSpatialFieldType.java:412)
                at org.apache.solr.schema.AbstractSpatialFieldType.getQueryFromSpatialArgs(AbstractSpatialFieldType.java:359)
                at org.apache.solr.schema.AbstractSpatialFieldType.createSpatialQuery(AbstractSpatialFieldType.java:308)
                at org.apache.solr.search.SpatialFilterQParser.parse(SpatialFilterQParser.java:80)

From there, I am rather stuck with no ideas on how to resolve these problems. So advises in that regards would be much appreciated. I can provide more details if necessary.

Thank you in advance,


 ---
  Luc Grondin
  Analyste en gestion de l'information numérique
  Centre d'expertise numérique pour la recherche - Université de Montréal
  téléphone: 514-343-6111 p. 3988  --  [hidden email]<mailto:[hidden email]>

Reply | Threaded
Open this post in threaded view
|

Re: Sorting by distance resources with WKT polygon data

david.w.smiley@gmail.com
Hello,

Sorry for the belated response.

Solr only supports sorting from point or rectangles in the index.  For
rectangles use BBoxField.  For points, ideally use the new
LatLonPointSpatialField; failing that use LatLonType.  You can use RPT for
point data but I don't recommend sorting with it; use one of the others
just mentioned.

~ David

On Tue, Sep 12, 2017 at 5:09 PM Grondin Luc <[hidden email]>
wrote:

> Hello,
>
> I am having difficulties with sorting by distance resources indexed with
> WKT geolocation data. I have tried different field configurations and query
> parameters and I did not get working results.
>
> I am using SOLR 6.6 and JTS-core 1.14. My test sample includes resources
> with point coordinates plus one associated with a polygon. I tried using
> both fieldtypes "solr.SpatialRecursivePrefixTreeFieldType" and
> "solr.RptWithGeometrySpatialField". In both cases, I get good results if I
> do not care about sorting. The problem arises when I include sorting.
>
> With SpatialRecursivePrefixTreeFieldType:
>
> The best request I used, based on the documentation I could find, was:
>
> select?fl=*,score&q={!geofilt%20sfield=PositionGeo%20pt=45.52,-73.53%20d=10%20score=distance}&sort=score%20asc
>
> The distance appears to be correctly evaluated for resources indexed with
> point coordinates. However, it is wrong for the resource with a polygon
>
> <result name="response" numFound="5" start="0" maxScore="20015.115">
>   <doc><float name="score">2.3913236</float></doc>
>   <doc><float name="score">4.3242383</float></doc>
>   <doc><float name="score">4.671504</float></doc>
>   <doc><float name="score">4.806902</float></doc>
>   <doc><float name="score">20015.115</float></doc>
> </result>
>
> (Please note that I have verified the polygon externally and it is correct)
>
> With solr.RptWithGeometrySpatialField:
>
> I get an exception triggered by the presence of « score=distance » in the
> request «
> q={!geofilt%20sfield=PositionGeo%20pt=45.52,-73.53%20d=10%20score=distance}
> »
>
> java.lang.UnsupportedOperationException
>                 at
> org.apache.lucene.spatial.composite.CompositeSpatialStrategy.makeDistanceValueSource(CompositeSpatialStrategy.java:92)
>                 at
> org.apache.solr.schema.AbstractSpatialFieldType.getValueSourceFromSpatialArgs(AbstractSpatialFieldType.java:412)
>                 at
> org.apache.solr.schema.AbstractSpatialFieldType.getQueryFromSpatialArgs(AbstractSpatialFieldType.java:359)
>                 at
> org.apache.solr.schema.AbstractSpatialFieldType.createSpatialQuery(AbstractSpatialFieldType.java:308)
>                 at
> org.apache.solr.search.SpatialFilterQParser.parse(SpatialFilterQParser.java:80)
>
> From there, I am rather stuck with no ideas on how to resolve these
> problems. So advises in that regards would be much appreciated. I can
> provide more details if necessary.
>
> Thank you in advance,
>
>
>  ---
>   Luc Grondin
>   Analyste en gestion de l'information numérique
>   Centre d'expertise numérique pour la recherche - Université de Montréal
>   téléphone: 514-343-6111 <(514)%20343-6111> p. 3988  --
> [hidden email]<mailto:[hidden email]>
>
> --
Lucene/Solr Search Committer, Consultant, Developer, Author, Speaker
LinkedIn: http://linkedin.com/in/davidwsmiley | Book:
http://www.solrenterprisesearchserver.com