- 浏览: 134805 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
shuzheng5201314:
如果不管这样的错误有影响吗?你这样貌似可行!
Proxool连接池在reload web容器时出现HouseKeeper的空指针异常 -
SpreadDiaries:
...
[转]常见数据库字段类型与java.sql.Types的对应 -
kevinhrw:
<bean
class="org.spri ...
用BeanNameAutoProxyCreator自动创建事务代理 -
hilliate:
第一步,把冰箱门打开第二步,把大象装进去第三步,把冰箱门关上呵 ...
Struts2中实现自定义标签很简单,主要分为3步:
1. 使用高亮器。
2. 高亮原理?
例如,你要关键字红色?其实就是在匹配出的关键字加上一个前缀后缀。
例如<font color="red">全文检索</font>
3. 如何构建高亮器?
/* * 在这之前实际上要检索结果 Document 对象已经构建出来了。也就是说检索已经出来结果了。 * 但是出来的结果并没有加上高亮效果,也就是前缀后缀还没有加上去。 * 于是 Highlighter 要在查询出的结果数据再一次分词,然后检索关键字,再给关键字前后附上指定的前缀后缀 * -- 这些信息在构建 Highlighter 时必须提供 * getBestFragment 方法返回其内部加完高亮后的文本。然后程序员手动替换掉 Docoument 中原来的值。 * 我在想能不能弄一个 HighlightFormater 出来,接收一个 Document 参数,高亮后再返回出来不省事么? * 或者提供一个重装后支持高亮的 Document 对象。 */ String text = highlighter.getBestFragment(analyzer, "content", doc.get("content")); if (text != null) { doc.getField("content").setValue(text); // 使用高亮后的文本替换原始内容 }
4. 使用高亮器进行高亮操作
这个 API 设计得觉得不怎么好,比较绕。暴露出来了一些程序员比较容易犯错的东西。
/* * 在这之前实际上要检索结果 Document 对象已经构建出来了。也就是说检索已经出来结果了。 * 但是出来的结果并没有加上高亮效果,也就是前缀后缀还没有加上去。 * 于是 Highlighter 要在查询出的结果数据再一次分词,然后检索关键字,再给关键字前后附上指定的前缀后缀 * -- 这些信息在构建 Highlighter 时必须提供 * getBestFragment 方法返回其内部加完高亮后的文本。然后程序员手动替换掉 Docoument 中原来的值。 * 我在想能不能弄一个 HighlightFormater 出来,接收一个 Document 参数,高亮后再返回出来不省事么? * 或者提供一个重装后支持高亮的 Document 对象。 */ String text = highlighter.getBestFragment(analyzer, "content", doc.get("content")); if (text != null) { doc.getField("content").setValue(text); // 使用高亮后的文本替换原始内容 }
5 测试代码
public class HighlighterTest { /* IKAnalyzer 是一个支持Lucene3.0 API 的中文分词器 */ private static Analyzer analyzer = new IKAnalyzer(); /** * 搜索的数据是使用的 ArticleIndexDaoTest 中的保存操作的数据。 * 因此,代码中出现的 "content" 实际上是保存的时候,给 Document 添加的一个 Field * 保存代码在《Lucene-索引库的CRUD API 演示》中有 */ @Test public void test() throws Exception { // 搜索条件 String queryString = "lucene"; // ================================================================= // a, 把搜索字符串转为Query对象 QueryParser queryParser = new QueryParser(Version.LUCENE_30, "content", analyzer); Query query = queryParser.parse(queryString); // b, 搜索,得到中间结果 IndexSearcher indexSearcher = new IndexSearcher(Configuration.getDirectory()); TopDocs topDocs = indexSearcher.search(query, 100); // 返回前100条结果 ScoreDoc[] scoreDocs = topDocs.scoreDocs; // 前n条记录的信息 // -------------------------------------------- // 一、创建并配置高亮器 Formatter formater = new SimpleHTMLFormatter("<font color='red'>", "</font>"); // 高亮效果,默认为<B>与</B> Scorer scorer = new QueryScorer(query); // 查询条件 Highlighter highlighter = new Highlighter(formater, scorer); highlighter.setTextFragmenter(new SimpleFragmenter(20)); // 摘要的大小,默认为100个字符 // -------------------------------------------- // c, 处理结果 List<Article> list = new ArrayList<Article>(); for (int i = 0; i < scoreDocs.length; i++) { ScoreDoc scoreDoc = scoreDocs[i]; // 1,获得一个文档的信息 Document doc = indexSearcher.doc(scoreDoc.doc); // 2,根据文档编号取出相应的Document // -------------------------------------------- // 二、使用高亮器进行高亮操作 // 返回高亮后的(关键词出现次数最多的地方的)一段文本,如果当前高亮的属性中没有出搜索的关键词,则返回null String text = highlighter.getBestFragment(analyzer, "content", doc.get("content")); if (text != null) { doc.getField("content").setValue(text); // 使用高亮后的文本替换原始内容 } // -------------------------------------------- list.add(ArticleDocumentUtils.document2Article(doc));// 3,把Document转为Article } // ================================================================= // 显示结果 for (Article article : list) { System.out.println("-------> id = " + article.getId()); System.out.println("title = " + article.getTitle()); System.out.println("content = " + article.getContent()); } } }
发表评论
-
truelicense使用手册
2015-04-25 09:47 39191.生成truelicense的maven项目 mvn a ... -
Java实现ftp上传文件、文件夹
2012-04-06 11:06 841import java.io.File; import ... -
Lucene入门级笔记六 -- 优化 .
2011-10-24 22:54 0Lucene 优化 1. 让程序中只有一个 Inde ... -
Lucene入门级笔记五 -- 分词器,使用中文分词器,扩展词库,停用词 .
2011-10-24 22:53 14061. 常见的中文分词器有 ... -
Lucene(全文检索技术)入门级笔记整之一——第一个Lucene程序 .
2011-10-24 22:50 1241Lucene(全文检索技术)入门级笔记整之一——第一个Lu ... -
Lucene入门级笔记二 -- 索引库的CRUD API 演示 .
2011-10-24 22:44 1080Lucene 对索引库的增删改查操作的 API 演示 没什么 ... -
Lucene入门级笔记四 -- 对检索结果排序 .
2011-10-24 22:40 1553对检索结果排序 1. 某些场合需要我们自定义搜索结果的 ... -
java获取各种日期
2011-07-14 16:47 828package com.cjy.test; impo ... -
tomcat无法运行两个struts2项目。解决方式
2011-06-15 14:22 1028提示异常: 严重: Exception starting f ... -
APACHE 2.2.9+TOMCAT6.0.18配置负载均衡
2010-10-21 23:14 1462目标: 使用 apache 和 tomcat 配置一个可以应 ... -
Request用法
2010-09-08 11:13 1182Request [JSP] JSP中的隐藏对象 -- ... -
div错位/解决IE6、IE7、IE8样式不兼容问题
2010-01-13 10:07 2299IE6里DIV错位的问题 ... -
主题:J2EE常用工具类汇总
2009-10-18 18:24 853J2EE常用工具类汇总 J2EE ... -
dreamweaver cs4 许可证过期的解决办法
2009-09-24 13:43 1854dreamweaver cs4 许可证过期的解决办法 200 ... -
lucene四种索引方式详解
2009-09-16 21:45 11711。今天研究了一下lucene,对于初学者来说,有一个地方以前 ... -
时间处理类
2009-07-24 10:14 767/** * 时间处理类 */ ... -
apache POI 读取 Word
2009-07-24 10:13 1314import java.io.File; import ... -
apache POI 读取 Excel
2009-07-24 10:12 1225import java.io.File; import ja ... -
自动得到汉语拼音
2009-07-24 10:11 960import java.util.Iterator; imp ... -
java MD5 加密
2009-07-24 10:09 776/** * java.security包中的Messa ...
相关推荐
赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
赠送jar包:lucene-analyzers-common-6.6.0.jar; 赠送原API文档:lucene-analyzers-common-6.6.0-javadoc.jar; 赠送源代码:lucene-analyzers-common-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...
赠送jar包:lucene-backward-codecs-7.3.1.jar; 赠送原API文档:lucene-backward-codecs-7.3.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-spatial-extras-7.3.1.jar; 赠送原API文档:lucene-spatial-extras-7.3.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
赠送jar包:lucene-spatial-extras-7.2.1.jar; 赠送原API文档:lucene-spatial-extras-7.2.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
赠送jar包:lucene-spatial-extras-6.6.0.jar; 赠送原API文档:lucene-spatial-extras-6.6.0-javadoc.jar; 赠送源代码:lucene-spatial-extras-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...
赠送jar包:lucene-backward-codecs-7.2.1.jar; 赠送原API文档:lucene-backward-codecs-7.2.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-backward-codecs-6.6.0.jar; 赠送原API文档:lucene-backward-codecs-6.6.0-javadoc.jar; 赠送源代码:lucene-backward-codecs-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-backward-codecs-6.6.0.jar; 赠送原API文档:lucene-backward-codecs-6.6.0-javadoc.jar; 赠送源代码:lucene-backward-codecs-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene...
赠送jar包:lucene-suggest-6.6.0.jar; 赠送原API文档:lucene-suggest-6.6.0-javadoc.jar; 赠送源代码:lucene-suggest-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-suggest-6.6.0.pom; 包含翻译后的API...
赠送jar包:lucene-highlighter-6.6.0.jar; 赠送原API文档:lucene-highlighter-6.6.0-javadoc.jar; 赠送源代码:lucene-highlighter-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-highlighter-6.6.0.pom;...
赠送jar包:lucene-core-6.6.0.jar; 赠送原API文档:lucene-core-6.6.0-javadoc.jar; 赠送源代码:lucene-core-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-6.6.0.pom; 包含翻译后的API文档:lucene...
赠送jar包:lucene-sandbox-7.2.1.jar; 赠送原API文档:lucene-sandbox-7.2.1-javadoc.jar; 赠送源代码:lucene-sandbox-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-sandbox-7.2.1.pom; 包含翻译后的API...
赠送jar包:lucene-memory-6.6.0.jar; 赠送原API文档:lucene-memory-6.6.0-javadoc.jar; 赠送源代码:lucene-memory-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-memory-6.6.0.pom; 包含翻译后的API文档...
赠送jar包:lucene-suggest-7.7.0.jar; 赠送原API文档:lucene-suggest-7.7.0-javadoc.jar; 赠送源代码:lucene-suggest-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-suggest-7.7.0.pom; 包含翻译后的API...
lucene-analyzers-common-4.4.0 lucene jar
赠送jar包:lucene-spatial-6.6.0.jar; 赠送原API文档:lucene-spatial-6.6.0-javadoc.jar; 赠送源代码:lucene-spatial-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-6.6.0.pom; 包含翻译后的API...