Beispiel #1
0
        static Data()
        {
            azureSearchConnection = new AzureSearchConnection(LamaConfiguration.Current().GetModel().SearchName,
                                                              LamaConfiguration.Current().GetModel().SearchKey);

            azureSearchContext = new AzureSearchContext(azureSearchConnection, new AzureSearchMapping());
        }
Beispiel #2
0
 public void WaitForSearchOperationCompletion(int numberOfRequiredItemsInSearch)
 {
     using (var azureSearchHelper = new AzureSearchHelper(LamaConfiguration.Current(), NullLogger.Instance))
     {
         azureSearchHelper.WaitForSearchOperationCompletion <Listing>(numberOfRequiredItemsInSearch, Index);
     }
 }
Beispiel #3
0
        public void LoadFromJsonToAzureSearch()
        {
            using (var azureSearchHelper = new AzureSearchHelper(LamaConfiguration.Current(), NullLogger.Instance))
            {
                var createIndexServiceResult = AsyncHelper.RunSync(() => azureSearchHelper.CreateSearchIndex <Listing>(Index));

                if (!createIndexServiceResult.IsStatusOk())
                {
                    throw createIndexServiceResult.PotentialException.GetException();
                }

                var countServiceResult = AsyncHelper.RunSync(() => azureSearchHelper.CountDocuments <Listing>(new SearchParameters(), indexName: Index));

                if (!countServiceResult.IsStatusOk() || countServiceResult.Data != ExpectedDataCount)
                {
                    var baseDirectory  = AppContext.BaseDirectory;
                    var mockedDataPath = Path.Combine(baseDirectory, "App_Data\\listings-mocked.json");

                    var searchParameters = new SearchParameters()
                    {
                        Select = new List <string>()
                        {
                            "id"
                        },
                        Top = 1000
                    };

                    if (countServiceResult.Data > 0)
                    {
                        var allDocuments = AsyncHelper.RunSync(() => azureSearchHelper.SearchDocuments <Listing>(searchParameters, indexName: Index));

                        AsyncHelper.RunSync(() => azureSearchHelper
                                            .DeleteDocumentsInIndex(allDocuments.Data.Results.Select(q => new Listing {
                            Id = q.Document.Id
                        }), Index));

                        azureSearchHelper.WaitForSearchOperationCompletion <Listing>(0, Index);
                    }

                    var listings = JsonConvert.DeserializeObject <List <Listing> >(File.ReadAllText(mockedDataPath), new JsonSerializerSettings
                    {
                        Converters = new List <JsonConverter> {
                            new GeographyPointJsonConverter()
                        }
                    });

                    var uploadOrMergeListingsServiceResult = AsyncHelper.RunSync(() => azureSearchHelper.ChangeDocumentsInIndex(listings, Index));

                    if (!uploadOrMergeListingsServiceResult.IsStatusOk())
                    {
                        throw uploadOrMergeListingsServiceResult.PotentialException.GetException();
                    }

                    azureSearchHelper.WaitForSearchOperationCompletion <Listing>(listings.Count, Index);
                }
            }
        }
        public AzureSearchHelper(LamaConfiguration configuration, ILogger logger)
        {
            _configuration = configuration;
            _logger        = logger;

            var searchKey = _configuration.GetModel().SearchKey;

            _searchName = _configuration.GetModel().SearchName;

            if (!string.IsNullOrWhiteSpace(_searchName) && !string.IsNullOrWhiteSpace(searchKey))
            {
                _serviceClient = new SearchServiceClient(_searchName, new SearchCredentials(searchKey));
            }
        }