lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simon Rainer <Rainer.Si...@ait.ac.at>
Subject Can't get distance sorting to work in Lucene Spatial 4.10.3
Date Wed, 25 Feb 2015 12:18:41 GMT
Hi!

I have problems getting distance sorting to work in Lucene Spatial. (I'm using v4.10.3.) I'm
following the SpatialExample.java from the Lucene docs. My code is below (it's Scala, but
translates 1:1 into Java). When I run the query, results don't seem to be affected by the
sorting at all. Changing the sort order from ascending to descending has no effect either.

I can't see any difference between what I'm doing and the offical example (except the use
of the SearcherManager, but I've checked and that doesn't make a difference). Any hints appreciated!

Cheers,
Rainer


--- Code

Here's my code (Scala - but translates 1:1 into Java):

    val searcher = placeSearcherManager.acquire()
    val point = spatialCtx.makePoint(lat, lon)
    val args =
      new SpatialArgs(SpatialOperation.Intersects,
        spatialCtx.makeCircle(lon, lat, 
        DistanceUtils.dist2Degrees(100, DistanceUtils.EARTH_MEAN_RADIUS_KM)))

    val filter = spatialStrategy.makeFilter(args)

    // Here's what's supposed to set up distance sorting
    val valueSource = spatialStrategy.makeDistanceValueSource(point)
    val distanceSort = new Sort(valueSource.getSortField(false)).rewrite(searcher)

    try {  
      val topDocs = searcher.search(new MatchAllDocsQuery(), filter, limit, distanceSort)

      val scoreDocs = topDocs.scoreDocs

      // Print the results
      scoreDocs.foreach(scoreDoc => {
        val doc = searcher.doc(scoreDoc.doc)
        val docPoint = spatialCtx.readShape(doc.get(spatialStrategy.getFieldName())).asInstanceOf[Point]
        val distance = spatialCtx.getDistCalc().distance(args.getShape.getCenter, docPoint)
        val distanceKM = DistanceUtils.degrees2Dist(distance, DistanceUtils.EARTH_EQUATORIAL_RADIUS_KM)
        Logger.info("distance: " + distanceKM)
      })
    } finally {
      placeSearcherManager.release(searcher)
    }

--- Log output

[info] application - distance: 406.01578203364323
[info] application - distance: 327.67269076509876
[info] application - distance: 218.94951150657565
[info] application - distance: 251.37927074183852
[info] application - distance: 140.6570939383426
[info] application - distance: 460.47502999630586
[info] application - distance: 462.37676932762116
[info] application - distance: 489.49001138999256
[info] application - distance: 392.0773262500455
[info] application - distance: 227.8864179949065

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message