예제 #1
0
    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()
예제 #2
0
 def doDelete(self, docNum):
     if self.deletedDocs is None:
         self.deletedDocs = BitVector(self.maxDoc())
     self.deletedDocsDirty = True
     self.deletedDocs.set(docNum)