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); }
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(); }
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); }
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); }
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; }