public static IServiceCollection AddSpeedWagon(this IServiceCollection services, string path, bool cached, IFileProvider contentFileProvider)
        {
            IContentService contentService;

            if (cached)
            {
                services.AddHostedService <CacheRefreshingHostedService>();
                contentService = new CachedRuntimeContentService(
                    path, null, contentFileProvider
                    );
            }
            else
            {
                contentService = new CacheLessRuntimeContentService(
                    path, null, contentFileProvider
                    );
            }

            ISearchService searchService = new LuceneSearchService(contentService, Path.Combine(path, "search"));

            services.AddSingleton <ISpeedWagonWebContext>(
                s => new SpeedWagonWebContext(
                    path, contentService, searchService));

            return(services);
        }
示例#2
0
        private IList <Package> IndexAndSearch(IEnumerable <Package> packages, string searchTerm, string semVerLevel, string packageType = "")
        {
            Directory d = new RAMDirectory();

            var mockPackageSource = new Mock <IEntityRepository <Package> >();

            mockPackageSource
            .Setup(m => m.GetAll())
            .Returns(packages.AsQueryable());

            var luceneIndexingService = new LuceneIndexingService(
                mockPackageSource.Object,
                d,
                null,
                null,
                new LuceneDocumentFactory(Mock.Of <IIconUrlProvider>()));

            luceneIndexingService.UpdateIndex(forceRefresh: true);

            var luceneSearchService = new LuceneSearchService(d);
            var searchFilter        = new SearchFilter("Test")
            {
                Skip        = 0,
                Take        = 10,
                SearchTerm  = searchTerm,
                SemVerLevel = semVerLevel,
                PackageType = packageType
            };

            var results = luceneSearchService.Search(searchFilter).Result.Data.ToList();

            return(results);
        }
        public async Task SearchControllerTestGetProductWithDefaultFields()
        {
            Mock <ILogger>         _mockLogger = new Mock <ILogger>();
            LuceneSearchRepository repo        = new LuceneSearchRepository(true);
            LuceneSearchService    service     = new LuceneSearchService(repo, null, null);
            SearchController       sut         = new SearchController(service, _mockLogger.Object);

            service.AddToSearchIndex <ProductDB>(products);

            var result = await sut.GetProductsDefaultFields("test") as OkNegotiatedContentResult <IEnumerable <Product> >;

            Assert.AreEqual(expected: 5, actual: result.Content.Count());
        }
        public App()
        {
            InitializeComponent();

            var textExtractor = Locator.Current.GetService <ITextExtractor>();
            var luceneSearch  = new LuceneSearchService(textExtractor);

            Locator.CurrentMutable.RegisterConstant <ISearchService>(luceneSearch);

            luceneSearch.BuildIndex();

            MainPage = new MainPage();
        }
示例#5
0
        private IList <Package> IndexAndSearch(Mock <IPackageSource> packageSource, string searchTerm)
        {
            Directory d = new RAMDirectory();
            var       luceneIndexingService = new LuceneIndexingService(packageSource.Object, d);

            luceneIndexingService.UpdateIndex(forceRefresh: true);

            var luceneSearchService = new LuceneSearchService(d);
            var searchFilter        = new SearchFilter
            {
                Skip       = 0,
                Take       = 10,
                SearchTerm = searchTerm,
            };

            int totalHits;
            var results = luceneSearchService.Search(searchFilter, out totalHits).ToList();

            return(results);
        }
