zoukankan      html  css  js  c++  java
  • hubbledotnet 例子中对搜索关键字的分词方法

    public string GetKeywordAnalyzerStringFromServer(string tableName, string fieldName, string keywords, int cacheTimeout, out string bySpace)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendFormat("exec SP_FieldAnalyze '{0}', '{1}', '{2}', 'sqlclient' ",
                    tableName.Replace("'", "''"), fieldName.Replace("'", "''"), keywords.Replace("'", "''"));
                System.Data.DataSet dssp = new Maticsoft.BLL.job_job().JobList(sb.ToString());
                StringBuilder result = new StringBuilder();
                StringBuilder bySpaceSb = new StringBuilder();
    
                foreach (System.Data.DataRow row in dssp.Tables[0].Rows)
                {
                    string word = row["Word"].ToString().Replace("'", "''");
                    bySpaceSb.AppendFormat("{0} ", word);
                    result.AppendFormat("{0}^{1}^{2} ", word, row["Rank"], row["Position"]);
                }
    
                bySpace = bySpaceSb.ToString().Trim();
                return result.ToString().Trim();
            }
            

     

    strkeyword = GetKeywordAnalyzerStringFromServer("job_job_select", "jobTitle", keyword, int.MaxValue, out wordssplitbyspace);

    分词 表名,字段(比如 title 用的 pangu ,content 用的 English ,那么如果你输入 title 就按盘古分,输入 content 就按 English 分,因为不同字段可能分词器不一样

    ) 要分词的关键字

     

    如果要对词精确搜索 比如用户输入 高级程序员联想中国 只要标题中有高级程序员和联想的才显示

    把上面的foreach改下就可以了

    foreach (System.Data.DataRow row in table.Rows)
    {
    string word = String.Empty;
    if(table.Rows.Count>1)
    {
    word = row["Word"].ToString().Replace("'", "''");
    bySpaceSb.AppendFormat("{0} ", word);
    result.AppendFormat("{0}^{1}^{2}^0 ", word, row["Rank"], row["Position"]);
    }
    else
    {
    word = row["Word"].ToString().Replace("'", "''");
    bySpaceSb.AppendFormat("{0} ", word);
    result.AppendFormat("{0}^{1}^{2}^1 ", word, row["Rank"], row["Position"]);
    }

    }



    大家可以看出result.AppendFormat("{0}^{1}^{2}^1 ", word, row["Rank"], row["Position"]);多了一个参数这个参数0表示与1表示或

    注意:这个参数只有当搜索是  contains的时候才有效,match是无效的。

  • 相关阅读:
    VS Code 的常用快捷键
    oj教程--坑
    oj教程--学习顺序
    oj教程--链表
    oj教程--队列
    oj教程--栈
    【MySQL】汇总数据
    【MySQL】使用WHERE子句
    【MySQL】SELECT语句
    【MySQL】使用MySQL(连接、选择数据库、显示数据库和表信息)
  • 原文地址:https://www.cnblogs.com/freexiaoyu/p/2074347.html
Copyright © 2011-2022 走看看