You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by gs...@apache.org on 2009/11/19 00:02:38 UTC
svn commit: r881986 - in
/lucene/solr/trunk/src/java/org/apache/solr/search/function/distance:
DistanceUtils.java GeohashHaversineFunction.java HaversineFunction.java
Author: gsingers
Date: Wed Nov 18 23:02:38 2009
New Revision: 881986
URL: http://svn.apache.org/viewvc?rev=881986&view=rev
Log:
SOLR-1302: clean up some docs, handle null geohash such that if one of the entries is null, treat it as infinite distance
Modified:
lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/DistanceUtils.java
lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java
lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/HaversineFunction.java
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/DistanceUtils.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/DistanceUtils.java?rev=881986&r1=881985&r2=881986&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/DistanceUtils.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/DistanceUtils.java Wed Nov 18 23:02:38 2009
@@ -34,6 +34,7 @@
*/
public static double haversine(double x1, double y1, double x2, double y2, double radius){
double result = 0;
+ //make sure they aren't all the same, as then we can just return 0
if ((x1 != x2) || (y1 != y2)) {
double diffX = x1 - x2;
double diffY = y1 - y2;
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java?rev=881986&r1=881985&r2=881986&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java Wed Nov 18 23:02:38 2009
@@ -93,11 +93,13 @@
double result = 0;
String h1 = gh1DV.strVal(doc);
String h2 = gh2DV.strVal(doc);
- if (h1.equals(h2) == false){
+ if (h1 != null && h2 != null && h1.equals(h2) == false){
double[] h1Pair = GeoHashUtils.decode(h1);
double[] h2Pair = GeoHashUtils.decode(h2);
result = DistanceUtils.haversine(Math.toRadians(h1Pair[0]), Math.toRadians(h1Pair[1]),
Math.toRadians(h2Pair[0]), Math.toRadians(h2Pair[1]), radius);
+ } else if (h1 == null || h2 == null){
+ result = Double.MAX_VALUE;
}
return result;
}
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/HaversineFunction.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/HaversineFunction.java?rev=881986&r1=881985&r2=881986&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/HaversineFunction.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/distance/HaversineFunction.java Wed Nov 18 23:02:38 2009
@@ -66,16 +66,12 @@
* @return The haversine distance formula
*/
protected double distance(int doc, DocValues x1DV, DocValues y1DV, DocValues x2DV, DocValues y2DV) {
- double result = 0;
double x1 = x1DV.doubleVal(doc); //in radians
double y1 = y1DV.doubleVal(doc);
double x2 = x2DV.doubleVal(doc);
double y2 = y2DV.doubleVal(doc);
- //make sure they aren't all the same, as then we can just return 0
- result = DistanceUtils.haversine(x1, y1, x2, y2, radius);
-
- return result;
+ return DistanceUtils.haversine(x1, y1, x2, y2, radius);
}