none
【ASP.NET】根据条件循环插入数据,并设置相关字段 与相关业务流程 RRS feed

  • 问题

  • 我想实现类似于GOOGLE搜索下拉关键字功能。我的实现思路是这样的:首先用户在搜索数据的同时处理数据与指定表中数据比较,如果没有该数据把数 据保存起来,同时记录搜索次数。之后利用AJAX技术实现下拉关键字框;由于这种功能是自动判断没有人为参与。这样的话就有一个“垃圾关键字”问题。而我 想到的方法是利用一个“开关”控制。当然这都是自动进行的。现在就是不知道根据什么条件判断开关的打开与关闭呢?以下是我程序代码:

                //首先要判断关键字在数据库中是否存在
                if (!KeyWord.EqualsValue(this.txtserch.Text.Trim()))
                {
                    KeyWord.CycleInsert(this.txtserch.Text.Trim());
                }

            /// <summary>
            /// 所查关键字是否存在
            /// </summary>
            /// <param name="keyword">关键字</param>
            /// <returns></returns>
            public static bool EqualsValue(string keyword)
            {
                string sql = "select count(*) from [keyword] where keyword=@keyword";
                if (((int)SqlHelper.ExecuteScalar(SqlHelper.connString, CommandType.Text, sql, new SqlParameter("@keyword", keyword.Trim()))) > 0)
                    return true; //数据存在
                else
                    return false;  //不存在
            }


            /// <summary>
            /// 循环插入数据库
            /// </summary>
            /// <param name="keyword"></param>
            /// <returns></returns>
            public static void CycleInsert(string keyword)
            {

                ArrayList arr = new ArrayList(System.Text.RegularExpressions.Regex.Split(keyword == "输入您想要查找的项目" ? "" : keyword, " {1,}"));
                arr.Add(keyword);//添加原始搜索关键字
             
                foreach (string rs in arr)
                {
                    if (rs != "")
                    {
                        if (!EqualsValue(rs)) //此关键字在数据库中不存在
                        {
                            Add(rs, SmartValue(rs));
                        }
                    }

                }

               
            }

     

            /// <summary>
            /// 根据条件智能判断关键字是否显示
            /// </summary>
            /// <param name="rs">关键字</param>
            /// <returns></returns>
            protected static string SmartValue(string rs)
            {
               //这里就是我要控制被搜索关键字是否打开
            }

     

     

    数据库字段设计如下:

     

    id   int(4)  --标识符

    keyword   nvarchar(50)   --被搜索关键字

    count  int (4) -- 被搜索次数

    isshow   bit   --开关

     

     

     

    对于智能(无人工操作)审核搜索关键字菜单业务流程的看法:个人认为需要具备两个必要条件

    一、根据给定数据字典做匹配,二、根据已有数据做匹配。

    若等于数据字典中的数据可作为智能关键字,若数据字典有类似值或没有的话再根据已存在的数据做比较。这其中又分为两个方面:

    1、根据数据库中存在关键字的数目且不是智能关键字  解释:若一个关键词被搜索到指定数目的话有可以成为智能关键字(此方法存在风险性)

    2  根据数据库中已成为智能关键字进行判断  解释:若等于就可以判为智能关键字   若不等或类似返回1进行判断

     

    以上是我总结的方法,不知道各位高手有无其他观点或看法,请指出,在下学习了

     


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com


    • 已移动 Paul Zhou 2011年5月23日 8:10 ASP.NET (发件人:.NET Framework 一般性问题讨论区)
    2011年5月21日 2:06

答案

全部回复