Exemple #1
0
        private ISearchIndexClient GetIndexClient(IndexNameType indexNameType)
        {
            var indexName   = indexNameType.GetDescription();
            var indexClient = _searchClient.Indexes.GetClient(indexName);

            return(indexClient);
        }
Exemple #2
0
        public DocumentSuggestResult <Document> Suggest(IndexNameType indexNameType, bool highlights, bool fuzzy, string searchText)
        {
            // Execute search based on query string
            try
            {
                SuggestParameters sp = new SuggestParameters()
                {
                    UseFuzzyMatching = fuzzy,
                    Top = 5
                };

                if (highlights)
                {
                    sp.HighlightPreTag  = "<b>";
                    sp.HighlightPostTag = "</b>";
                }

                var indexClient = GetIndexClient(indexNameType);
                // var suggestResult = indexClient.Documents.Suggest(searchText, "sg", sp);


                return(indexClient.Documents.Suggest(searchText, "sg", sp));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error querying index: {0}\r\n", ex.Message.ToString());
            }
            return(null);
        }
Exemple #3
0
        public static List <string> GetSelectFields(IndexNameType indexNameType)
        {
            List <string> fields = new List <string>();

            switch (indexNameType)
            {
            case IndexNameType.Patient:
                fields = new List <String>()
                {
                    "Id", "FirstName", "LastName", "Title", "Gender",
                    "Age", "Phone", "Email", "Address1", "City", "Region", "PostalCode", "DoctorFirstName", "DoctorLastName"
                };
                break;

            case IndexNameType.Invoice:
                fields = new List <String>()
                {
                    "Id", "InvoiceDate", "UserFirstName", "UserLastName", "FirstName", "LastName",
                    "Phone", "Email", "Address1", "City", "Region", "PostalCode", "DoctorFirstName", "DoctorLastName"
                };
                break;

            case IndexNameType.Service:
                fields = new List <String>()
                {
                    "Id", "Name", "Description", "Cost"
                };
                break;
            }

            return(fields);
        }
Exemple #4
0
        public static List <string> GetHighlightFields(IndexNameType indexNameType)
        {
            List <string> fields = new List <string>();

            switch (indexNameType)
            {
            case IndexNameType.Patient:
                fields = new List <String>()
                {
                    "FirstName", "LastName"
                };
                break;

            case IndexNameType.Invoice:
                fields = new List <String>()
                {
                    "FirstName", "LastName"
                };
                break;

            case IndexNameType.Service:
                fields = new List <String>()
                {
                    "Name"
                };
                break;
            }

            return(fields);
        }
Exemple #5
0
 public Document LookUp(IndexNameType indexNameType, string id)
 {
     // Execute geo search based on query string
     try
     {
         var indexClient = GetIndexClient(indexNameType);
         return(indexClient.Documents.Get(id));
     }
     catch (Exception ex)
     {
         Console.WriteLine("Error querying index: {0}\r\n", ex.Message.ToString());
     }
     return(null);
 }
Exemple #6
0
        //public DocumentSearchResult<Document> SearchZip(string zipCode)
        //{
        //    // Execute search based on query string
        //    try
        //    {
        //        SearchParameters sp = new SearchParameters()
        //        {
        //            SearchMode = SearchMode.All,
        //            Top = 1,
        //        };
        //        return _indexZipClient.Documents.Search(zipCode, sp);
        //    }
        //    catch (Exception ex)
        //    {
        //        Console.WriteLine("Error querying index: {0}\r\n", ex.Message.ToString());
        //    }
        //    return null;
        //}
        public AutocompleteResult AutoComplete(IndexNameType indexNameType, string term)
        {
            //Call autocomplete API and return results
            AutocompleteParameters ap = new AutocompleteParameters()
            {
                AutocompleteMode = AutocompleteMode.OneTermWithContext,
                UseFuzzyMatching = false,
                Top = 5
            };

            var indexClient = GetIndexClient(indexNameType);

            var autocompleteResult = indexClient.Documents.Autocomplete(term, "sg", ap);

            return(autocompleteResult);
            //// Conver the Suggest results to a list that can be displayed in the client.
            //List<string> autocomplete = autocompleteResult.Results.Select(x => x.Text).ToList();
            //return new JsonResult(autocomplete);
            //return new JsonResult(new
            //{
            //    JsonRequestBehavior = 0,
            //    Data = autocomplete
            //});
        }
Exemple #7
0
        public DocumentSearchResult <Document> Search(IndexNameType indexNameType, string searchText, string businessTitleFacet, string postingTypeFacet, string salaryRangeFacet,
                                                      string sortType, double lat, double lon, int currentPage, int maxDistance, string maxDistanceLat, string maxDistanceLon)
        {
            // Execute search based on query string
            try
            {
                SearchParameters sp = new SearchParameters()
                {
                    SearchMode = SearchMode.Any,
                    Top        = 10,
                    Skip       = currentPage - 1,
                    // Limit results
                    Select = SearchIndexFields.GetSelectFields(indexNameType),
                    //new List<String>() {"Id", "FirstName", "LastName", "Title", "Gender",
                    //    "Age", "Phone", "Email"},
                    // Add count
                    IncludeTotalResultCount = true,
                    // Add search highlights
                    HighlightFields = SearchIndexFields.GetHighlightFields(indexNameType),
                    //new List<String>() { "LastName" },
                    HighlightPreTag  = "<b>",
                    HighlightPostTag = "</b>",
                    // Add facets
                    // Facets = new List<String>() { "business_title", "posting_type", "level", "salary_range_from,interval:50000" },
                };
                // Define the sort type
                //if (sortType == "featured")
                //{
                //    sp.ScoringProfile = "jobsScoringFeatured";      // Use a scoring profile
                //    sp.ScoringParameters = new List<ScoringParameter>();
                //    sp.ScoringParameters.Add(new ScoringParameter("featuredParam", new[] { "featured" }));
                //    sp.ScoringParameters.Add(new ScoringParameter("mapCenterParam", GeographyPoint.Create(lon, lat)));
                //}
                //else if (sortType == "salaryDesc")
                //    sp.OrderBy = new List<String>() { "salary_range_from desc" };
                //else if (sortType == "salaryIncr")
                //    sp.OrderBy = new List<String>() { "salary_range_from" };
                //else if (sortType == "mostRecent")
                //    sp.OrderBy = new List<String>() { "posting_date desc" };


                // Add filtering
                //string filter = null;
                //if (businessTitleFacet != "")
                //    filter = "business_title eq '" + businessTitleFacet + "'";
                //if (postingTypeFacet != "")
                //{
                //    if (filter != null)
                //        filter += " and ";
                //    filter += "posting_type eq '" + postingTypeFacet + "'";

                //}
                //if (salaryRangeFacet != "")
                //{
                //    if (filter != null)
                //        filter += " and ";
                //    filter += "salary_range_from ge " + salaryRangeFacet + " and salary_range_from lt " + (Convert.ToInt32(salaryRangeFacet) + 50000).ToString();
                //}

                //if (maxDistance > 0)
                //{
                //    if (filter != null)
                //        filter += " and ";
                //    filter += "geo.distance(geo_location, geography'POINT(" + maxDistanceLon + " " + maxDistanceLat + ")') le " + maxDistance.ToString();
                //}

                //sp.Filter = filter;

                var indexClient = GetIndexClient(indexNameType);
                return(indexClient.Documents.Search(searchText, sp));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error querying index: {0}\r\n", ex.Message.ToString());
            }
            return(null);
        }