List of usage examples for org.apache.lucene.queries.function FunctionValues doubleVal
public void doubleVal(int doc, double[] vals) throws IOException
From source file:org.apache.solr.search.function.distance.HaversineFunction.java
License:Apache License
/** * @param doc The doc to score/*ww w. j av a 2s . c o m*/ * @return The haversine distance formula */ protected double distance(int doc, FunctionValues p1DV, FunctionValues p2DV) { double[] p1D = new double[2]; double[] p2D = new double[2]; p1DV.doubleVal(doc, p1D); p2DV.doubleVal(doc, p2D); double y1; double x1; double y2; double x2; if (convertToRadians) { y1 = p1D[0] * DistanceUtils.DEGREES_TO_RADIANS; x1 = p1D[1] * DistanceUtils.DEGREES_TO_RADIANS; y2 = p2D[0] * DistanceUtils.DEGREES_TO_RADIANS; x2 = p2D[1] * DistanceUtils.DEGREES_TO_RADIANS; } else { y1 = p1D[0]; x1 = p1D[1]; y2 = p2D[0]; x2 = p2D[1]; } return DistanceUtils.distHaversineRAD(y1, x1, y2, x2) * radius; }
From source file:org.apache.solr.search.function.distance.SquaredEuclideanFunction.java
License:Apache License
/** * @param doc The doc to score//from ww w. j av a2 s . com */ @Override protected double distance(int doc, FunctionValues dv1, FunctionValues dv2) { double[] vals1 = new double[source1.dimension()]; double[] vals2 = new double[source1.dimension()]; dv1.doubleVal(doc, vals1); dv2.doubleVal(doc, vals2); return DistanceUtils.distSquaredCartesian(vals1, vals2); }
From source file:org.apache.solr.search.function.distance.VectorDistanceFunction.java
License:Apache License
/** * Calculate the distance// ww w .ja v a 2 s.c o m * * @param doc The current doc * @param dv1 The values from the first MultiValueSource * @param dv2 The values from the second MultiValueSource * @return The distance */ protected double distance(int doc, FunctionValues dv1, FunctionValues dv2) { //Handle some special cases: double[] vals1 = new double[source1.dimension()]; double[] vals2 = new double[source1.dimension()]; dv1.doubleVal(doc, vals1); dv2.doubleVal(doc, vals2); return DistanceUtils.vectorDistance(vals1, vals2, power, oneOverPower); }