Hi Itamar, When I search for a Spatial field without specifying a sort field the result is not ordered by distance.
This is a very simple sample of my search: Private Shared context As New SpatialContext(True) Private Shared strategy As New RecursivePrefixTreeStrategy(New GeohashPrefixTree(context, GeohashPrefixTree.GetMaxLevelsPossible()), "geofield") Dim pquery As BooleanQuery Dim spatialargs As New SpatialArgs(SpatialOperation.Intersects, Context.MakeCircle(39.452834, -0.386697, Distance.DistanceUtils.Dist2Degrees(300, Distance.DistanceUtils.EARTH_MEAN_RADIUS_KM))) pquery.Add(strategy.MakeQuery(spatialargs), Occur.MUST) hits = lucene_searcher.Search(pquery, 100) -----Mensaje original----- De: [email protected] [mailto:[email protected]] En nombre de Itamar Syn-Hershko Enviado el: viernes, 16 de noviembre de 2012 10:34 Para: [email protected] Asunto: Re: Order by distance on Spatial Searches (porting from Lucene4 Java) The default implementation of a spatial query sorts results by distance already. It's only when you use a non-spatial query that you need to specify a custom Sort for that to happen, and it's pretty trivial to implement. See: https://github.com/ayende/ravendb/blob/master/Raven.Database/Indexing/Sorting/SpatialDistanceSortField.cs On Fri, Nov 16, 2012 at 11:19 AM, Albert Clemente Peláez < [email protected]> wrote: > Hello, > > > > A few days ago I started using spatial searches with 3.0.3 release and > the Spatial Contrib + Spatial4N. > > > > Although I found some starting problems, It finally worked great when > I understood that the Spatial Contrib was based on the new Spatial of > Lucene > 4 for Java. > > > > > > My problem now is that although I can search by proximity, I cannot > order by distance, and that is due to it hasn't been ported the type > SortField.REWRITABLE and the ValueSourceComparatorSource and > ValueSourceComparator that able to order by distance on spatial searches. > > > > > > I'm just trying that these staff works (sample from java): > > > > //--Match all, order by distance > > { > > Point pt = ctx.makePoint(60, -50); > > ValueSource valueSource = > strategy.makeDistanceValueSource(pt);//the > distance (in degrees) > > Sort reverseDistSort = new > sort(valueSource.getSortField(false)).rewrite(indexSearcher);//true=as > c dist > > TopDocs docs = indexSearcher.search(new MatchAllDocsQuery(), 10, > reverseDistSort); > > assertDocMatchedIds(indexSearcher, docs, 4, 20, 2); > > > > > > > > If I port this java classes and functions to Lucene.net and > Contrib.Spatial, I'd like that it would be include in the final > release, just to be sure we will be able to continue upgrading to > future Lucene.net releases without recoding our apps. > > > > > Please let me know If I'm not right or If you know a better aproach > for ording by distance. > > > > > > Regards, > > > > > > Albert Clemente > > > > > > > >
