Example #1
0
        public static SearchResponse.SearchResult Search(IAliyunIndexer indexer, QueryBuilder query, string qp, ISummary summary = null, string formula_name = null, string[] fields = null)
        {
            var baseQuerys    = new AliyunBaseQuerys();
            var queryString   = query.ToString();
            var summaryString = summary == null ? String.Empty : summary.ToString();

            formula_name = (formula_name ?? String.Empty).Trim();
            var fetch_fields = fields == null || fields.Length == 0 ? String.Empty : String.Join(";", fields);
            var otherQuerys  = new Dictionary <string, string>
            {
                { "query", queryString },
                { "index_name", indexer.AliyunAppName },
                { "fetch_fields", fetch_fields },
                { "qp", qp },
                { "disable", String.Empty },
                { "first_formula_name", String.Empty },
                { "formula_name", formula_name ?? String.Empty },
                { "summary", summaryString },
            };
            var sign = baseQuerys.GetSignature(AliyunAccessKey.AccessKeyId, AliyunAccessKey.AccessKeySecret, "get", otherQuerys);

            var response = _Http.Search(baseQuerys.Version, AliyunAccessKey.AccessKeyId, sign, baseQuerys.Signature.Method, baseQuerys.Signature.Version,
                                        baseQuerys.SignatureNonce, baseQuerys.Timestamp, queryString, indexer.AliyunAppName,
                                        fetch_fields, qp, String.Empty, String.Empty, formula_name, summaryString);

            if (!response.IsOk())
            {
                throw new Exception(String.Format("系统错误,response:{0};Query:{1}",
                                                  Newtonsoft.Json.JsonConvert.SerializeObject(response),
                                                  Newtonsoft.Json.JsonConvert.SerializeObject(otherQuerys)));
            }
            return(response.Result);
        }