Class VectorDistanceFunction
- java.lang.Object
-
- org.apache.lucene.queries.function.ValueSource
-
- org.apache.solr.search.function.distance.VectorDistanceFunction
-
- Direct Known Subclasses:
SquaredEuclideanFunction
public class VectorDistanceFunction extends org.apache.lucene.queries.function.ValueSource
Calculate the p-norm for a Vector. See http://en.wikipedia.org/wiki/Lp_spaceCommon cases:
- 0 = Sparseness calculation
- 1 = Manhattan distance
- 2 = Euclidean distance
- Integer.MAX_VALUE = infinite norm
- See Also:
for the special case
-
-
Field Summary
Fields Modifier and Type Field Description protected float
oneOverPower
protected float
power
protected org.apache.lucene.queries.function.valuesource.MultiValueSource
source1
protected org.apache.lucene.queries.function.valuesource.MultiValueSource
source2
-
Constructor Summary
Constructors Constructor Description VectorDistanceFunction(float power, org.apache.lucene.queries.function.valuesource.MultiValueSource source1, org.apache.lucene.queries.function.valuesource.MultiValueSource source2)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
createWeight(Map context, org.apache.lucene.search.IndexSearcher searcher)
String
description()
protected double
distance(int doc, org.apache.lucene.queries.function.FunctionValues dv1, org.apache.lucene.queries.function.FunctionValues dv2)
Calculate the distancestatic double
distSquaredCartesian(double[] vec1, double[] vec2)
The square of the cartesian Distance.boolean
equals(Object o)
org.apache.lucene.queries.function.FunctionValues
getValues(Map context, org.apache.lucene.index.LeafReaderContext readerContext)
int
hashCode()
protected String
name()
static double
vectorDistance(double[] vec1, double[] vec2, double power)
Calculate the p-norm (i.e.static double
vectorDistance(double[] vec1, double[] vec2, double power, double oneOverPower)
Calculate the p-norm (i.e.
-
-
-
Method Detail
-
name
protected String name()
-
distance
protected double distance(int doc, org.apache.lucene.queries.function.FunctionValues dv1, org.apache.lucene.queries.function.FunctionValues dv2) throws IOException
Calculate the distance- Parameters:
doc
- The current docdv1
- The values from the first MultiValueSourcedv2
- The values from the second MultiValueSource- Returns:
- The distance
- Throws:
IOException
-
vectorDistance
public static double vectorDistance(double[] vec1, double[] vec2, double power)
Calculate the p-norm (i.e. length) between two vectors.See Lp space
- Parameters:
vec1
- The first vectorvec2
- The second vectorpower
- The power (2 for cartesian distance, 1 for manhattan, etc.)- Returns:
- The length.
- See Also:
vectorDistance(double[], double[], double, double)
-
vectorDistance
public static double vectorDistance(double[] vec1, double[] vec2, double power, double oneOverPower)
Calculate the p-norm (i.e. length) between two vectors.- Parameters:
vec1
- The first vectorvec2
- The second vectorpower
- The power (2 for cartesian distance, 1 for manhattan, etc.)oneOverPower
- If you've pre-calculated oneOverPower and cached it, use this method to save one division operation overvectorDistance(double[], double[], double)
.- Returns:
- The length.
-
distSquaredCartesian
public static double distSquaredCartesian(double[] vec1, double[] vec2)
The square of the cartesian Distance. Not really a distance, but useful if all that matters is comparing the result to another one.- Parameters:
vec1
- The first pointvec2
- The second point- Returns:
- The squared cartesian distance
-
getValues
public org.apache.lucene.queries.function.FunctionValues getValues(Map context, org.apache.lucene.index.LeafReaderContext readerContext) throws IOException
- Specified by:
getValues
in classorg.apache.lucene.queries.function.ValueSource
- Throws:
IOException
-
createWeight
public void createWeight(Map context, org.apache.lucene.search.IndexSearcher searcher) throws IOException
- Overrides:
createWeight
in classorg.apache.lucene.queries.function.ValueSource
- Throws:
IOException
-
equals
public boolean equals(Object o)
- Specified by:
equals
in classorg.apache.lucene.queries.function.ValueSource
-
hashCode
public int hashCode()
- Specified by:
hashCode
in classorg.apache.lucene.queries.function.ValueSource
-
description
public String description()
- Specified by:
description
in classorg.apache.lucene.queries.function.ValueSource
-
-