示例#6
0
        private IList <Package> IndexAndSearch(IEnumerable <Package> packages, string searchTerm, string semVerLevel)
        {
            Directory d = new RAMDirectory();

            var mockPackageSource = new Mock <IEntityRepository <Package> >();

            mockPackageSource
            .Setup(m => m.GetAll())
            .Returns(packages.AsQueryable());

            var mockCuratedPackageSource = new Mock <IEntityRepository <CuratedPackage> >();

            mockCuratedPackageSource
            .Setup(m => m.GetAll())
            .Returns(Enumerable.Empty <CuratedPackage>().AsQueryable());

            var luceneIndexingService = new LuceneIndexingService(
                mockPackageSource.Object,
                mockCuratedPackageSource.Object,
                d,
                null,
                null);

            luceneIndexingService.UpdateIndex(forceRefresh: true);

            var luceneSearchService = new LuceneSearchService(d);
            var searchFilter        = new SearchFilter("Test")
            {
                Skip        = 0,
                Take        = 10,
                SearchTerm  = searchTerm,
                SemVerLevel = semVerLevel
            };

            var results = luceneSearchService.Search(searchFilter).Result.Data.ToList();

            return(results);
        }
        public static IServiceCollection AddSpeedWagonCms(this IServiceCollection services, string path, string uploadsPath, IFileProvider contentFileProvider, IFileProvider uploadFileProvider)
        {
            IContentService     contentService     = new CacheLessRuntimeContentService(path, null, contentFileProvider);
            IEditorService      editorService      = new EditorService(contentService, SPEEDWAGON_HOST);
            IContentTypeService contentTypeService = new ContentTypeService(contentService, SPEEDWAGON_HOST);
            IWebContentService  webContentService  = new WebContentService(contentService, SPEEDWAGON_HOST);

            IContentService    uploadContentService = new CacheLessRuntimeContentService(uploadsPath, null, uploadFileProvider);
            IFileUploadService fileUploadService    = new FileUploadService(uploadContentService, string.Empty, uploadFileProvider);
            ISearchService     searchService        = new LuceneSearchService(contentService, Path.Combine(path, "search"));

            services.AddSingleton <ISpeedWagonAdminContext>(s =>
                                                            new SpeedWagonAdminContext(
                                                                path,
                                                                contentService,
                                                                contentTypeService,
                                                                editorService,
                                                                webContentService,
                                                                fileUploadService,
                                                                searchService)
                                                            );

            return(services);
        }
        public void Setup()
        {
            users = new List <TestUser>
            {
                new TestUser {
                    Id = "1", Login = "******", Email = "*****@*****.**"
                },
                new TestUser {
                    Id = "2", Login = "******", Email = "*****@*****.**"
                },
                new TestUser {
                    Id = "3", Login = "******", Email = "*****@*****.**"
                },
                new TestUser {
                    Id = "4", Login = "******", Email = "*****@*****.**"
                },
                new TestUser {
                    Id = "5", Login = "******", Email = "*****@*****.**"
                }
            };

            mockRepo = new Mock <ISearchRepository>();
            sut      = new LuceneSearchService(mockRepo.Object, null, null);
        }
