コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }