Пример #1
0
        public Object GetKBDataByPage(string q, string domain, string intent_domain, string intent_id, string pageNum)
        {
            var        emptyObject = new { result = false, msg = "未找到查询结果!" };
            IntentItem itentItem   = null;

            Domain.Intent intent = new Answer(domain).GetIntent(q);
            if (intent.qt_parsed_rst == null)
            {
                return(null);
            }

            foreach (var item in intent.qt_parsed_rst)
            {
                if (item.results == null)
                {
                    continue;
                }

                if (item.qt_domain == domain && item.results[0].domain == intent_domain && item.intent_no == intent_id)
                {
                    itentItem = item;
                    break;
                }
            }
            string intentItem = string.Empty;

            int pnum = 0;

            try
            {
                pnum = int.Parse(pageNum);
            }
            catch { return(emptyObject); }

            //try
            //{
            //    itentItem = Newtonsoft.Json.JsonConvert.DeserializeObject<IntentItem>(intentItem);
            //}
            //catch (System.Exception ex)
            //{
            //    CBase.Log.Logger.Error(ex);
            //}
            if (itentItem == null)
            {
                return(emptyObject);
            }

            itentItem.results[0].pagenum = pnum;

            CMKArea karea = null;
            var     qc    = new KB().GetItem(itentItem);

            if (qc != null && qc.Total > 0)
            {
                karea = qc.MetaList[0];
                karea.Page.PageNum = pnum;
                return(new { result = true, karea });
            }
            else
            {
                return(emptyObject);
            }

            //GetBookInfo(karea);
        }
Пример #2
0
        public static Dictionary <string, Dictionary <string, Dictionary <string, object> > > BuildDict(
            string ordinate, string abscissa, CMKArea cArea)
        {
            if (cArea == null || cArea.KNode.Count == 0)
            {
                return(null);
            }

            Dictionary <string, Dictionary <string, Dictionary <string, object> > > dict =
                new Dictionary <string, Dictionary <string, Dictionary <string, object> > >();

            //装载第一个node 并以第一个为纵坐标为标准添加后续节点
            foreach (var data in cArea.KNode[0].DATA)
            {
                string ordinateValue = string.Empty;
                string abscissaValue = string.Empty;

                if (data.FieldValue.ContainsKey(ordinate) && data.FieldValue[ordinate] != null)
                {
                    ordinateValue = data.FieldValue[ordinate].ToString();
                }
                if (data.FieldValue.ContainsKey(abscissa) && data.FieldValue[abscissa] != null)
                {
                    abscissaValue        = data.FieldValue[abscissa].ToString();
                    cArea.KNode[0].Title = abscissaValue;
                }

                if (!string.IsNullOrEmpty(ordinateValue) && !string.IsNullOrEmpty(abscissaValue))
                {
                    var abscissaDic = new Dictionary <string, Dictionary <string, object> >();
                    abscissaDic.Add(abscissaValue, data.FieldValue);
                    if (!dict.ContainsKey(ordinateValue))
                    {
                        dict.Add(ordinateValue, abscissaDic);
                    }
                }
            }

            //添加后续节点
            for (int i = 1; i < cArea.KNode.Count; i++)
            {
                foreach (var data in cArea.KNode[i].DATA)
                {
                    string ordinateValue = string.Empty;
                    string abscissaValue = string.Empty;

                    if (data.FieldValue.ContainsKey(ordinate) && data.FieldValue[ordinate] != null)
                    {
                        ordinateValue = data.FieldValue[ordinate].ToString();
                    }
                    if (!dict.ContainsKey(ordinateValue))
                    {
                        continue;
                    }

                    if (data.FieldValue.ContainsKey(abscissa) && data.FieldValue[abscissa] != null)
                    {
                        abscissaValue        = data.FieldValue[abscissa].ToString();
                        cArea.KNode[i].Title = abscissaValue;
                    }

                    if (!string.IsNullOrEmpty(ordinateValue) && !string.IsNullOrEmpty(abscissaValue))
                    {
                        var abscissaDic = new Dictionary <string, Dictionary <string, object> >();
                        abscissaDic.Add(abscissaValue, data.FieldValue);
                        var ordinateDic = dict[ordinateValue];
                        if (!ordinateDic.ContainsKey(abscissaValue))
                        {
                            ordinateDic.Add(abscissaValue, data.FieldValue);
                        }
                    }
                }
            }


            return(dict);
        }