Added checkDuplicates to KmeansState [skip ci]

This commit is contained in:
Andrew Kane
2024-04-24 18:04:26 -07:00
parent cd8a25bc9a
commit 3e924ab7ad

View File

@@ -20,6 +20,7 @@ typedef struct KmeansState
void (*sumCenter) (Pointer v, float *x);
int (*comp) (const void *a, const void *b);
bool separateAgg;
bool checkDuplicates;
} KmeansState;
/*
@@ -724,7 +725,7 @@ CheckCenters(Relation index, VectorArray centers, IvfflatType type, KmeansState
elog(ERROR, "Unsupported type");
}
if (type != IVFFLAT_TYPE_BIT)
if (kmeansstate->checkDuplicates)
{
/* Ensure no duplicate centers */
SortVectorArray(centers, kmeansstate);
@@ -763,6 +764,7 @@ InitKmeansState(KmeansState * kmeansstate, IvfflatType type)
kmeansstate->sumCenter = VectorSumCenter;
kmeansstate->comp = CompareVectors;
kmeansstate->separateAgg = false;
kmeansstate->checkDuplicates = true;
}
else if (type == IVFFLAT_TYPE_HALFVEC)
{
@@ -771,6 +773,7 @@ InitKmeansState(KmeansState * kmeansstate, IvfflatType type)
kmeansstate->sumCenter = HalfvecSumCenter;
kmeansstate->comp = CompareHalfVectors;
kmeansstate->separateAgg = true;
kmeansstate->checkDuplicates = true;
}
else if (type == IVFFLAT_TYPE_BIT)
{
@@ -779,6 +782,7 @@ InitKmeansState(KmeansState * kmeansstate, IvfflatType type)
kmeansstate->sumCenter = BitSumCenter;
kmeansstate->comp = CompareBitVectors;
kmeansstate->separateAgg = true;
kmeansstate->checkDuplicates = false;
}
else
elog(ERROR, "Unsupported type");