/// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        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;
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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();
        }
示例#8
0
        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));
        }