public override IResult SearchKNN(object q, int K, IResult res)
{
var l = this.GROUPS.Length;
//var n = this.DB.Count;
short[] A = new short[this.DB.Count];
int num_groups = this.GROUPS.Length;
for (short groupID = 0; groupID < l; ++groupID) {
var group = this.GROUPS[groupID];
this.internal_numdists += group.SearchKNN(this.DB, q, K, res, A, groupID);
}
for (int docID = 0; docID < A.Length; ++docID) {
if (A[docID] == num_groups) {
res.Push(docID, this.DB.Dist(q, this.DB[docID]));
}
}
return res;
}