Пример #1
0
        private static int Search(SearchOptions options)
        {
            InitSearch(options);
            SearchConfiguration config = LoadConfiguration();
            string path = Directory.GetCurrentDirectory();

            IFileSelector fileSelector = null;

            if (options.FileFilter != null && options.FileFilterName == null)
            {
                fileSelector = ExtensibleFileSelectorBuilder.NewFileSelector()
                               .WithoutExcludedExtensions()
                               .WithExcludedPaths(config.ExcludedPaths)
                               .WithRegexFilter(options.FileFilter)
                               .WithoutExclusionRegex()
                               .WithMaxSize(config.MaxFileSize)
                               .Build();
            }
            else if (options.FileFilter == null && options.FileFilterName != null)
            {
                FileFilter fileFilter = config.FileFilters.First(filter =>
                                                                 filter.Name.Equals(options.FileFilterName, StringComparison.InvariantCultureIgnoreCase));
                if (fileFilter == null)
                {
                    throw new ArgumentException($"File filter named '{options.FileFilterName}' does not exist. Please edit '{ConfigFileName}'.");
                }

                fileSelector = ExtensibleFileSelectorBuilder.NewFileSelector()
                               .WithoutExcludedExtensions()
                               .WithExcludedPaths(config.ExcludedPaths)
                               .WithRegexFilter(fileFilter.Regex)
                               .WithExclusionRegex(fileFilter.Exclusion)
                               .WithMaxSize(config.MaxFileSize)
                               .Build();
            }
            else
            {
                fileSelector = ExtensibleFileSelectorBuilder.NewFileSelector()
                               .WithExcludedExtensions(config.ExcludedExtensions)
                               .WithExcludedPaths(config.ExcludedPaths)
                               .WithoutRegexFilter()
                               .WithoutExclusionRegex()
                               .WithoutMaxSize()
                               .Build();
            }

            IContentSelector contentSelector = new RegexContentSelector(options.Query, options.CaseSensitive);
            var flashSearcher = new FlashSearcher();

            foreach (var result in flashSearcher.SearchContentInFolder(path, fileSelector, contentSelector))
            {
                _console.PrintSearchResult(result);
            }


            return(0);
        }
Пример #2
0
        private static int LuceneSearch(LuceneSearchOptions options)
        {
            InitSearch(options);
            SearchConfiguration config = LoadConfiguration();

            string  path    = Directory.GetCurrentDirectory();
            Project project = config.Projects.FirstOrDefault(
                p => path.StartsWith(p.Path, StringComparison.InvariantCultureIgnoreCase));

            if (project == null)
            {
                throw new ArgumentException($"Current path is not under any known project. Please edit '{ConfigFileName}'.");
            }


            FileFilter fileFilter = config.FileFilters.FirstOrDefault(filter =>
                                                                      filter.Name.Equals(options.FileFilterName, StringComparison.InvariantCultureIgnoreCase));

            if (fileFilter == null)
            {
                throw new ArgumentException($"File filter named '{options.FileFilterName}' does not exist. Please edit '{ConfigFileName}'.");
            }

            var fileSelector = ExtensibleFileSelectorBuilder.NewFileSelector()
                               .WithExcludedExtensions(config.ExcludedExtensions)
                               .WithExcludedPaths(config.ExcludedPaths)
                               .WithRegexFilter(fileFilter.Regex)
                               .WithExclusionRegex(fileFilter.Exclusion)
                               .WithMaxSize(config.MaxFileSize)
                               .Build();

            LuceneContentSelector contentSelector = new LuceneContentSelector(options.Query);

            string localDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string indexDirectory = Path.Combine(localDirectory, "Indexes", project.Name, fileFilter.Index);
            var    luceneSearcher = new LuceneSearcher(indexDirectory)
            {
                MaxSearchResults = Int32.MaxValue
            };

            foreach (var result in luceneSearcher.SearchContentInFolder(path, fileSelector, contentSelector))
            {
                _console.PrintSearchResult(result);
            }

            return(0);
        }
Пример #3
0
        private static int LuceneIndex(LuceneIndexOptions options)
        {
            SearchConfiguration config = LoadConfiguration();

            string  path    = Directory.GetCurrentDirectory();
            Project project = config.Projects.FirstOrDefault(
                p => path.StartsWith(p.Path, StringComparison.InvariantCultureIgnoreCase));

            if (project == null)
            {
                throw new ArgumentException($"Current path is not under any known project. Please edit '{ConfigFilePath}'.");
            }

            FileFilter fileFilter = config.FileFilters.FirstOrDefault(filter =>
                                                                      filter.Name.Equals(options.FileFilterName, StringComparison.InvariantCultureIgnoreCase));

            if (fileFilter == null)
            {
                throw new ArgumentException($"File filter named '{options.FileFilterName}' does not exist. Please edit '{ConfigFilePath}'.");
            }

            var fileSelector = ExtensibleFileSelectorBuilder.NewFileSelector()
                               .WithExcludedExtensions(config.ExcludedExtensions)
                               .WithExcludedPaths(config.ExcludedPaths)
                               .WithRegexFilter(fileFilter.Regex)
                               .WithExclusionRegex(fileFilter.Exclusion)
                               .WithMaxSize(config.MaxFileSize)
                               .Build();

            string indexDirectory = _configPathResolver.GetIndexDir(project.Name, fileFilter.Index);
            var    luceneSearcher = new LuceneSearcher(indexDirectory);

            Console.Write($"Indexing {path}...");
            luceneSearcher.IndexContentInFolder(path, fileSelector);
            Console.WriteLine($" Done.");

            return(0);
        }