示例#9
0
        static void Main(string[] args)
        {
            var            packageDataJson = File.ReadAllText(@"samplePackageData.json");
            var            asArray         = JArray.Parse(packageDataJson);
            List <Package> packages        = LoadPackages(asArray);

            Lucene.Net.Store.Directory d = new Lucene.Net.Store.RAMDirectory();
            var packageSource            = new Mock <IPackageSource>();

            packageSource
            .Setup(ps => ps.GetPackagesForIndexing(It.IsAny <DateTime?>()))
            .Returns(new PackageIndexEntity[0].AsQueryable());

            var luceneIndexingService = new LuceneIndexingService(packageSource.Object, d);

            luceneIndexingService.UpdateIndex(forceRefresh: true);
            luceneIndexingService.AddPackages(packages.Select(p => new PackageIndexEntity(p)).ToList(), true);
            luceneSearchService = new LuceneSearchService(d);

            TestSearch("jQuery", "jQuery", 1);
            TestSearch("jqueryui", "jQuery.UI.Combined", 4);

            TestSearch("EntityFramework", "EntityFramework", 1);
            TestSearch("Entity Framework", "EntityFramework", 1);
            TestSearch("entity", "EntityFramework", 1);
            //TestSearch("EF", "EntityFramework", 10); //Currently it's not high in the results AT ALL. Should it be?

            TestSearch("Windows.Azure.Storage", "WindowsAzure.Storage", 1);
            TestSearch("Windows Azure Storage", "WindowsAzure.Storage", 1);
            TestSearch("Azure Storage", "WindowsAzure.Storage", 1);

            TestSearch("Windows.Azure.Caching", "Microsoft.WindowsAzure.Caching", 1);
            TestSearch("Windows Azure Caching", "Microsoft.WindowsAzure.Caching", 1);
            TestSearch("Azure Caching", "Microsoft.WindowsAzure.Caching", 1);
            TestSearch("Azure Cache", "Microsoft.WindowsAzure.Caching", 1);
            TestSearch("Windows Azure Cache", "Microsoft.WindowsAzure.Caching", 1);

            // These 3 popular 'service bus' packages are all in top 5 at time of building this corpus
            // Actually NServiceBus has the most downloads, but is lowest ranked for some reason, well, that might change some day.
            TestSearch("NServiceBus", "NServiceBus", 5);
            TestSearch("Rhino.ServiceBus", "Rhino.ServiceBus", 5);
            TestSearch("ServiceBus", "WindowsAzure.ServiceBus", 5);

            // By FAR the most popular json package
            TestSearch("json", "NewtonSoft.Json", 1);
            TestSearch("Json.net", "NewtonSoft.Json", 1);
            TestSearch("Newtonsoft", "NewtonSoft.Json", 1);

            // A popular json javascript package
            TestSearch("json javascript", "json2", 1);
            TestSearch("json js", "json2", 1);

            // Some other results with justifiably good relevance for json include the 'json' package, and ServiceStack.Text
            TestSearch("json", "json", 10);
            TestSearch("json", "ServiceStack.Text", 10);

            TestSearch("Microsoft web api", "Microsoft.AspNet.WebApi", 3);

            TestSearch("microsoft http", "Microsoft.AspNet.WebApi", 4);
            TestSearch("microsoft http", "Microsoft.AspNet.WebApi.WebHost", 4);
            TestSearch("microsoft http", "Microsoft.Net.Http", 4);
            TestSearch("microsoft http", "Microsoft.Web.Infrastructure", 4);

            // Finding some misc packages by their distinctive ids
            TestSearch("Hammock", "Hammock", 1);
            TestSearch("WebActivator", "WebActivatorEx", 1);
            TestSearch("Modernizr", "Modernizr", 1);
            TestSearch("SimpleInjector", "SimpleInjector", 1);
            TestSearch("Simple Injector", "SimpleInjector", 1);

            // Some more general term looking searches
            TestSearch("Asp.net Mvc", "Microsoft.AspNet.Mvc", 2); //unbelievably it's losing to elmah...
            TestSearch("asp.net web pages", "Microsoft.AspNet.WebPages", 1);
            TestSearch("logging", "Elmah", 1);
            TestSearch("search", "Lucene.Net", 1);
            TestSearch("lucene", "Lucene.Net", 1);
            TestSearch("search", "NHibernate.Search", 20);
            TestSearch("hibernate", "NHibernate", 1);
            TestSearch("hibernate", "FluentNHibernate", 2);
            TestSearch("hibernate profiler", "NHibernateProfiler", 4);
            TestSearch("sql profiler", "MiniProfiler", 1);
            TestSearch("sql profiler", "LinqToSqlProfiler", 5);
            TestSearch("haacked", "RouteMagic", 2);
            TestSearch("haacked", "MVcHaack.Ajax", 4);
            TestSearch("haacked", "WebBackgrounder", 5);
            TestSearch("haacked", "routedebugger", 5);

            TestSearch("NuGet", "NuGet.Core", 3);
            TestSearch("NuGet", "NuGet.CommandLine", 2);
            TestSearch("NuGet", "NuGet.Build", 3);

            TestSearch("Mock", "RhinoMocks", 4);
            TestSearch("Mock", "NUnit.Mocks", 4);
            TestSearch("Mock", "Moq", 4);
            TestSearch("Mock", "FakeItEasy", 20);
            TestSearch("Mock", "Ninject.MockingKernel", 30);
            TestSearch("Mock", "AutoWrockTestable", 30);
            TestSearch("Mock", "Nukito", 40);
            TestSearch("Mock", "MockJockey", 50);
            TestSearch("Mock", "Machine.Specifications.AutoMocking", 50);
            TestSearch("Mock", "WP-Fx.EasyMoq", 60);

            TestSearch("razor", "Microsoft.AspNet.Razor", 1);
            TestSearch("razor 2", "Microsoft.AspNet.Razor", 1);
            TestSearch("memes", "FourOne.Memes", 1);
            TestSearch("ninject", "Ninject", 1);
            TestSearch("nunit", "NUnit", 1);
            TestSearch("testing", "NUnit", 1);
            TestSearch("testing", "xunit", 30); //It should probably be higher
            TestSearch("Asp.net MVC scaffolding", "MvcScaffolding", 3);
            TestSearch("Asp.net MVC scaffolding", "NLibScaffolding", 90);
            TestSearch("Asp.net MVC scaffolding", "WijmoMvcScaffolding", 120);
            TestSearch("Asp.net MVC scaffolding", "MvcScaffolding.Obsidian", 130);
            TestSearch("mvc scaffold", "MvcScaffolding", 8);
            TestSearch("mvc scaffold", "ModelScaffolding", 20);
            TestSearch("Microsoft web infrastructure", "Microsoft.Web.Infrastructure", 1);
            TestSearch("Dotnetopenauth", "DotNetOpenAuth", 1);
            TestSearch("OpenID", "DotNetOpenAuth.OpenId.Core", 1);
            TestSearch("image resizer", "ImageResizer", 1);
            TestSearch("parsing", "CommandLineParser", 10);
            TestSearch("knockoutjs", "knockoutjs", 1);
            TestSearch("knockout js", "knockoutjs", 3); //it should probably be higher, i.e. beating json.net
            // TestSearch("knockout.js", "knockoutjs", 1); // fails to find it
            TestSearch("helpers", "microsoft-web-helpers", 1);
            TestSearch("fluent mongo", "FluentMongo", 1);
            TestSearch("fluent mongo", "MongoFluentUpdater", 15);
            TestSearch("mongo", "mongocsharpdriver", 1);
            TestSearch("mongo", "FluentMongo", 2);
            TestSearch("mongo elmah", "elmah.mongodb", 15); //should be higher?

            // These guys are by far the most popular DI packages
            TestSearch("injection", "Unity", 2);
            TestSearch("injection", "Ninject", 2);
            TestSearch("dependency injection", "Unity", 2);
            TestSearch("dependency injection", "Ninject", 2);
        }
        private IList<Package> IndexAndSearch(IEnumerable<Package> packages, string searchTerm)
        {
            Directory d = new RAMDirectory();

            var mockPackageSource = new Mock<IEntityRepository<Package>>();
            mockPackageSource
                .Setup(m => m.GetAll())
                .Returns(packages.AsQueryable());

            var mockCuratedPackageSource = new Mock<IEntityRepository<CuratedPackage>>();
            mockCuratedPackageSource
                .Setup(m => m.GetAll())
                .Returns(Enumerable.Empty<CuratedPackage>().AsQueryable());

            var luceneIndexingService = new LuceneIndexingService(
                mockPackageSource.Object,
                mockCuratedPackageSource.Object,
                d,
                null);
            luceneIndexingService.UpdateIndex(forceRefresh: true);

            var luceneSearchService = new LuceneSearchService(d);
            var searchFilter = new SearchFilter
            {
                Skip = 0,
                Take = 10,
                SearchTerm = searchTerm,
            };

            int totalHits;
            var results = luceneSearchService.Search(searchFilter, out totalHits).ToList();

            return results;
        }
        private IList<Package> IndexAndSearch(Mock<IPackageSource> packageSource, string searchTerm)
        {
            Directory d = new RAMDirectory();
            var luceneIndexingService = new LuceneIndexingService(packageSource.Object, d);
            luceneIndexingService.UpdateIndex(forceRefresh: true);

            var luceneSearchService = new LuceneSearchService(d);
            int totalHits = 0;
            var searchFilter = new SearchFilter
            {
                Skip = 0,
                Take = 10,
                SearchTerm = searchTerm,
            };

            var results = luceneSearchService.Search(
                packageSource.Object.GetPackagesForIndexing(null),
                searchFilter,
                out totalHits).ToList();

            return results;
        }