`
shimo
  • 浏览: 4916 次
  • 性别: Icon_minigender_1
  • 来自: 河南
最近访客 更多访客>>
社区版块
存档分类
最新评论

高亮显示

阅读更多

偶见有人谈起高亮显示的或这或那得错误。感觉自写个也挺简单的,可控制性强。

 

贴个原创的,用于“眉湖通”搜索。

/**
 * 
 */
package util;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;

import org.wltea.analyzer.IKSegmentation;
import org.wltea.analyzer.Lexeme;

/**
 * 
 * 高亮,使用IK分词
 * @author zzu.nlp.liguohua
 *
 */
public class highLighter {
	
	private String[] getSplitStr(String s, String regx){
		return s.split(regx);
	}	
	
	/**
	 * 
	 * @param searchWord 搜索的关键词(需要高亮显示的原始字串) 
	 * @return 返回searchWord经过分词后的词组,即一组需要高亮显示的子串
	 */
	public static List<String> getKeywords(String searchWord){
		StringReader sr=new StringReader(searchWord);
		IKSegmentation iks=new IKSegmentation(sr);
		
		//向右最大匹配
		Comparator<String> comp=new Comparator<String>(){
			public int compare(String o1, String o2) {				
				return o2.length()-o1.length();
			}
		};
		
		Lexeme l;
		HashSet<String> hs=new HashSet<String>(5);
		try {
			while((l=iks.next())!=null){
				hs.add(l.getLexemeText());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		List<String> al=new ArrayList<String>();
		al.addAll(hs);
		Collections.sort(al,comp);
		
		return al;
	}

	/**
	 * 
	 * @param text 需要进行高亮的文本
	 * @param al 高亮显示的关键词组
	 * @return 返回处理的结果
	 */
	public static String getHiLightContent(String text, List<String> al){
		//System.out.println("需要高亮的关键词:"+al.toString());
		
		StringBuilder rt=new StringBuilder();
		String tp="";
		int tpI=0,k=0;
		boolean bl=false;
		//标识第一次命中高亮显示的位置
		boolean first=false; 
		int ftIdx=0;
		
		for(int i=0;i<text.length();){
			for(int j=0;j<al.size();j++){
				tpI=i;
				tp=al.get(j);
				for(k=0;k<tp.length() && tpI<text.length();k++){
					if(text.charAt(tpI++)==tp.charAt(k));
					else break;
				}
				if(k==tp.length()){
					rt.append("<font color=#c60a00>").append(text.substring(i,tpI)).append("</font>");
					bl=true;
					if(!first){
						first=true;
						ftIdx=i;
					}
					break;
				}
			}
			if(!bl) rt.append(text.substring(i,tpI));
			bl=false;
			i=tpI;
		}
		
		//return rt.toString();
		// 摘要截长
		
		tp=rt.toString();
		tp=tp.substring(tp.lastIndexOf('_', ftIdx)+1);
		//tp=tp.replaceAll("\n", "_");
		
		if(tp.length()<300) return tp;
    	else return tp.substring(0,300);
    	
	}

	public static String getHiLightContent(String text, String searchWord){
		return getHiLightContent(text, getKeywords(searchWord));
	}
	
}
 

 

0
1
分享到:
评论

相关推荐

    AD20快捷高亮显示元器件与网络.docx

    ### AD20中快捷高亮显示元器件与网络的知识点详解 #### 一、AD20简介 AD20(Altium Designer 20)是一款先进的电子设计自动化(EDA)软件,广泛应用于印刷电路板(PCB)设计领域。它为用户提供了从原理图设计到PCB...

    GridView高亮显示某行

    ### GridView高亮显示某行 在Web开发中,特别是使用ASP.NET进行开发时,GridView控件是用于展示数据的一种常用工具。它可以帮助开发者快速地创建一个格式化的表格,并且可以非常方便地添加分页、排序等功能。而在...

    完整版高亮显示(源代码).rar

    【标题】"完整版高亮显示(源代码).rar" 暗示这是一个包含有源代码文件的压缩包,其中的源代码可能已经被格式化并设置了高亮显示,便于阅读和理解。高亮显示是编程领域中常用的一种技术,通过不同的颜色和样式突出...

    搜索内容高亮显示

    在IT领域,搜索内容高亮显示是一个常见的功能,它增强了用户体验,使得用户在大量文本或数据中快速定位和识别搜索关键词。本示例主要探讨如何实现这个功能,以"搜索栏输入文字后,在内容中高亮显示搜索文字demo"为例...

    react中实现搜索结果中关键词高亮显示

    在React中实现搜索结果中关键词高亮显示的核心知识点可以分为几个部分: 1. 使用React组件的状态(state)和属性(props)进行交互。 2. 利用JavaScript的filter函数对数据进行过滤。 3. 使用正则表达式(RegExp)...

    vs2010选中全部高亮显示插件

    "vs2010选中全部高亮显示插件"便是其中一种,它为VS2010提供了选中代码高亮显示的功能。 通常,VS2010的基础版本并不直接支持选中代码块后自动高亮显示相同内容的功能。用户在默认设置下,通过"工具"菜单下的"选项...

    代码高亮显示javascript插件

    在网页开发中,为了使代码片段更易于阅读和理解,我们常常使用代码高亮显示插件。"代码高亮显示JavaScript插件"是专门用于在Web页面中美化和突出显示JavaScript代码的工具,它能够将原始的黑白文本代码转换为具有...

    js代码高亮显示 JavaScript代码高亮 jsp

    JavaScript代码高亮显示是网页开发中一个常见的需求,特别是在展示示例代码或编程教程时,高亮代码可以使代码更易读、更具有可读性。本文将深入探讨JavaScript代码高亮的相关知识点,以及如何在JSP(JavaServer ...

    泛微E9流程修改字段高亮显示

    ### 泛微E9流程修改字段高亮显示 #### 一、开发背景 在实际的企业管理过程中,工作流程中的表单填写与修改是一项常见的任务。为了确保数据的准确性和完整性,许多企业会采用流程管理系统来追踪和管理这些数据的...

    Pycharm 代码高亮推荐配色(支持点击相同词、变量的高亮显示)

    总之,PyCharm的代码高亮配色和相同元素高亮显示是提升编程体验的重要组成部分。通过导入预设的设置文件,用户可以轻松拥有专业且舒适的开发环境,同时也能更好地理解和维护自己的代码。记得定期备份自己的设置,以...

    C++代码高亮显示

    在编程世界中,代码高亮显示是一项非常实用的功能,它能帮助程序员更高效地阅读和理解代码。在本文中,我们将深入探讨C++语言在Visual Studio 2010(VS2010)中的代码高亮显示特性,以及如何在该环境中启用和使用这...

    在RichTextBox中实现关键字高亮显示

    本文将详细讲解如何在C#的WinForms环境中,利用RichTextBox控件实现关键字高亮显示。 首先,我们需要了解`RichTextBox`的基本操作。`RichTextBox`控件提供了丰富的文本格式化功能,包括字体、颜色、样式等设置。在...

    ubuntu vim 高亮显示

    "ubuntu vim 高亮显示" Vim 编辑器是 Linux/Unix 环境下开源的最重要的编辑器之一,它以其强大的功能和可定制能力,成为众多开发者所喜爱的编辑器。为了提高编辑效率,需要对 Vim 进行配置。 标题: ubuntu vim ...

    visual studio 2010 高亮显示选中单词

    《Visual Studio 2010 中的单词高亮显示功能详解》 Visual Studio 2010是一款由Microsoft开发的强大集成开发环境(IDE),广泛应用于软件开发领域。在编程过程中,快速定位和识别代码中的特定单词是提高工作效率的...

    VS2010高亮显示选中的变量的插件

    标题中的“VS2010高亮显示选中的变量的插件”指的是在Visual Studio 2010这款集成开发环境中使用的一种增强功能插件。这个插件的主要目的是提高程序员在编写和阅读代码时的效率,通过高亮显示当前选中的变量,使得...

    y内容查找高亮显示代码.rar_telephoneot1_y内容查找高亮显示代码

    "y内容查找高亮显示代码.rar_telephoneot1_y内容查找高亮显示代码"这个压缩包中的资源,提供了一种方法来实现jQuery驱动的内容查找和高亮显示功能,这与Word文档中的文本查找和高亮功能类似。在网页应用中,这种功能...

    关键字高亮显示、文本解析

    关键字高亮显示作为文本处理的一项重要技术,其核心价值在于帮助用户更高效地识别和定位关键信息。本文将深入探讨关键字高亮显示技术的原理、实现方法、用户体验考量以及在现代软件开发中的应用。 关键字高亮显示...

    页面sql编辑高亮显示

    在网页开发中,为了提升用户体验和增强代码可读性,SQL查询语句的高亮显示是必不可少的功能。标题“页面SQL编辑高亮显示”所涉及的技术核心在于如何在Web页面上实现一个具备实时高亮效果的SQL编辑输入框。描述中提到...

    lucene 高亮显示. java

    标题与描述概述的知识点主要集中在Lucene的高亮显示功能,尤其是在处理中文分词时的性能优化策略。以下是对这些知识点的详细展开: ### Lucene的高亮显示 Lucene是一款高性能、全功能的文本搜索引擎库,其高亮显示...

    使用activiti工作流引擎显示流程图时高亮显示流程图中已执行节点和已执行路径方法源代码

    在使用Activiti时,为了更好地理解流程状态和追踪执行过程,开发者往往需要实现流程图的高亮显示功能,突出已执行的节点和路径。本篇文章将深入探讨如何实现这一功能。 首先,我们要了解Activiti的基本概念。...

Global site tag (gtag.js) - Google Analytics