Example usage for org.apache.lucene.queries.function FunctionValues doubleVal

List of usage examples for org.apache.lucene.queries.function FunctionValues doubleVal

Introduction

In this page you can find the example usage for org.apache.lucene.queries.function FunctionValues doubleVal.

Prototype

public void doubleVal(int doc, double[] vals) throws IOException 

Source Link

Usage

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);
}