2
我試圖搜索特定半徑內的結果,並根據距離點(接近第一個,最後一個)的距離對結果進行排序。 但是,返回的結果出現在相反的排序中(遠遠居第一位,接近尾數)。Lucene.Net排序距離點的結果
這裏是我的代碼:
string name = "__Location";
var strategy = new PointVectorStrategy(ctx, name);
var indexSearcher = new IndexSearcher(_dir, true);
double radious = Double.Parse(rad);
double lat = 33.8886290;
double lng = 35.4954790;
var distance = DistanceUtils.Dist2Degrees(radious, DistanceUtils.EARTH_MEAN_RADIUS_MI);
var spatialArgs = new SpatialArgs(SpatialOperation.Intersects, ctx.MakeCircle(lng, lat, distance));
var spatialQuery = strategy.MakeQuery(spatialArgs);
Point pt = ctx.MakePoint(lng, lat);
ValueSource valueSource = strategy.MakeDistanceValueSource(pt);
ValueSourceFilter vsf = new ValueSourceFilter(new QueryWrapperFilter(spatialQuery), valueSource, 0, distance);
var filteredSpatial = new FilteredQuery(new MatchAllDocsQuery(), vsf);
var spatialRankingQuery = new FunctionQuery(valueSource);
BooleanQuery bq = new BooleanQuery();
bq.Add(filteredSpatial,Occur.MUST);
bq.Add(spatialRankingQuery,Occur.MUST);
TopDocs hits = indexSearcher.Search(bq, 10);
我怎樣才能從最近到遠處的結果進行排序?
我使用:
Lucene.Net 3.0.3
Lucene.Net.Contrib.Spatial 3.0.3
Spatial4n.Core 0.3
謝謝