Esempio n. 1
0
        public Index(string directory, IEnumerable <Field> mapping)
        {
            _mapping    = FieldMapper.Create(mapping);
            _termFields = FieldMapper.GetTermFields(mapping);
            var analyzerMap = mapping
                              .Where(x => !string.IsNullOrEmpty(x.SpecificAnalyzer))
                              .ToDictionary(x => x.Name, x => x.SpecificAnalyzer);
            IDisposable d;

            (_analyzer, d) = PerFieldAnalyzer.Create("StandardAnalyzer", analyzerMap);
            _dir           = DirectoryProvider.Create(directory);
            _sm            = new Lazy <SearcherManager>(() => new SearcherManager(_dir, null), true);

            _disposable = new DelegateDisposable(() =>
            {
                d.Dispose();
                _writer?.Dispose();
                _writer = null;
                if (_sm.IsValueCreated)
                {
                    _sm.Value.Dispose();
                }
                _dir.Dispose();
            });
        }
Esempio n. 2
0
        public void Copy(string dest)
        {
            var destDir = DirectoryProvider.Create(dest);
            var policy  = (SnapshotDeletionPolicy)Writer.Config.IndexDeletionPolicy;
            var commit  = policy.Snapshot();

            try
            {
                foreach (var file in commit.FileNames)
                {
                    _dir.Copy(destDir, file, file, IOContext.READ_ONCE);
                }
            }
            finally
            {
                policy.Release(commit);
                Writer.DeleteUnusedFiles();
            }
        }