Exemplo n.º 1
0
        private IList <Hit> ClosestMatchOnDisk(
            Vector vector, IStringModel model)
        {
            var time  = Stopwatch.StartNew();
            var pages = _sessionFactory.ReadPageInfo(_ixpFileName);
            var hits  = new List <Hit>();

            using (var indexStream = _sessionFactory.CreateReadStream(_ixFileName))
                using (var vectorStream = _sessionFactory.CreateReadStream(_vecFileName))
                {
                    foreach (var page in pages)
                    {
                        indexStream.Seek(page.offset, SeekOrigin.Begin);

                        var hit = ClosestMatchInPage(
                            vector,
                            indexStream,
                            vectorStream,
                            model);

                        hits.Add(hit);
                    }
                }

            this.Log($"scan took {time.Elapsed}");

            return(hits);
        }