gpt4 book ai didi

search - 如何使用 4.0.0 版从 lucene 地理(空间)搜索中获取距离?

转载 作者:行者123 更新时间:2023-12-05 01:18:08 27 4
gpt4 key购买 nike

我正在尝试使用最新版本的 Lucene(4.0.0) 进行地理搜索功能,要求很简单:获取圆内的点(中心和半径作为查询条件传入)。我找不到输出每个结果到中心距离的API,我必须在得到每个结果的经纬度后计算距离。任何人都可以帮忙吗?代码如下:

SpatialContext sc = SpatialContext.GEO;
SpatialArgs args = new SpatialArgs(SpatialOperation.Intersects,
sc.makeCircle(lo, la, DistanceUtils.dist2Degrees(dist, DistanceUtils.EARTH_MEAN_RADIUS_KM)));
Filter geo_filter = strategy.makeFilter(args);
try {
Sort chainedSort = new Sort(sfArray).rewrite(searcher);
TopDocs docs = searcher.search(new MatchAllDocsQuery(), geo_filter, 10000, chainedSort);
logger.debug("search finished, num: " + docs.totalHits);
for (ScoreDoc scoreDoc : docs.scoreDocs){
Document doc = searcher.doc(scoreDoc.doc);
double la1 = Double.parseDouble(doc.get("la"));
double lo1 = Double.parseDouble(doc.get("lo"));
double distance = getDistance(la1, lo1, la, lo); // have to calc distance by myself here, not cool
}
} catch (IOException e) {
logger.error("fail to get the search result!", e);
}

使用 Lucene 3.X 很容易获得距​​离,任何熟悉使用 Lucene 4.0.0 进行地理(空间)搜索的人?

最佳答案

你有外地的纬度和经度;现在您需要计算距查询圆中心点的距离。在您的代码中,这看起来像:

double distDEG = sc.getDistCalc().distance(args.getShape().getCenter(), lo1, la1);
double distKM = DistanceUtils.degrees2Dist(distDEG, DistanceUtils.EARTH_MEAN_RADIUS_KM);

不错;嗯?
(ps 我写了很多 Lucene 4 空间)

关于search - 如何使用 4.0.0 版从 lucene 地理(空间)搜索中获取距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225788/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com