def _flush_run(self): # Called when the memory buffer (of size self.limit) fills up. # Sorts the buffer and writes the current buffer to a "run" on disk. if self.size > 0: tempfd, tempname = tempfile.mkstemp(".whooshrun") runfile = StructFile(os.fdopen(tempfd, "w+b")) self.postings.sort() for p in self.postings: runfile.write_string2(p) runfile.flush() runfile.seek(0) self.runs.append((runfile, self.count)) self.tempfilenames.append(tempname) #print "Flushed run:", self.runs self.postings = [] self.size = 0 self.count = 0
def open_file(self, name, *args, **kwargs): f = StructFile(open(self._fpath(name), "rb"), *args, **kwargs) f._name = name return f
def create_file(self, name): f = StructFile(open(self._fpath(name), "wb"), name=name, mapped=self.mapped) return f
def open_file(self, name, *args, **kwargs): if name not in self.files: raise NameError return StructFile(StringIO(self.files[name]), *args, **kwargs)
def create_file(self, name): def onclose_fn(sfile): self.files[name] = sfile.file.getvalue() f = StructFile(StringIO(), name=name, onclose=onclose_fn) return f