public ISearchResult Results(SearchParameters sp) { var client = GetClient(); var config = GetConfiguration(); sp.HighlightFields = new List <string>(); foreach (var field in config.SearchFields.Where(f => f.IsSearchable)) { sp.HighlightFields.Add(field.Name); } sp.HighlightPreTag = "<match>"; sp.HighlightPostTag = "</match>"; ISearchIndexClient indexClient = client.Indexes.GetClient(config.IndexName); var startTime = DateTime.UtcNow; var response = indexClient.Documents.Search(_searchTerm, sp); var processStartTime = DateTime.UtcNow; var results = new Models.SearchResult(); foreach (var result in response.Results) { var doc = FromDocument(result.Document, result.Score); doc.Properties.Add("__match", result.Highlights); results.Content.Add(doc); } if (response.Facets != null) { foreach (var facet in response.Facets) { var searchFacet = new SearchFacet() { Name = facet.Key, Items = facet.Value.Select(x => new KeyValuePair <string, long>(x.Value.ToString(), x.Count.HasValue ? x.Count.Value : 0)) }; results.Facets.Add(searchFacet); } } if (response.Count != null) { results.Count = (int)response.Count; } if (config.LogSearchPerformance) { string lb = Environment.NewLine; Log.Info($"AzureSearch Log (cached client){lb} - Response Duration: {(int)(processStartTime - startTime).TotalMilliseconds}ms{lb} - Process Duration: {(int)(DateTime.UtcNow - processStartTime).TotalMilliseconds}ms{lb} - Results Count: {results.Count}{lb} - Origin: {HttpContext.Current?.Request?.Url}{lb} - Index name: {config.IndexName}{lb} - Base uri: {indexClient.BaseUri}{lb} - Search term: {_searchTerm}{lb} - Uri query string: {HttpUtility.UrlDecode(sp.ToString())}{lb}"); } return(results); }
private ISearchResult Results(SearchParameters sp) { var profiler = MiniProfiler.Current; using (profiler.Step($"Calling Results(SearchParameters sp)")) { //client = GetClient(); //var config = GetConfiguration(); //indexClient = client.Indexes.GetClient(config.IndexName); var startTime = DateTime.UtcNow; var response = _indexClient.Documents.Search(_searchTerm, sp); var processStartTime = DateTime.UtcNow; var results = new Models.SearchResult(); foreach (var result in response.Results) { results.Content.Add(FromDocument(result.Document, result.Score)); } if (response.Facets != null) { foreach (var facet in response.Facets) { var searchFacet = new SearchFacet() { Name = facet.Key, Items = facet.Value.Select(x => new KeyValuePair <string, long>(x.Value.ToString(), x.Count.HasValue ? x.Count.Value : 0)) }; results.Facets.Add(searchFacet); } } if (response.Count != null) { results.Count = (int)response.Count; } return(results); } }
private ISearchResult Results(SearchParameters sp) { var client = GetClient(); var config = GetConfiguration(); ISearchIndexClient indexClient = client.Indexes.GetClient(config.IndexName); var response = indexClient.Documents.Search(_searchTerm, sp); var results = new Models.SearchResult(); foreach (var result in response.Results) { results.Content.Add(FromDocument(result.Document)); } if (response.Facets != null) { foreach (var facet in response.Facets) { foreach (var facetResult in facet.Value) { results.Facets.Add(new SearchFacet() { Count = facetResult.Count, Name = facetResult.Value.ToString() }); } } } if (response.Count != null) { results.Count = (int)response.Count; } return(results); }