Browse Source

Add comparision function for shingles.

tags/0.8.0
Vsevolod Stakhov 9 years ago
parent
commit
c63bee1078
2 changed files with 25 additions and 0 deletions
  1. 15
    0
      src/libutil/shingles.c
  2. 10
    0
      src/libutil/shingles.h

+ 15
- 0
src/libutil/shingles.c View File

@@ -135,3 +135,18 @@ rspamd_shingles_default_filter (guint64 *input, gsize count,

return minimal;
}


gdouble rspamd_shingles_compare (const struct rspamd_shingle *a,
const struct rspamd_shingle *b)
{
gint i, common = 0;

for (i = 0; i < RSPAMD_SHINGLE_SIZE; i ++) {
if (a->hashes[i] == b->hashes[i]) {
common ++;
}
}

return (gdouble)common / 84.0;
}

+ 10
- 0
src/libutil/shingles.h View File

@@ -57,6 +57,16 @@ struct rspamd_shingle* rspamd_shingles_generate (GArray *input,
rspamd_shingles_filter filter,
gpointer filterd);

/**
* Compares two shingles and return result as a floating point value - 1.0
* for completely similar shingles and 0.0 for completely different ones
* @param a
* @param b
* @return
*/
gdouble rspamd_shingles_compare (const struct rspamd_shingle *a,
const struct rspamd_shingle *b);

/**
* Default filtering function
*/

Loading…
Cancel
Save