Use ClosestQueryNode() not MaxQueryNodeDistance(). Eventually MaxQueryNodeDistance() will not be reset to DBL_MAX every iteration.

This commit is contained in:
Ryan Curtin
2015-03-12 15:42:33 -04:00
parent 56cbc1c3bb
commit e72ab4c744
@@ -121,15 +121,19 @@ double DualTreeKMeansRules<MetricType, TreeType>::Score(
distanceCalculations += 2;
score = PellegMooreScore(queryNode, referenceNode, minDistance);
if (referenceNode.Stat().MaxQueryNodeDistance() == DBL_MAX &&
if (referenceNode.Stat().ClosestQueryNode() == NULL &&
referenceNode.Parent() != NULL &&
referenceNode.Parent()->Stat().MaxQueryNodeDistance() != DBL_MAX)
referenceNode.Parent()->Stat().ClosestQueryNode() != NULL)
{
referenceNode.Stat().ClosestQueryNode() =
referenceNode.Parent()->Stat().ClosestQueryNode();
referenceNode.Stat().MaxQueryNodeDistance() =
referenceNode.Parent()->Stat().MaxQueryNodeDistance();
referenceNode.Stat().MaxQueryNodeDistance() = std::min(
referenceNode.Parent()->Stat().MaxQueryNodeDistance(),
referenceNode.Stat().MaxQueryNodeDistance());
}
else if (referenceNode.Parent() != NULL &&
referenceNode.Parent()->Stat().ClosestQueryNode() == NULL)
Log::Fatal << "wtf\n";
if (maxDistance < referenceNode.Stat().MaxQueryNodeDistance() ||
referenceNode.Stat().ClosestQueryNode() == NULL)