예제 #1
0
void 
LexWriter_add_term(LexiconWriter* self, CharBuf* term_text, TermInfo* tinfo) 
{
    OutStream *dat_out = self->dat_out;

    if (    (self->count % self->index_interval == 0)
         && !self->temp_mode
    ) {
        // Write a subset of entries to lexicon.ix. 
        S_add_last_term_to_ix(self);
    }

    TermStepper_Write_Delta(self->term_stepper, dat_out, (Obj*)term_text);
    TermStepper_Write_Delta(self->tinfo_stepper, dat_out, (Obj*)tinfo);

    // Track number of terms. 
    self->count++;
}
예제 #2
0
void 
LexWriter_add_term(LexiconWriter* self, CharBuf* term_text, TermInfo* tinfo) 
{
    char   *text_ptr   = (char*)CB_Get_Ptr8(term_text);
    char   *last_ptr   = (char*)CB_Get_Ptr8(self->last_text);
    size_t  text_size  = CB_Get_Size(term_text);
    size_t  last_size  = CB_Get_Size(self->last_text);

    /* Write a subset of entries to lexicon.ix. */
    if (    (self->count % self->index_interval == 0)
         && !self->temp_mode
    ) {
        S_add_last_term_to_ix(self, last_ptr, last_size);
    }

    /* Write the record; track number of terms. */
    LexStepper_Write_Record(self->stepper, self->dat_out, text_ptr, text_size, 
        last_ptr, last_size, tinfo, self->last_tinfo);
    self->count++;

    /* Remember for delta encoding. */
    CB_Copy(self->last_text, term_text);
    TInfo_copy(self->last_tinfo, tinfo);
}