diff --git a/src/database.c b/src/database.c index 4c4a798..f9ad624 100644 --- a/src/database.c +++ b/src/database.c @@ -376,7 +376,7 @@ simdb_search_free(simdb_search_t *search) { } int -simdb_search(simdb_t *db, simdb_search_t *search, simdb_urec_t *sample) { +simdb_search(simdb_t *db, simdb_search_t *search, simdb_urec_t *sample, int skip) { simdb_match_t *matches; simdb_match_t match; simdb_urec_t *rec, *data = NULL; @@ -419,6 +419,8 @@ simdb_search(simdb_t *db, simdb_search_t *search, simdb_urec_t *sample) { for (int i = 0; i < ret; i++, rec++) { if (!rec->used) continue; /* record missing */ + if (num + i == skip) + continue; /* source sample */ match.d_ratio = 0.0; match.d_bitmap = 0.0; @@ -486,7 +488,7 @@ simdb_search_byid(simdb_t *db, simdb_search_t *search, int num) { if ((ret = simdb_read(db, num, 1, &sample)) < 1) return ret; - ret = simdb_search(db, search, sample); + ret = simdb_search(db, search, sample, num); FREE(sample); return ret; @@ -506,7 +508,7 @@ simdb_search_file(simdb_t *db, simdb_search_t *search, const char *path) { if ((sample = simdb_record_create(path)) == NULL) return SIMDB_ERR_SAMPLER; - ret = simdb_search(db, search, sample); + ret = simdb_search(db, search, sample, 0); FREE(sample); return ret;