コード例 #1
0
ファイル: filereading.py プロジェクト: rcarmo/Yaki
    def __init__(self, storage, schema, segment, generation=None, codec=None):
        self.storage = storage
        self.schema = schema
        self.segment = segment
        self._gen = generation
        self.is_closed = False
        # Copy info from underlying segment
        self._has_deletions = segment.has_deletions()
        self._dc = segment.doc_count()
        self._dc_all = segment.doc_count_all()
        if hasattr(self.segment, "segment_id"):
            self.segid = str(self.segment.segment_id())
        else:
            self.segid = Segment._random_id()

        # Get microreaders from codec
        if codec is None:
            from whoosh.codec.standard import StdCodec

            codec = StdCodec(self.storage)
        self._codec = codec
        self._terms = codec.terms_reader(self.segment)
        self._lengths = codec.lengths_reader(self.segment)
        self._stored = codec.stored_fields_reader(self.segment)
        self._vectors = None  # Lazy open with self._open_vectors()
        self._dawg = None  # Lazy open with self._open_dawg()

        self.set_caching_policy()
コード例 #2
0
    def __init__(self, ix, poolclass=None, timeout=0.0, delay=0.1, _lk=True,
                 limitmb=128, docbase=0, codec=None, **kwargs):
        # Lock the index
        self.writelock = None
        if _lk:
            self.writelock = ix.lock("WRITELOCK")
            if not try_for(self.writelock.acquire, timeout=timeout,
                           delay=delay):
                raise LockError

        # Get info from the index
        self.storage = ix.storage
        self.indexname = ix.indexname
        info = ix._read_toc()
        self.generation = info.generation + 1
        self.schema = info.schema
        self.segments = info.segments
        self.docnum = self.docbase = docbase
        self._setup_doc_offsets()

        # Internals
        poolprefix = "whoosh_%s_" % self.indexname
        self.pool = PostingPool(limitmb=limitmb, prefix=poolprefix)
        self.newsegment = Segment(self.indexname, 0)
        self.is_closed = False
        self._added = False

        # Set up writers
        if codec is None:
            from whoosh.codec.standard import StdCodec
            codec = StdCodec(self.storage)
        self.codec = codec
        self.perdocwriter = codec.per_document_writer(self.newsegment)
        self.fieldwriter = codec.field_writer(self.newsegment)
コード例 #3
0
    def __init__(self, storage, schema, segment, generation=None, codec=None):
        self.storage = storage
        self.schema = schema
        self.segment = segment
        self._gen = generation
        self.is_closed = False
        # Copy info from underlying segment
        self._has_deletions = segment.has_deletions()
        self._dc = segment.doc_count()
        self._dc_all = segment.doc_count_all()
        if hasattr(self.segment, "segment_id"):
            self.segid = str(self.segment.segment_id())
        else:
            self.segid = Segment._random_id()

        # Get microreaders from codec
        if codec is None:
            from whoosh.codec.standard import StdCodec
            codec = StdCodec(self.storage)
        self._codec = codec
        self._terms = codec.terms_reader(self.segment)
        self._lengths = codec.lengths_reader(self.segment)
        self._stored = codec.stored_fields_reader(self.segment)
        self._vectors = None  # Lazy open with self._open_vectors()
        self._dawg = None  # Lazy open with self._open_dawg()

        self.set_caching_policy()