- 浏览: 311950 次
- 性别:
文章分类
最新评论
-
u010503822:
不懂这个是否是你需要的// map转Json数据 json转 ...
gson使用感受 -
亚飞正传:
您好,你以前是在PChome工作的?
<![CDATA[谈谈PHP为什么不支持重载和多态]]> -
亚飞正传:
您好,你以前是在PChome工作的?
<![CDATA[谈谈PHP为什么不支持重载和多态]]> -
wangluo19:
对T解释的很清楚,以前看到java源码中的T就晕了,现在好了明 ...
JAVA学习笔记之泛型接口 -
huangfoxAgain:
不错!!!
JAVA学习笔记之泛型接口
网上有很多高亮的类,但我觉得太负责了(也许他们觉得这样性能更高),我写了一个很简单采用je分词+正则解决高亮问题,实际使用下来还是不错的:
java 代码
- import java.util.Iterator;
- import java.util.List;
- /**
- * @author edwardpro
- *
- */
- public class HighlightProcess {
- /**
- *
- */
- private String str;
- private String key;
- private static final String HIGH_LIGHT = "<span class=\"red\">$1</span>";
- public HighlightProcess(String str, String key) {
- // TODO Auto-generated constructor stub
- this.str = str;
- this.key = key;
- }
- /**
- * @return the str
- */
- public String getStr() {
- return str;
- }
- /**
- * @param str
- * the str to set
- */
- public void setStr(String str) {
- this.str = str;
- }
- public String getResult() {
- List<String> list = WordsManager.splitStrToList(key);
- for (Iterator it = list.iterator(); it.hasNext();) {
- String target = (String) it.next();
- this.str = RegxTools.regxReplace(this.str, target, HIGH_LIGHT);
- }
- return this.str;
- }
- }
分词这边使用了一个工厂方法,用来装载词库的,返回的是JE分词对象:
java 代码
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import java.util.StringTokenizer;
- import jeasy.analysis.MMAnalyzer;
- import org.apache.log4j.Logger;
- public class WordsManager {
- private static final Logger logger = Logger.getLogger(WordsManager.class);
- private static MMAnalyzer mmanalyzer;
- private static final String DEF_SPT = "<>";
- static {
- init();
- }
- private static void init() {
- reload();
- mmanalyzer = new MMAnalyzer();
- }
- public static void reload() {
- if (AppInit.getScb().getExtDic() != null
- && !AppInit.getScb().getExtDic().equalsIgnoreCase("")) {
- File dir = new File(AppInit.getScb().getExtDic());
- File[] dics = dir.listFiles();
- // add dict file
- for (int i = 0; i < dics.length; i++) {
- try {
- MMAnalyzer.addDictionary(new FileReader(dics[i]));
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- logger.error("Read File Error", e);
- }
- }
- }
- }
- /**
- * @return the mmanalyzer
- */
- public static MMAnalyzer getMmanalyzer() {
- return mmanalyzer;
- }
- /**
- * @param mmanalyzer
- * the mmanalyzer to set
- */
- public static void setMmanalyzer(MMAnalyzer mmanalyzer) {
- WordsManager.mmanalyzer = mmanalyzer;
- }
- public static String[] splitStrToArray(String source) {
- try {
- String target = mmanalyzer.segment(source, DEF_SPT);
- String[] ts = target.split(DEF_SPT);
- return ts;
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return null;
- }
- public static List<String> splitStrToList(String source) {
- List<String> ret = new ArrayList<String>();
- try {
- String target = mmanalyzer.segment(source, DEF_SPT);
- StringTokenizer st = new StringTokenizer(target, DEF_SPT);
- for (; st.hasMoreTokens();) {
- ret.add(st.nextToken());
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- logger.error("segment error", e);
- }
- return ret;
- }
- public static void removeTag(String content) {
- MMAnalyzer.removeWord(content);
- }
- }
正则方法:
java 代码
- String reg="<span class='red'>$1</span>";
- public static String regxReplace(String str, String key, String rep) {
- Pattern p = Pattern.compile("(" + key + ")", Pattern.CASE_INSENSITIVE);
- Matcher m = p.matcher(str);
- return m.replaceAll(rep);
- }
原理很简单,利用分词分开,然后用这则一个个匹配掉目标中的关键字,由于实际中大部分都是替换标题和200字的描述所以并没有使用流方法,下次有时间改用流或者stringbuffer或者其他更接近分词的方法来做下看看,有什么问题,欢迎大家拍砖
评论
1 楼
gw_noah
2008-01-08
[/u][/color][color=orange][/color][color=red][color=greens][/color] [u]
引用
[b][/b][i][/i]发表评论
-
Thread In Ruby
2011-11-02 00:24 2624今日终于把原来留下来的ios notify给整了,由于用户数据 ... -
thrift-1-2-3
2011-10-07 20:24 4052国庆前后玩了一下thrift,下面是一些入门级的体会和心得: ... -
lexer html解析一个js过滤的改进
2011-09-22 11:07 1317问题描述,使用htmlparser的lexer解析器进行页面解 ... -
在linux下删除大文件的好方法
2011-09-16 09:36 2122上次在linux书上看到的,我们平时删除日志可能会用: ... -
thrift 在ubuntu 11.04下的编译过程一两点心得
2011-09-14 21:46 2972今天需要使用thrift于是随手下载下来了,下载过程很简单,但 ... -
StringBuilder和String中的subString方法的细微差别
2011-02-23 20:19 7724昨天改了一个很小的地方,但是在线上跑的时候突然感觉内存消耗差别 ... -
用枚举来作为配置
2010-04-20 21:39 1313一个简单的需求需要自动抓取一些http request参数到上 ... -
装箱操作需注意
2009-10-24 15:25 1115近期在工作里发现一个代码bug,主要是装箱上的问题,我们知道在 ... -
在JTIDY中对于inline标签的这行问题
2009-09-24 16:40 1319在一个项目中需要使用jtidy格式化页面,一开始感觉不错,但是 ... -
JAVA7的不兼容表现
2009-09-06 17:49 10247今天有时间玩一下JAVA7,却发现有点小问题: Caused ... -
用SPRING AOP实现主动缓存
2009-06-21 13:05 1790缓存的实现最简单的模 ... -
gson使用感受
2009-06-13 08:27 4740google的东西向来以简洁唯美gson也是如此: ... -
数据对象化的思考
2009-06-13 07:51 1289以前曾经想利用json作为字段数据存储格式,这样当我们扩展表属 ... -
用json作为配置存储介质的讨论
2009-04-02 20:57 1333为什么会考虑json: 有没 ... -
JAVA学习笔记之泛型接口
2009-02-02 22:58 11084应该是我很久没有好好学技术了,有时候想用的时候却发现不会写,比 ... -
lucene中的filter器群组及其缓存大盘点
2008-07-04 02:13 3349lucene中的filter其实并不起眼,大家对其对性能的影响 ... -
lucene的前端集群思路
2008-04-17 10:52 4985你的搜索可以集群吗(这里单指前端应用集群)?这是一个突然发来的 ... -
lunece 用的高亮类
2007-08-10 10:12 1458网上有很多高亮的类,但我觉得太负责了(也许他们觉得这样性能更高 ... -
使用form dom要注意的小问题
2007-08-08 16:43 1446几天调一个js遇到灵异问题:var s=$('sform'); ... -
ubuntu 7.04 下配置 ruby环境
2007-07-01 16:26 1745其实这个环境配置很容易的应该 apt-get就可以得到了,但事 ...
相关推荐
通过上述方法,不仅能够保持Lucene高亮显示功能的准确性,还能在处理中文分词时显著提升系统性能,特别是对于大数据量和高并发场景下的应用,这种优化显得尤为重要。Lucene的TermVector特性,配合合理的代码实现,为...
lucene3.5高亮
**SpringBoot+Lucene搜索结果高亮显示** 在现代Web应用程序中,强大的全文搜索引擎功能是不可或缺的,而Apache Lucene正是这样一个高效的、可扩展的开源全文检索库。在这个SpringBoot+Lucene的Demo中,我们将深入...
### Lucene高亮显示详解 在全文搜索领域,Apache Lucene是业界标准的搜索引擎库,提供了强大的文本搜索功能。而在搜索结果中实现关键词高亮显示,可以极大地提升用户体验,让用户快速定位到搜索词所在的位置。本文...
Lucene 提供了 `Highlighter` 工具类,用于高亮显示搜索结果中的匹配部分。以下步骤展示了如何使用高亮功能: 1. 创建一个 `Analyzer` 对象,用于分析文本。 2. 使用 `QueryParser` 解析查询字符串,得到 `Query` ...
lucene-highlighter-3.5.0.jar lucene高亮包
本话题聚焦于“Lucene多字段查询”和“文字高亮显示”,这两个特性在信息检索和数据挖掘中具有广泛应用。 首先,让我们深入理解“Lucene多字段查询”。在信息检索系统中,用户可能希望根据多个字段来过滤和排序结果...
总之,Lucene+HighLighter的组合提供了强大的搜索和高亮功能,通过理解其工作原理和配置细节,开发者可以在自己的应用中实现高效的全文搜索并呈现美观的高亮结果。无论是简单的个人项目还是大型企业级应用,Lucene都...
2. **Highlighter类**:通常,高亮器类会接受搜索查询和文档内容作为输入,然后在文档中找到匹配的查询术语,并用特定的样式(如颜色、粗体)标出这些术语。 3. **分词器集成**:为了正确地高亮显示,高亮器需要...
确保你的项目已经正确配置了Lucene库,并且`HighLighterUtils.java`中引用的所有类和方法都可用。 总的来说,Java和Lucene的结合为实现HTML文本的高亮显示提供了强大的工具。通过理解这个过程和`HighLighterUtils....
使用Highlighter类,我们可以获取到每个匹配文档的高亮片段。首先,创建一个QueryScorer,然后使用SimpleHTMLFormatter设置高亮样式,最后通过Highlighter.getBestFragments方法获取高亮后的文本。 7. **性能优化**...
**Lucene 概述** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了一个简单但功能强大的 API...通过参考这个例子,开发者可以更好地掌握 Lucene 的使用,为自己的项目构建高效的全文搜索引擎。
本文将深入探讨Lucene.NET如何进行中文分词以及高亮显示的实现。 ### 1. 中文分词 中文分词是将连续的汉字序列切分成具有语义的词语的过程,是自然语言处理(NLP)中的基础步骤。在Lucene.NET中,为了支持中文分词...
- **搜索结果高亮**: 为了提高用户阅读体验,Lucene 高亮包提供了搜索关键词在文档中的高亮显示功能,使用户能快速识别出匹配的关键词。 - **自定义样式**: 开发者可以自定义高亮的样式,如使用不同的颜色或者背景...
《Lucene5学习之Highlighter关键字高亮》 在信息技术领域,搜索引擎的使用已经变得无处不在,而其中的关键技术之一就是如何有效地突出显示搜索结果中的关键字,这就是我们今天要探讨的主题——Lucene5中的...
- **高亮显示**:Highlighter 类可以将查询结果中的匹配片段高亮显示。 - **自定义分析**:可以通过继承 Analyzer 类来定制自己的分词规则。 - **近实时搜索**:IndexWriter 提供的 near-real-time (NRT) 搜索...
描述中的“这是我自已写的Lucene与Mysql结合的例子”,说明作者创建了一个实际项目,将Lucene的功能与MySQL数据库存储的数据进行了集成。"只是个简单的示例"暗示这可能是初级或中级难度的教程,适合初学者或有一定...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
《深入解析Lucene高亮显示源码:剖析`lucene-highlighter-2.2.0-src.zip`》 Lucene,作为一个开源全文检索库,以其高效、灵活的特点在信息检索领域广泛应用。在处理搜索结果时,为了提升用户体验,通常会采用高亮...
在这个“Lucene3.0增删改查和关键字高亮实例”项目中,我们将深入理解如何利用Lucene 3.0版本进行索引构建、文档的增删改查操作,并学习关键字高亮显示的实现方法。 首先,我们要了解**创建索引**的基本流程。在...