Exemple #1
0
        public Object GetKBsql(string q, string domain, string intentdomain)
        {
            try
            {
                if (string.IsNullOrEmpty(q))
                {
                    return(null);
                }

                TestIntent testDal = new TestIntent();
                string     buf     = "";
                var        relist  = testDal.Query(domain, intentdomain, q, out buf);
                Intent     intent  = JsonConvert.DeserializeObject <Intent>(buf);
                //Intent intent = new Answer(domain).GetIntent(q, domain);

                if (intent == null || intent.qt_parsed_rst == null)
                {
                    return(new { msg = "意图未识别" });
                }
                Dictionary <string, List <QexFilter> > kbsql = new KBCustSql().GetKsql(intent);
                Dictionary <string, List <dynamic> >   data  = new Dictionary <string, List <dynamic> >();
                foreach (var sql in kbsql)
                {
                    //单个结果集多个结果集sql
                    List <dynamic> ldy = new List <dynamic>();
                    foreach (var ex in sql.Value)
                    {
                        dynamic dy = new ExpandoObject();
                        dy.sql = ex.Qex.Render();

                        /*dy.order= ex.Qex.ExpModel.Order.Render();
                         * dy.group = ex.Qex.ExpModel.Group.Render();
                         * dy.top = ex.Qex.ExpModel.TOP;*/
                        if (ex.Filter != null && ex.Filter.Count > 0)
                        {
                            List <string> fsql = new List <string>();
                            foreach (var fex in ex.Filter)
                            {
                                fsql.Add(fex.ExpFilter.Render());
                            }
                            dy.filtersql = fsql;
                        }
                        ldy.Add(dy);
                    }
                    //sql 字典
                    data.Add(sql.Key, ldy);
                }

                if (data.Count == 0)
                {
                    return(new { msg = "意图已识别,但没有生成sql" });
                }
                return(new { data });
            }
            catch (Exception ex)
            {
                return(new { msg = ex.ToString() });
            }
        }
        public override void OnBeginTest(TestIntent testIntent)
        {
            var task = TryGetTask(testIntent);

            if (task != null)
            {
                _server.TaskStarting(task);
            }
        }