You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Grondin Luc <lu...@umontreal.ca> on 2017/09/12 21:07:45 UTC
Sorting by distance resources with WKT polygon data
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 -- luc.grondin@umontreal.ca<ma...@umontreal.ca>
Re: Sorting by distance resources with WKT polygon data
Posted by David Smiley <da...@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 <lu...@umontreal.ca>
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 --
> luc.grondin@umontreal.ca<ma...@umontreal.ca>
>
> --
Lucene/Solr Search Committer, Consultant, Developer, Author, Speaker
LinkedIn: http://linkedin.com/in/davidwsmiley | Book:
http://www.solrenterprisesearchserver.com
Re: Sorting by distance resources with WKT polygon data
Posted by Ere Maijala <er...@helsinki.fi>.
Hi,
our strategy is to have a separate center coordinate field that we use
for sorting. This has the additional benefit that it's possible to have
the indexed center point differ from the polygon's centroid, which can
be useful e.g. with cities, where the city center can be quite a bit
offset from the centroid.
--Ere
Grondin Luc kirjoitti 13.9.2017 klo 0.07:
> 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 -- luc.grondin@umontreal.ca<ma...@umontreal.ca>
>
>
--
Ere Maijala
Kansalliskirjasto / The National Library of Finland