public class CombinedMatchEngine extends Object implements MatchEngine
The tuples accepted by this engine are composed of the tuples
of its constituent engines (as specified by the engines
argument of the constructor) concatenated in sequence.
The match score is formed by taking the scaled match scores of the constituent engines and adding them in quadrature (if no scaling is available, unscaled values are used). Versions of this class before 2017 did not do that, it just added unscaled match scores together, which doesn't make much sense.
Because of the way it calculates bins (taking a Cartesian product
of one bin array by another), it is a good idea for efficiency's sake to
keep down the number of bins returned by the MatchKit.getBins(java.lang.Object[])
method of the constituent match engines.
Constructor and Description |
---|
CombinedMatchEngine(MatchEngine[] engines)
Constructs a CombinedMatchEngine
with default sphere inclusion semantics.
|
CombinedMatchEngine(MatchEngine[] engines,
boolean inSphere)
Constructs a CombinedMatchEngine
with specified sphere inclusion semantics.
|
Modifier and Type | Method and Description |
---|---|
java.util.function.Supplier<Coverage> |
createCoverageFactory()
Returns a supplier for coverage objects.
|
java.util.function.Supplier<MatchKit> |
createMatchKitFactory()
Returns a factory for MatchKit instances corresponding
to the current settings of this object.
|
DescribedValue[] |
getMatchParameters()
Returns a set of DescribedValue objects whose values can be modified
to modify the matching criteria.
|
ValueInfo |
getMatchScoreInfo()
Returns a description of the value returned by the
MatchKit.matchScore(java.lang.Object[], java.lang.Object[]) method. |
double |
getScoreScale()
Returns the square root of the number of constituent matchers
if they all have definite score scaling values.
|
DescribedValue[] |
getTuningParameters()
Returns a set of DescribedValue objects whose values can be modified
to tune the performance of the match.
|
ValueInfo[] |
getTupleInfos()
Returns a set of ValueInfo objects indicating what is required for
the elements of each tuple.
|
void |
setName(String name) |
String |
toString() |
public CombinedMatchEngine(MatchEngine[] engines)
engines
- match engine sequence to be combinedpublic CombinedMatchEngine(MatchEngine[] engines, boolean inSphere)
If the inSphere
parameter is false,
any pair which is matched by all its constituent matchers
counts as a match.
If it is true, an additional constraint is imposed which is that
the scaled separation (the match score) must be less than or equal
to unity, that is the separation vector must be within the unit
hyper-sphere rather than the unit hyper-cube.
engines
- match engine sequence to be combinedinSphere
- whether to restrict matches to those with
separation values not exeeding unitypublic java.util.function.Supplier<MatchKit> createMatchKitFactory()
MatchEngine
The returned value is immutable, and is not affected by subsequent changes of the settings of this object.
createMatchKitFactory
in interface MatchEngine
public java.util.function.Supplier<Coverage> createCoverageFactory()
MatchEngine
Coverage.createTestFactory()
method returns false
is guaranteed not to match any tuple in A according to this object's
match criteria.
The returned value is immutable, and is not affected by subsequent changes of the settings of this object.
If no suitable implementation is available, null may be returned.
createCoverageFactory
in interface MatchEngine
public double getScoreScale()
getScoreScale
in interface MatchEngine
public ValueInfo getMatchScoreInfo()
MatchEngine
MatchKit.matchScore(java.lang.Object[], java.lang.Object[])
method. The content class should be numeric
(though need not be Double
), and the name,
description and units should be descriptive of whatever the
physical significance of the value is.
If the result of matchScore
is not interesting
(for instance, if it's always either 0 or -1),
null
may be returned.getMatchScoreInfo
in interface MatchEngine
public ValueInfo[] getTupleInfos()
MatchEngine
nullable
attribute has a special meaning: if true it means that it makes
sense for this element of the tuple to be always blank (for instance
assigned to no column).getTupleInfos
in interface MatchEngine
public DescribedValue[] getMatchParameters()
MatchEngine
DescribedValue.setValue(java.lang.Object)
on the
returned objects.getMatchParameters
in interface MatchEngine
public DescribedValue[] getTuningParameters()
MatchEngine
DescribedValue.setValue(java.lang.Object)
on the
returned objects.
Changing these values will make no difference to the output of
MatchKit.matchScore(java.lang.Object[], java.lang.Object[])
, but may change the output of
MatchKit.getBins(java.lang.Object[])
.
This may change the CPU and memory requirements of the match,
but will not change the result. The default value should be
something sensible, so that setting the value of these parameters
is not in general required.
getTuningParameters
in interface MatchEngine
public void setName(String name)
Copyright © 2024 Central Laboratory of the Research Councils. All Rights Reserved.