class PlainFieldWriter(base.FieldWriter, LineWriter): def __init__(self, storage, segment): self._dbfile = storage.create_file(segment.make_filename(".trm")) self._print_line(0, "TERMS") @property def is_closed(self): return self._dbfile.is_closed def start_field(self, fieldname, fieldobj): self._fieldobj = fieldobj self._print_line(1, "TERMFIELD", fn=fieldname) def start_term(self, btext): self._terminfo = TermInfo() self._print_line(2, "BTEXT", t=btext) def add(self, docnum, weight, vbytes, length): self._terminfo.add_posting(docnum, weight, length) self._print_line(3, "POST", dn=docnum, w=weight, v=vbytes) def finish_term(self): ti = self._terminfo self._print_line(3, "TERMINFO", df=ti.doc_frequency(), weight=ti.weight(), minlength=ti.min_length(), maxlength=ti.max_length(), maxweight=ti.max_weight(), minid=ti.min_id(), maxid=ti.max_id()) def add_spell_word(self, fieldname, text): self._print_line(2, "SPELL", fn=fieldname, t=text) def close(self): self._dbfile.close()
def __init__(self, *args, **kwargs): TermInfo.__init__(self, *args, **kwargs) self._offset = None self._length = None self._inlined = None
def __init__(self, *args, **kwargs): self.postings = None if "postings" in kwargs: self.postings = kwargs["postings"] del kwargs["postings"] TermInfo.__init__(self, *args, **kwargs)
def _find_terminfo(self): c = self._find_line(3, "TERMINFO") return TermInfo(**c)
def start_term(self, btext): self._terminfo = TermInfo() self._print_line(2, "BTEXT", t=btext)