lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ere Maijala <ere.maij...@helsinki.fi>
Subject Re: Sorting by distance resources with WKT polygon data
Date Fri, 22 Sep 2017 08:31:31 GMT
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<mailto:luc.grondin@umontreal.ca>
> 
> 

-- 
Ere Maijala
Kansalliskirjasto / The National Library of Finland

Mime
View raw message