Go to the documentation of this file. 1 #ifndef BMALGO_SIMILARITY__H__INCLUDED__
2 #define BMALGO_SIMILARITY__H__INCLUDED__
25 #ifndef BM__H__INCLUDED__
28 # error missing include (bm.h or bm64.h)
43 template <
typename SO,
unsigned DMD_SZ,
typename IDX_VALUE,
typename SValue,
typename SFunc>
63 for (
size_t i = 0; i < DMD_SZ; ++i)
69 const SO* so2, IDX_VALUE i2,
73 for (
size_t i = 0; i < DMD_SZ; ++i)
85 for (
size_t i = 0; i < DMD_SZ; ++i)
93 for (
size_t i = 0; i < DMD_SZ; ++i)
135 template<
class SDESCR>
161 sdescr.set_similarity(d);
189 template<
class SIMBATCH,
class SV>
193 size_t plains = sv.plains();
194 sbatch.reserve((plains * plains) / 2);
202 for (
unsigned i = 0; i < plains; ++i)
207 for (
unsigned j = i+1; j < plains; ++j)
210 if (bv2 && bv1 != bv2)
212 sbatch.push_back(
typename SIMBATCH::similaruty_descriptor_type(bv1, i, bv2, j, &dmd[0]));
void set_metric(size_t i, distance_metric metric)
SDESCR::similarity_object_type similarity_object_type
Bit manipulation primitives (internal)
IDX_VALUE get_second_idx() const
Distance metric descriptor, holds metric code and result.
distance_metric_descriptor * distance_begin()
similarity_descriptor & operator=(const similarity_descriptor &sd)
SO similarity_object_type
void set_similarity(SValue s)
similarity_descriptor(const SO *so1, const SO *so2, const distance_metric_descriptor *dmd_ptr)
similarity_descriptor(const SO *so1, IDX_VALUE i1, const SO *so2, IDX_VALUE i2, const distance_metric_descriptor *dmd_ptr)
std::vector< SDESCR > vector_type
void build_jaccard_similarity_batch(SIMBATCH &sbatch, const SV &sv)
Utility function to build jaccard similarity batch for sparse_vector<>
SDESCR::similarity_functor similarity_functor
@ COUNT_OR
(A | B).count()
pre-processor un-defines to avoid global space pollution (internal)
void distance_operation(const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)
Distance computing template function.
SDESCR::similarity_value_type similarity_value_type
SValue similarity_value_type
void push_back(const similaruty_descriptor_type &sdt)
SValue similarity() const
std::vector< SDESCR > descr_vect_
const SO * get_first() const
SDESCR similaruty_descriptor_type
bool operator>(const similarity_descriptor &sd) const
const SO * get_second() const
IDX_VALUE get_first_idx() const
void calculate()
run the similarity calculation using distance metrics engine
@ COUNT_AND
(A & B).count()
distance_metric_descriptor dmd_[DMD_SZ]
distance_metric_descriptor * distance_end()
similarity_descriptor(const similarity_descriptor &sd)
distance_metric
Distance metrics codes defined for vectors A and B.