Esempio n. 1
0
        public async Task <DocumentSearchResult> Search([FromUri] string searchText)
        {
            var credentials          = new SearchCredentials(AzureSearchConfig.SearchServiceApiKey);
            SearchIndexClient client = new SearchIndexClient(AzureSearchConfig.SearchServiceName
                                                             , AzureSearchConfig.SearchIndexName, credentials);

            var callersGeoLocation = LocationHelper.GetCallerLocation();
            var scoringParam       = new ScoringParameter(AzureSearchConfig.GeoScoringParameterName,
                                                          $"{callersGeoLocation.Longitude},{callersGeoLocation.Latitude}");

            var parameters = new SearchParameters
            {
                SearchMode        = SearchMode.All,
                Facets            = AzureSearchConfig.SearchIndexFacets,
                ScoringProfile    = AzureSearchConfig.ScoringProfileName,
                ScoringParameters = new[] { scoringParam }
            };

            return(await client.Documents.SearchAsync(searchText, parameters));
        }
        public async Task <IEnumerable <PersonModel> > Suspects([FromUri] string searchText)
        {
            var credentials          = new SearchCredentials(AzureSearchConfig.SearchServiceApiKey);
            SearchIndexClient client = new SearchIndexClient(AzureSearchConfig.SearchServiceName
                                                             , AzureSearchConfig.SearchIndexName, credentials);

            var callersGeoLocation = LocationHelper.GetCallerLocation();

            var scoringParam = new ScoringParameter(
                AzureSearchConfig.GeoScoringParameterName,
                new string[] { callersGeoLocation.Longitude.ToString(), callersGeoLocation.Latitude.ToString() });

            var parameters = new SearchParameters
            {
                SearchMode        = SearchMode.All,
                Facets            = AzureSearchConfig.SearchIndexFacets,
                ScoringProfile    = AzureSearchConfig.ScoringProfileName,
                ScoringParameters = new[] { scoringParam },
                Top    = 10,
                Select = new[] { "FirstName", "LastName", "EyeColor", "HairColor", "Sex", "SuspectSearchImage" }
            };

            DocumentSearchResult searchResult = await client.Documents.SearchAsync(searchText, parameters);

            var persons = searchResult.Results.Select(d =>
            {
                return(new PersonModel
                {
                    Name = d.Document["FirstName"].ToString() + d.Document["LastName"].ToString(),
                    EyeColor = d.Document["EyeColor"].ToString(),
                    HairColor = d.Document["HairColor"].ToString(),
                    Sex = d.Document["Sex"].ToString(),
                    SuspectSearchImage = d.Document["SuspectSearchImage"].ToString()
                });
            });

            return(persons);
        }