void PhraseQuery_serialize(PhraseQuery *self, OutStream *outstream) { OutStream_Write_F32(outstream, self->boost); CB_Serialize(self->field, outstream); VA_Serialize(self->terms, outstream); }
void TV_serialize(TermVector *self, OutStream *target) { u32_t i; i32_t *posits = self->positions->ints; i32_t *starts = self->start_offsets->ints; i32_t *ends = self->start_offsets->ints; CB_Serialize(self->field, target); CB_Serialize(self->text, target); OutStream_Write_C32(target, self->num_pos); for (i = 0; i < self->num_pos; i++) { OutStream_Write_C32(target, posits[i]); OutStream_Write_C32(target, starts[i]); OutStream_Write_C32(target, ends[i]); } }
void HLWriter_add_inverted_doc(HighlightWriter *self, Inverter *inverter, int32_t doc_id) { OutStream *dat_out = S_lazy_init(self); OutStream *ix_out = self->ix_out; int64_t filepos = OutStream_Tell(dat_out); uint32_t num_highlightable = 0; int32_t expected = (int32_t)(OutStream_Tell(ix_out) / 8); // Verify doc id. if (doc_id != expected) THROW(ERR, "Expected doc id %i32 but got %i32", expected, doc_id); // Write index data. OutStream_Write_I64(ix_out, filepos); // Count, then write number of highlightable fields. Inverter_Iterate(inverter); while (Inverter_Next(inverter)) { FieldType *type = Inverter_Get_Type(inverter); if ( FType_Is_A(type, FULLTEXTTYPE) && FullTextType_Highlightable((FullTextType*)type) ) { num_highlightable++; } } OutStream_Write_C32(dat_out, num_highlightable); Inverter_Iterate(inverter); while (Inverter_Next(inverter)) { FieldType *type = Inverter_Get_Type(inverter); if ( FType_Is_A(type, FULLTEXTTYPE) && FullTextType_Highlightable((FullTextType*)type) ) { CharBuf *field = Inverter_Get_Field_Name(inverter); Inversion *inversion = Inverter_Get_Inversion(inverter); ByteBuf *tv_buf = HLWriter_TV_Buf(self, inversion); CB_Serialize(field, dat_out); BB_Serialize(tv_buf, dat_out); DECREF(tv_buf); } } }
void RangeQuery_serialize(RangeQuery *self, OutStream *outstream) { OutStream_Write_F32(outstream, self->boost); CB_Serialize(self->field, outstream); if (self->lower_term) { OutStream_Write_U8(outstream, true); FREEZE(self->lower_term, outstream); } else { OutStream_Write_U8(outstream, false); } if (self->upper_term) { OutStream_Write_U8(outstream, true); FREEZE(self->upper_term, outstream); } else { OutStream_Write_U8(outstream, false); } OutStream_Write_U8(outstream, self->include_lower); OutStream_Write_U8(outstream, self->include_upper); }
void DocWriter_add_inverted_doc(DocWriter *self, Inverter *inverter, int32_t doc_id) { OutStream *dat_out = S_lazy_init(self); OutStream *ix_out = self->ix_out; uint32_t num_stored = 0; int64_t start = OutStream_Tell(dat_out); int64_t expected = OutStream_Tell(ix_out) / 8; // Verify doc id. if (doc_id != expected) { THROW(ERR, "Expected doc id %i64 but got %i32", expected, doc_id); } // Write the number of stored fields. Inverter_Iterate(inverter); while (Inverter_Next(inverter)) { FieldType *type = Inverter_Get_Type(inverter); if (FType_Stored(type)) { num_stored++; } } OutStream_Write_C32(dat_out, num_stored); Inverter_Iterate(inverter); while (Inverter_Next(inverter)) { // Only store fields marked as "stored". FieldType *type = Inverter_Get_Type(inverter); if (FType_Stored(type)) { CharBuf *field = Inverter_Get_Field_Name(inverter); Obj *value = Inverter_Get_Value(inverter); CB_Serialize(field, dat_out); Obj_Serialize(value, dat_out); } } // Write file pointer. OutStream_Write_I64(ix_out, start); }
void Freezer_freeze(Obj *obj, OutStream *outstream) { CB_Serialize(Obj_Get_Class_Name(obj), outstream); Obj_Serialize(obj, outstream); }
void Obj_serialize(Obj *self, OutStream *outstream) { CharBuf *class_name = Obj_Get_Class_Name(self); CB_Serialize(class_name, outstream); }