模拟百度搜索渲染HTML页面关键词高亮分组排序算法(C#)
模拟百度搜索渲染HTML页面关键词高亮分组排序算法(C#)
最近在研究模拟百度搜索以及自动中文分词算法,从数据库查询到相关关键词结果,最后是渲染HTML页面的关键词,关键词部分采用黄色背景红色字体高亮显示。 最后在渲染HTML页面的关键词高亮环节出现小问题,没有正确渲染关键词,如下图: 高亮关键词失败原因: 关键词高亮是根据自动分词系统分解的关键词顺序进行的,比如上图的关键词分词结果:api,webapi,程序首先高亮渲染api关键词,那么webapi关键词被强行拆分了!!! HTML Code: web<span class="search-highlight">api</span> 当程序高亮webapi关键词的时候,HTML内容已经无法匹配到webapi关键词! 解决方案:对关键词的包含关系重新分组排序!!! 逻辑推理:首先高亮webapi关键词,然后高亮api HTML Code: <span class="search-highlight">webapi</span> //来源:C/S框架网(www.csframework.com) QQ:23404761 渲染HTML页面关键词高亮分组排序算法: C# Code: /// <summary> /// 渲染HTML页面关键词高亮分组排序算法 /// </summary> public class KeywordSort { /// <summary> /// 关键词分组排序算法 /// </summary> /// <param name="keyWords"></param> /// <returns></returns> public static string SortKeywords(string keyWords) { try { #region 按每个关键词包含关系分组 SortedList groups = new SortedList(); string[] keys = keyWords.Split(','); foreach (string key in keys) { if (String.IsNullOrEmpty(key)) continue; ArrayList sort = new ArrayList(); foreach (string s in keys) { if (s.IndexOf(key) >= 0) sort.Add(s); } if (sort.Count > 1) sort.Sort(new SortComapre());//按包含关系排序 groups.Add(key, sort); } #endregion #region 重新组合关键词 - 按关键词分组关系重新组合 ArrayList result = new ArrayList(); foreach (DictionaryEntry g in groups) { foreach (string s in (g.Value as ArrayList)) { if (!result.Contains(s)) result.Add(s); } } #endregion //输出关键词组合,逗号分开 StringBuilder sb = new StringBuilder(); foreach (string s in result) sb.Append(s + ","); return sb.ToString(); } catch (Exception ex) { return keyWords; } } } //来源:C/S框架网(www.csframework.com) QQ:23404761 C# Code: /// <summary> /// 排序比较。被包含的词置后。比如:api,webapi 输出==> webapi,api, api被包含,排序放后面 /// </summary> public class SortComapre : IComparer { public int Compare(object x, object y) { if (x == null && y == null) return 0; if (x == null && y != null) return -1; if (x != null && y == null) return 1; x = x.ToString().ToLower(); y = y.ToString().ToLower(); if (x.ToString() == y.ToString()) return 0; else if (x.ToString().Contains(y.ToString())) return -1; else if (y.ToString().Contains(x.ToString())) return 1; else return 0; } } //来源:C/S框架网(www.csframework.com) QQ:23404761 参考文章: 模拟搜索引擎中文自动分词算法精华(CSFramework特别提供C#源码) C#模拟百度搜索长词自动语义匹配,使用分词算法抽取关键词 C#使用分词算法从文本字符串中抽取关键词模拟百度搜索 扫一扫加微信:
参考文档:
Google和Baidu搜索引擎对比(百度要加油啊) CS框架网支持多关键字搜索功能(仅向VIP用户开放) 热烈祝贺C/S框架网百度搜索关键字排名第一 C# 百度地图坐标获取详细地址 C# WebAPI控制器邮箱验证接口返回自动重定向HTML页面(原创) Winform开发平台百度搜索结果 原创:CodeHighlighter源代码格式化,代码缩进,关键词高亮着色(C#源码) C# CodeHighlighter生成的高亮着色HTML源码格式化 C#使用分词算法从文本字符串中抽取关键词模拟百度搜索|CSFramework.COM巨献 C#模拟百度搜索长词自动语义匹配,使用分词算法抽取关键词 模拟搜索引擎中文自动分词算法精华(CSFramework特别提供C#源码) C#推送链接URL到百度搜索资源平台提高收录量 CSFramework模拟百度搜索引擎自动语义分析分词算法(C#) 官网搜索引擎SEO,百度关键词SEO,搜索分词系统一体化解决方案 C#推送URL链接到百度搜索资源平台快速收录URL网址
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |