def __init__(self, si, closeDir=False): self.directory = si.dir self.closeDirectory = closeDir self.segment = si.name self.nrms = {} self.deletedDocsDirty = False self.fieldInfos = field.FieldInfos(self.directory, self.segment + '.fnm') self.fieldsReader = field.FieldsReader(self.directory, self.segment, self.fieldInfos) self.tis = TermInfosReader(self.directory, self.segment, self.fieldInfos) if SegmentReader.hasDeletions(si): self.deletedDocs = BitVector(self.directory, self.segment + '.del') else: self.deletedDocs = None # makes sure that all index files have been read or are kept open # so that if an index update removes them we'll still have them self.freqStream = self.directory.openFile(self.segment + '.frq') self.proxStream = self.directory.openFile(self.segment + '.prx') self.openNorms()
def doDelete(self, docNum): if self.deletedDocs is None: self.deletedDocs = BitVector(self.maxDoc()) self.deletedDocsDirty = True self.deletedDocs.set(docNum)