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是无效的。

  • 相关阅读:
    下拉列表
    集合(List、Set、Map)
    IDEA实用教程(一)
    IDEA实用教程(四)—— 创建JavaSE工程
    IDEA实用教程(二)
    IDEA实用教程(三)
    IDEA实用教程(五)——配置IDEA的JVM内存值
    详解 JAVA 适配模式和 接口适配器
    ubuntu查看硬件信息
    IT职场人生:员工的公司观
  • 原文地址:https://www.cnblogs.com/freexiaoyu/p/2074347.html
Copyright © 2011-2022 走看看