The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
parcel KinoSearch cnick Kino;

/** Default posting type.
 *
 * ScorePosting is the default posting format in KinoSearch.  The
 * term-document pairing used by MatchPosting is supplemented by additional
 * frequency, position, and weighting information.
 */ 
class KinoSearch::Index::Posting::ScorePosting cnick ScorePost
    inherits KinoSearch::Index::Posting::MatchPosting {

    float     weight;
    float    *norm_decoder;
    uint32_t *prox;
    uint32_t  prox_cap;

    inert incremented ScorePosting*
    new(Similarity *similarity);

    inert ScorePosting*
    init(ScorePosting *self, Similarity *similarity);

    public void
    Destroy(ScorePosting *self);

    void
    Read_Record(ScorePosting *self, InStream *instream);

    incremented RawPosting*
    Read_Raw(ScorePosting *self, InStream *instream, int32_t last_doc_id, 
             CharBuf *term_text, MemoryPool *mem_pool);

    void
    Add_Inversion_To_Pool(ScorePosting *self, PostingPool *post_pool, 
                          Inversion *inversion, FieldType *type, 
                          int32_t doc_id, float doc_boost, 
                          float length_norm);

    public void
    Reset(ScorePosting *self);

    incremented ScorePostingScorer*
    Make_Matcher(ScorePosting *self, Similarity *sim, PostingList *plist, 
                 Compiler *compiler, bool_t need_score);

    nullable uint32_t*
    Get_Prox(ScorePosting *self);
}

class KinoSearch::Index::Posting::ScorePostingScorer cnick ScorePostScorer
    inherits KinoSearch::Search::TermScorer {

    float *score_cache;

    inert ScorePostingScorer*
    init(ScorePostingScorer *self, Similarity *sim, PostingList *plist, 
         Compiler *compiler);

    public float
    Score(ScorePostingScorer* self);

    public void
    Destroy(ScorePostingScorer *self);
}

/* Copyright 2007-2011 Marvin Humphrey
 *
 * This program is free software; you can redistribute it and/or modify
 * under the same terms as Perl itself.
 */