Struct faiss::simd_result_handlers::ReservoirHandler
- 
template<class C, bool with_id_map = false>
 struct ReservoirHandler : public faiss::simd_result_handlers::ResultHandlerCompare<C, false>
- Simple top-N implementation using a reservoir. - Results are stored when they are below the threshold until the capacity is reached. Then a partition sort is used to update the threshold. Handler built from several ReservoirTopN (one per query) - Public Types - 
using T = typename C::T
 - 
using TI = typename C::TI
 - 
using RHC = ResultHandlerCompare<C, with_id_map>
 - Public Functions - 
inline ReservoirHandler(size_t nq, size_t ntotal, size_t k, size_t cap, float *dis, int64_t *ids, const IDSelector *sel_in)
 - 
inline virtual void handle(size_t q, size_t b, simd16uint16 d0, simd16uint16 d1) final
- called when 32 distances are computed and provided in two simd16uint16. (q, b) indicate which entry it is in the block. 
 - 
inline virtual void end() override
 - 
inline virtual void set_block_origin(size_t i0_in, size_t j0_in) final
- set the sub-matrix that is being computed 
 - 
inline void adjust_with_origin(size_t &q, simd16uint16 &d0, simd16uint16 &d1)
 - 
inline int64_t adjust_id(size_t b, size_t j)
 - 
inline uint32_t get_lt_mask(uint16_t thr, size_t b, simd16uint16 d0, simd16uint16 d1)
- return binary mask of elements below thr in (d0, d1) inverse_test returns elements above 
 - 
inline virtual void begin(const float *norms)
 - Public Members - 
size_t capacity
 - 
float *dis
 - 
int64_t *ids
 - 
AlignedTable<T> all_vals
 - 
std::vector<ReservoirTopN<C>> reservoirs
 - 
bool disable
 - 
int64_t i0
 - 
int64_t j0
 - 
const IDSelector *sel
 - 
size_t nq
 - 
size_t ntotal
 - 
const idx_t *id_map = nullptr
- these fields are used mainly for the IVF variants (with_id_map=true) 
 - 
const int *q_map = nullptr
 - 
const uint16_t *dbias = nullptr
 - 
const float *normalizers = nullptr
 - 
bool is_CMax = false
 - 
uint8_t sizeof_ids = 0
 - 
bool with_fields = false
 
- 
using T = typename C::T