0
根據與正在搜索的文檔連接的字段的大小,可以動態計算最大距離dist
的查詢。Lucene 4.0空間計算最大。動態計算距離(使用索引文檔的字段)
我的意思是這樣的:
ctx.makeCircle(la, lo, DistanceUtils.dist2Degrees(Min(100km, currentDocumnet.getField("max_distance")),DistanceUtils.EARTH_MEAN_RADIUS_KM))
相反的:
new SpatialArgs(SpatialOperation.Intersects,ctx.makeCircle(la, lo, DistanceUtils.dist2Degrees(dist,DistanceUtils.EARTH_MEAN_RADIUS_KM)));
爲了得到我想要的,我做我的ScoreDoc一些手動過濾結果:
String maxDistance = d.get(Offer.MAX_DISTANCE);
if (maxDistance != null && maxDistance.length() > 0) {
logger.info("Contractor max. distance =" + maxDistance);
int maxContractorDistance = Integer
.parseInt(maxDistance);
if (distKM > maxContractorDistance
&& maxContractorDistance > 0) {
logger.info("Contractor is too far"
+ maxContractorDistance);
continue;
}
}
看來你實際上是要求索引圓(點+半徑),然後讓你的查詢匹配;對? –
不完全。當我指數圈而不是點時,我會獲得更多的結果。當圈子重疊時,我不希望匹配。當這個圓圈的每一個重疊時,我只想要結果。 – Damian