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<Object,Object> 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<Object,Object> 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<Object,Object> 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<Object,Object> 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
-
-