Exemplo n.º 1
0
        public void ExecuteAction(IServiceProvider serviceProvider, ref object request, ref BaseResponse response)
        {
            SearchRequest  requestMessage  = request as SearchRequest;
            SearchResponse responseMessage = response as SearchResponse;

            IElasticSearchConnectionProvider elasticSearchConnectionProvider = serviceProvider.GetRequiredService <IElasticSearchConnectionProvider>();
            ElasticClient productionsClient = elasticSearchConnectionProvider.GetElasticClient(ElasticSearchIndexNameConstants.Productions);
            var           searchResponse    = productionsClient.Search <Production>(s => s.Query(q => (
                                                                                                     q.Term(f => f.Title, requestMessage.SearchKey, 1.5) || q.Term(f => f.OriginalTitle, requestMessage.SearchKey, 1.5) ||
                                                                                                     q.Term(f => f.AKAs, requestMessage.SearchKey, 1.5) || q.Term(f => f.Genres, requestMessage.SearchKey, 0.5) ||
                                                                                                     q.Term(f => f.Keywords, requestMessage.SearchKey, 0.8)
                                                                                                     )));

            if (searchResponse.IsValid)
            {
                responseMessage.SearchResults = searchResponse.Hits.Where(e => e.Score >= searchResponse.MaxScore * 0.7).Select(e => new
                                                                                                                                SearchResult
                {
                    Source = new Production
                    {
                        ID             = e.Source.ID,
                        IMDbID         = e.Source.IMDbID,
                        Title          = e.Source.Title,
                        Year           = e.Source.Year,
                        ProductionType = e.Source.ProductionType
                    }
                }).ToArray();
            }
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                          .AddJsonFile($"appsettings.{EnvironmentUtilities.GetEnvironmentName()}.json", optional: true, reloadOnChange: true)
                          .AddEnvironmentVariables()
                          .AddCommandLine(args);

            var config = builder.Build();
            BaseJobConfiguration configuration       = config.Get <BaseJobConfiguration>();
            CustomConfiguration  customConfiguration = config.Get <CustomConfiguration>();

            InitializationHelper.Initialize(configuration);
            var services = new ServiceCollection();

            services.AddOptions();
            services.Configure <CustomConfiguration>(config.GetSection(ConfigurationConstants.CustomConfigurationSectionName));
            services.AddSingleton <IElasticSearchConnectionProvider, ElasticSearchConnector>();
            var serviceProvider = services.BuildServiceProvider();

            IElasticSearchConnectionProvider elasticSearchProvider = serviceProvider.GetRequiredService <IElasticSearchConnectionProvider>();
            ElasticClient elasticClient = elasticSearchProvider.GetElasticClient(ElasticSearchIndexNameConstants.Productions);

            using (JMoviesEntities entities = new JMoviesEntities())
            {
                foreach (var production in entities.Production)
                {
                    long productionID = production.ID;
                    if (production is JMovies.IMDb.Entities.Movies.Movie)
                    {
                        using (JMoviesEntities innerEntities = new JMoviesEntities())
                        {
                            JMovies.IMDb.Entities.Movies.Movie movie = production as JMovies.IMDb.Entities.Movies.Movie;
                            movie.AKAs     = innerEntities.AKA.Where(e => e.ProductionID == productionID).ToArray();
                            movie.Genres   = innerEntities.Genre.Where(e => e.ProductionID == productionID).ToArray();
                            movie.Keywords = innerEntities.Keyword.Where(e => e.ProductionID == productionID).ToArray();
                            movie.TagLines = innerEntities.TagLine.Where(e => e.ProductionID == productionID).ToArray();
                        }
                    }
                    elasticClient.IndexDocument(MapProduction(production as IMDb.Entities.Movies.Movie));
                }
            }
        }