/// <summary> /// Retrieving suggestions using the AWS CloudSearch Suggester. The AWS CloudSearch Suggester /// returns results from the entire index and does not suport query filtering. /// </summary> /// <param name="parameters">Suggest request parameters</param> /// <returns>SuggestResults</returns> public SuggestResults RetieveSuggestions(NameValueCollection parameters) { SuggestResults suggestResults = new SuggestResults(); try { AmazonCloudSearchDomainClient client = GetCloudSearchClient(); SuggestRequest request = new SuggestRequest(); if (parameters["suggestername"] != null) { request.Suggester = parameters["suggestername"]; } if (parameters["q"] != null) { request.Query = parameters["q"]; } request.Size = parameters["size"] != null?Convert.ToInt32(parameters["size"]) : this.DefaultPageSize; SuggestResponse results = client.Suggest(request); suggestResults.Matches = results.Suggest.Suggestions.Select(c => c.Suggestion).ToList(); } catch (Exception ex) { suggestResults.HasError = true; suggestResults.ErrorDetail = ex.Message + " : " + ex.StackTrace; } return(suggestResults); }
/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { SuggestResponse response = new SuggestResponse(); context.Read(); int targetDepth = context.CurrentDepth; while (context.ReadAtDepth(targetDepth)) { if (context.TestExpression("status", targetDepth)) { var unmarshaller = SuggestStatusUnmarshaller.Instance; response.Status = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("suggest", targetDepth)) { var unmarshaller = SuggestModelUnmarshaller.Instance; response.Suggest = unmarshaller.Unmarshall(context); continue; } } return(response); }
public PartyData exec(string inn) { string responseText = getjson(inn); if (string.IsNullOrEmpty(responseText)) { return(null); } try { SuggestResponse suggs = JsonConvert.DeserializeObject <SuggestResponse>(responseText); if (suggs.suggestions.Count == 0) { return(null); } else { return(suggs.suggestions[0].data); } } catch { return(null); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var response = new SuggestResponse(); var jsonObject = JObject.Load(reader); foreach (var prop in jsonObject.Properties()) { if (prop.Name == "_shards") response.Shards = prop.Value.ToObject<ShardsMetaData>(); else response.Suggestions.Add(prop.Name, prop.Value.ToObject<Suggest[]>()); } return response; }
public static ISuggestResponse <T> Suggestive <T>(Func <SuggestDescriptor <T>, SuggestDescriptor <T> > request) where T : class, new() { ISuggestResponse <T> results = new SuggestResponse <T>(); try { results = Client.Suggest(request); } catch (Exception ex) { } return(results); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var response = new SuggestResponse(); var jsonObject = JObject.Load(reader); foreach (var prop in jsonObject.Properties()) { if (prop.Name == "_shards") { response.Shards = prop.Value.ToObject <ShardsMetaData>(); } else { response.Suggestions.Add(prop.Name, prop.Value.ToObject <Suggest[]>()); } } return(response); }
public void Write(SuggestResponse response, Stream sw) { sw.StartObject(); sw.PropertyNameWithColon("accounts"); sw.StartArray(); var accounts = response.Ids; var limit = Math.Min(accounts.Count, response.Limit); for (int i = 0; i < limit; i++) { Write(accounts[i], sw); if (i < limit - 1) { sw.Comma(); } } sw.EndArray(); sw.EndObject(); }
public IResultSet Search(ISearchQuery query) { var amazonSearchParameters = this.GetAmazonParams(); AmazonCloudSearchDomainConfig config = new AmazonCloudSearchDomainConfig(); config.ServiceURL = amazonSearchParameters[SearchEndPoint]; AmazonCloudSearchDomainClient domainClient = new AmazonCloudSearchDomainClient(amazonSearchParameters[AccessKey], amazonSearchParameters[SecretAccessKey], config); List <string> suggestions = new List <string>(); StringBuilder highlights = new StringBuilder(); highlights.Append("{\'"); if (query == null) { throw new ArgumentNullException("query"); } foreach (var field in query.HighlightedFields) { if (highlights.Length > 2) { highlights.Append(", \'"); } highlights.Append(field.ToLowerInvariant()); highlights.Append("\':{} "); SuggestRequest suggestRequest = new SuggestRequest(); suggestRequest.Suggester = this.GetSuggesterName(field); suggestRequest.Size = query.Take; suggestRequest.Query = query.Text; SuggestResponse suggestion = domainClient.Suggest(suggestRequest); foreach (var suggest in suggestion.Suggest.Suggestions) { suggestions.Add(suggest.Suggestion); } } highlights.Append("}"); SearchRequest searchRequest = new SearchRequest(); if (query.Filter != null) { searchRequest.FilterQuery = this.BuildQueryFilter(query.Filter); } if (query.OrderBy != null) { searchRequest.Sort = string.Join(",", query.OrderBy); } if (query.Take > 0) { searchRequest.Size = query.Take; } if (query.Skip > 0) { searchRequest.Start = query.Skip; } searchRequest.Highlight = highlights.ToString(); searchRequest.Query = query.Text; searchRequest.QueryParser = QueryParser.Simple; var result = domainClient.Search(searchRequest).SearchResult; return(new AmazonResultSet(result, suggestions)); }