Esempio n. 1
0
 public Searcher(IReadSessionFactory sessionFactory)
 {
     _parser         = new QueryParser();
     _scorerFactory  = new TfIdfFactory();
     _versions       = Util.GetIndexVersionListInChronologicalOrder(sessionFactory.DirectoryName);
     _blockSize      = BlockSerializer.SizeOfBlock();
     _sessionFactory = sessionFactory;
 }
Esempio n. 2
0
 public Searcher(string directory, IQueryParser parser = null, IScoringSchemeFactory scorerFactory = null, IReadSessionFactory sessionFactory = null)
 {
     _parser         = parser ?? new QueryParser();
     _scorerFactory  = scorerFactory ?? new TfIdfFactory();
     _versions       = Util.GetIndexVersionListInChronologicalOrder(directory);
     _blockSize      = BlockSerializer.SizeOfBlock();
     _sessionFactory = sessionFactory ?? new FullTextReadSessionFactory(directory);
 }
Esempio n. 3
0
 public Searcher(string directory, long version, QueryParser parser, IScoringSchemeFactory scorerFactory, IReadSessionFactory sessionFactory = null)
 {
     _directory      = directory;
     _parser         = parser;
     _scorerFactory  = scorerFactory;
     _versions       = new[] { BatchInfo.Load(Path.Combine(directory, version + ".ix")) };
     _blockSize      = BlockSerializer.SizeOfBlock();
     _sessionFactory = sessionFactory ?? new ReadSessionFactory(directory);
 }
Esempio n. 4
0
        public MappedTrieReader(string fileName)
        {
            var dir     = Path.GetDirectoryName(fileName);
            var version = Path.GetFileNameWithoutExtension(fileName);

            _stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, 4096 * 1, FileOptions.SequentialScan);

            _blockSize = Serializer.SizeOfNode() + BlockSerializer.SizeOfBlock();
        }
Esempio n. 5
0
 public Searcher(string directory, QueryParser parser, IScoringSchemeFactory scorerFactory, IReadSessionFactory sessionFactory = null)
 {
     _directory     = directory;
     _parser        = parser;
     _scorerFactory = scorerFactory;
     _versions      = Util.GetIndexFileNamesInChronologicalOrder(directory)
                      .Select(f => BatchInfo.Load(f)).ToArray();
     _blockSize      = BlockSerializer.SizeOfBlock();
     _sessionFactory = sessionFactory ?? new ReadSessionFactory(directory);
 }
Esempio n. 6
0
        public ReadSession(
            SegmentInfo version,
            DocHashReader docHashReader,
            BlockInfoReader addressReader,
            Stream stream)
        {
            Version = version;

            Stream        = stream;
            DocHashReader = docHashReader;
            AddressReader = addressReader;
            BlockSize     = BlockSerializer.SizeOfBlock();
            Stream.Seek(Version.KeyIndexOffset, SeekOrigin.Begin);
            KeyIndex = DocumentSerializer.ReadKeyIndex(Stream, Version.KeyIndexSize);
        }
Esempio n. 7
0
        public ReadSession(
            BatchInfo version,
            PostingsReader postingsReader,
            DocHashReader docHashReader,
            DocumentAddressReader addressReader,
            Stream stream)
        {
            Version = version;

            _stream         = stream;
            _docHashReader  = docHashReader;
            _postingsReader = postingsReader;
            _addressReader  = addressReader;
            _blockSize      = BlockSerializer.SizeOfBlock();
        }
Esempio n. 8
0
        private IEnumerable <DocumentTableRow> StreamDocuments()
        {
            var skipped = 0;
            var took    = 0;

            for (int docId = 0; docId < _ix.DocumentCount; docId++)
            {
                var hash = _hashReader.Read(docId);

                var address = _addressReader.Read(new[]
                {
                    new BlockInfo(docId * BlockSerializer.SizeOfBlock(), BlockSerializer.SizeOfBlock())
                }).First();

                var document = _documentReader.Read(new List <BlockInfo> {
                    address
                }).First();

                if (!hash.IsObsolete)
                {
                    if (skipped == _skip && took < _take)
                    {
                        yield return(document);

                        took++;
                    }
                    else if (skipped < _skip)
                    {
                        skipped++;
                    }
                    else if (took == _take)
                    {
                        break;
                    }
                }
            }
        }
Esempio n. 9
0
 public MappedTrieReader(Stream stream)
 {
     _stream    = stream;
     _blockSize = Serializer.SizeOfNode() + BlockSerializer.SizeOfBlock();
     _leaveOpen = true;
 }