/*********************************************** !!!! DO NOT EDIT THIS FILE !!!! This file was auto-generated by Build.PL from lib/KinoSearch/Search/BooleanScorer.pm See KinoSearch::Docs::DevGuide for details. ***********************************************/ #line 80 "lib/KinoSearch/Search/BooleanScorer.pm" #ifndef H_KINO_BOOLEAN_SCORER #define H_KINO_BOOLEAN_SCORER 1 #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "KinoSearchSearchScorer.h" #include "KinoSearchUtilMemManager.h" #define KINO_MATCH_BATCH_SIZE (1 << 11) #define KINO_MATCH_BATCH_DOC_MASK (KINO_MATCH_BATCH_SIZE - 1) /* A MatchBatch can hold scoring data for 2048 documents. */ typedef struct matchbatch { U32 count; float *scores; U32 *matcher_counts; U32 *bool_masks; U32 *recent_docs; } MatchBatch; typedef struct boolsubscorer { Scorer *scorer; U32 bool_mask; bool done; struct boolsubscorer *next_subscorer; } BoolSubScorer; typedef struct boolscorerchild { U32 doc; U32 end; U32 max_coord; float *coord_factors; U32 required_mask; U32 prohibited_mask; U32 next_mask; MatchBatch *mbatch; BoolSubScorer *subscorers; /* linked list */ AV *subscorers_av; } BoolScorerChild; void Kino_BoolScorer_init_child(Scorer*); MatchBatch* Kino_BoolScorer_new_mbatch(); void Kino_BoolScorer_clear_mbatch(MatchBatch*); void Kino_BoolScorer_compute_coord_factors(Scorer*); void Kino_BoolScorer_add_subscorer(Scorer*, Scorer*, char*); bool Kino_BoolScorer_next(Scorer*); float Kino_BoolScorer_score(Scorer*); U32 Kino_BoolScorer_doc(Scorer*); void Kino_BoolScorer_destroy(Scorer*); #endif /* include guard */