hubbledotnet 例子中对搜索关键字的分词方法

本文介绍了一种使用SQL查询结合分词器优化关键词检索的技术,包括分词表名、字段选择、关键字分词过程及精确搜索方法。通过调整查询参数,实现了高效且准确的关键词匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值