- 浏览: 930445 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (445)
- 备忘 (0)
- java基础 (28)
- jsp (15)
- css (4)
- javascript (30)
- struts (7)
- servlet (2)
- struts2 (7)
- jdbc (16)
- hibernate (22)
- ibatis (0)
- jpa (1)
- spring (17)
- spring定时任务 (8)
- 整合开发 (12)
- JavaArticle (0)
- php (6)
- velocity (2)
- mysql (19)
- sqlserver (52)
- oracle (23)
- lucene (49)
- ajax (13)
- dwr (5)
- JFreeChart (1)
- service (14)
- tools (18)
- c#基础 (20)
- 程序安全 (0)
- 学习网站 (1)
- 社会需求 (2)
- flash (1)
- 流媒体 (1)
- java_code (1)
- htmlparser (1)
- 速动画教程 (5)
- 设计模式 (1)
- xml操作 (2)
- uml操作 (4)
- 测试 (1)
- linux (8)
- 版本控制 (4)
- 服务器 (12)
- 安全 (6)
- 美工 (2)
最新评论
-
Zhang_amao:
我想问一下, 你用的lucene版本和highligher的版 ...
使用Lucene的Highlighter实现文件摘要的自动提取 -
wangmengfanwangzhi:
博主,你的QQ是什么啊?有关于lucene的问题想要请教啊~~ ...
Lucene下载及测试 -
cutesunshineriver:
讲得很好,理解起来很顺,对个人学习的帮助性很大,谢谢博主。
velocity入门一 -
libin2722:
我这里有一个任务调度,在晚上3点时候会自动将数据库中某表的数据 ...
Lucene-2.2.0 源代码阅读学习(16) -
greatwqs:
java -cp $JVM_ARGS $classpath ...
java的cp命令
使用Lucene自带的Highlighter就可以实现对原始文件摘要的提取工作。Highlighter类有一个getBestFragment方法,这个方法有多个重载的方法,其中,使用:
public final String getBestFragment(Analyzer analyzer, String fieldName,String text)
就可以提取摘要,它实现了从指定的原始文件中,提取检索关键字出现频率最高的一段文字作为摘要,默认情况下提取100个字符,同时加上自定义的高亮显示代码,又可实现关键字高亮显示。
测试程序如下所示:
package org.shirdrn.lucene.learn.digest;
import java.io.IOException;
import net.teamhot.lucene.ThesaurusAnalyzer;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
public class ExtractDigest {
private String indexPath = "H:\\index";
private Analyzer analyzer;
private IndexSearcher searcher;
private String prefixHTML = "<font color='red'>";
private String suffixHTML = "</font>";
public ExtractDigest(){
analyzer = new ThesaurusAnalyzer();
}
public void createIndex() throws IOException {
IndexWriter writer = new IndexWriter(indexPath,analyzer,true);
Document docA = new Document();
String fileTextA = "挖掘频繁项集的方法可以扩展到挖掘闭频繁项集(由它们容易导出频繁项集的集合)。这些方法结合了附加的优化技术,如项合并、子项剪枝和项跳过,以及模式树中产生的项集的有效子集检查。挖掘频繁项集和关联已经用不同的方法扩展,包括挖掘多层关联规则和多维关联规则。多层关联规则可以根据每个抽象层的最小支持度阈值如何定义,使用多种策略挖掘。如一致的支持度、递减的支持度和基于分组的支持度。冗余的多层(后代)关联规则可以删除,如果根据其对应的祖先规则,他们的支持度和置信度接近于期望值的话。挖掘多维关联规则的技术可以根据对量化属性的处理分为若干类。第一,量化属性可以根据预定义的概念分层静态离散化。数据立方体非常适合这种方法,因为数据立方体和量化属性都可以利用概念分层。第二,可以挖掘量化关联规则,其中量化属性根据分箱和/或聚类动态离散化,“邻近的”关联规则可以用聚类合并,产生更简洁、更有意义的规则。基于约束的规则挖掘允许用户通过提供元规则(即模式模板)和其他挖掘约束对规则搜索聚焦。这种挖掘推动了说明性数据挖掘查询语言和用户界面的使用,并对挖掘查询优化提出了巨大挑战。规则约束可以分为五类:反单调的、单调的、简洁的、可转变的和不可转变的。前四类约束可以在频繁项集挖掘中使用,使挖掘更有功效,更有效率。没有进一步分析或领域知识,关联规则不应该直接用于预测。它们不必指示因果关系。然而,对于进一步探查,它们是有帮助的切入点,使得它们成为理解数据的流行工具。流数据不断地在计算机系统中流进流出并且具有变化的更新速度,涉及数据流的应用非常广泛。大纲提供数据流的汇总,通常用来返回查询的近似解答。随机抽样、滑动窗口、直方图、多分辨率方法、梗概以及随机算法都是大纲的形式。倾斜时间框架模型允许数据以多个时间粒度存储,最近的时间记录在最细的粒度上,最远的时间记录在最粗的粒度上。流立方体可以存储压缩的数据,对时间维度使用倾斜时间框架模型,并且仅在一些关键的层上存储数据,关键层反映了分析人员最感兴趣的数据层,从而基于到关键层的“常用路径”进行部分物化。";
Field fieldA = new Field("contents", fileTextA, Field.Store.YES,Field.Index.TOKENIZED);
docA.add(fieldA);
Document docB = new Document();
String fileTextB = " 数据挖掘(Data Mining),又称为数据库中的知识发现(Knowledge Discovery in Database, KDD),就是从大量数据中获取有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程,简单的说,数据挖掘就是从大量数据中提取或“挖掘”知识。";
Field fieldB = new Field("contents", fileTextB, Field.Store.YES,Field.Index.TOKENIZED);
docB.add(fieldB);
writer.addDocument(docA);
writer.addDocument(docB);
writer.optimize();
writer.close();
}
public void search(String fieldName,String keyword) throws CorruptIndexException, IOException, ParseException{
searcher = new IndexSearcher(indexPath);
QueryParser queryParse = new QueryParser(fieldName, analyzer);
Query query = queryParse.parse(keyword);
Hits hits = searcher.search(query);
for(int i=0;i<hits.length();i++){
Document doc = hits.doc(i);
String text = doc.get(fieldName);
//System.out.println("||||||||||||"+text);
int htmlLength = prefixHTML.length()+suffixHTML.length();
System.out.println("高亮HTML的总长度为"+htmlLength);
SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter(prefixHTML, suffixHTML);
Highlighter highlighter = new Highlighter(simpleHTMLFormatter,new QueryScorer(query));
String highLightText = highlighter.getBestFragment(analyzer,"contents",text);
System.out.println("★高亮显示第 "+(i+1) +" 条检索结果如下所示:");
System.out.println(highLightText);
System.out.println("显示第 "+(i+1) +" 条检索结果摘要的长度为(含高亮HTML代码):"+highLightText.length());
}
searcher.close();
}
public static void main(String[] args) {
ExtractDigest ed = new ExtractDigest();
try {
ed.createIndex();
ed.search("contents", "根据 挖掘");
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
上面程序,检索“根据 挖掘”,首先使用QueryParser解析,提取Term为“根据”和“挖掘”,检索结果应该在提取的摘要中高亮显示这两个Term的text。
运行结果如下所示:
词库尚未被初始化,开始初始化词库.
初始化词库结束。用时:3985毫秒;
共添加195574个词语。
高亮HTML的总长度为25
★高亮显示第 1 条检索结果如下所示:
同的方法扩展,包括<font color='red'>挖掘</font>多层关联规则和多维关联规则。多层关联规则可以<font color='red'>根据</font>每个抽象层的最小支持度阈值如何定义,使用多种策略<font color='red'>挖掘</font>。如一致的支持度、递减的支持度和基于分组的支持度。冗余的多层(后代)关联规则
显示第 1 条检索结果摘要的长度为(含高亮HTML代码):174
高亮HTML的总长度为25
★高亮显示第 2 条检索结果如下所示:
数据<font color='red'>挖掘</font>(Data Mining),又称为数据库中的知识发现(Knowledge Discovery in Database, KDD),就是从大量数据中获取有效的、新颖的、潜在有用的、最终可理解
显示第 2 条检索结果摘要的长度为(含高亮HTML代码):124
上面程序中,在进行分析的时候,构造Field,同时对指定原始文本进行了存储,如下所示:
Field fieldA = new Field("contents", fileTextA, Field.Store.YES,Field.Index.TOKENIZED);
这个Field.Store.YES指定的存储,但是在实际中这样会浪费存储空间,而且造成索引管理的困难,所以在实际中是直接从数据库中查询出原始文件的文本内容,然后对这个文本进行处理,对其进行提取摘要的操作。也就是在上面String text = doc.get(fieldName);这一步,text的内容是根据Document的ID,从数据库中查询出来的,避免了IO操作,从而提高了检索速度,而且便利了索引文件的管理。
评论
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.lucene.analysis.Token.term()Ljava/lang/String;
我这里总是出错
发表评论
-
创建索引的时候出现的错误
2010-01-04 10:13 1711<OFMsg>251658517"1&q ... -
SQLServer2005获取大数据集时内存不足的解决办法
2009-02-12 10:59 2003今天在修改search的建立索引的程序的时候,发现了这个错误 ... -
Lucene倒排索引原理
2009-02-06 16:08 1157Lucene是一个高性能的java全文检索工具包,它使用的是倒 ... -
Lucene 2.2.0发布自带的HTMLParser的使用
2009-02-06 16:00 2550Lucene 2.2.0发行包中自带 ... -
Lucene关键字高亮显示
2009-02-06 15:53 2382在Lucene的org.apache.lucene.s ... -
Lucene-2.2.0 源代码阅读学习(42)
2009-02-06 15:46 1337关于Hits类。这个Hits类 ... -
Lucene-2.2.0 源代码阅读学习(41)
2009-02-06 15:40 1114当执行Hits htis = search(query);这一 ... -
Lucene-2.2.0 源代码阅读学习(40)
2009-02-06 15:34 1196关于Lucene检索结果的排序问题。 已经知道,Lucene的 ... -
Lucene-2.2.0 源代码阅读学习(39)
2009-02-06 15:31 1123关于Lucene得分的计算。 在IndexSearcher类中 ... -
Lucene-2.2.0 源代码阅读学习(38)
2009-02-06 15:13 1132关于QueryParser。 QueryParser是用来解析 ... -
Lucene-2.2.0 源代码阅读学习(37)
2009-02-06 15:06 1068关于MultiTermQuery查询。 这里研究继承自Mult ... -
Lucene-2.2.0 源代码阅读学习(36)
2009-02-06 15:05 1021关于MultiTermQuery查询。 这里研究FuzzyQu ... -
Lucene-2.2.0 源代码阅读学习(35)
2009-02-06 15:03 945于MultiPhraseQuery(多短语查询)。 Multi ... -
Lucene-2.2.0 源代码阅读学习(34)
2009-02-06 15:02 973关于PhraseQuery。 PhraseQuery查询是将多 ... -
Lucene-2.2.0 源代码阅读学习(33)
2009-02-06 15:01 999关于范围查询RangeQuery。 ... -
Lucene-2.2.0 源代码阅读学习(32)
2009-02-06 15:00 893关于SpanQuery(跨度搜索),它是Query的子类,但是 ... -
Lucene-2.2.0 源代码阅读学习(31)
2009-02-06 14:58 950关于前缀查询PrefixQuery(前缀查询)。 准备工作就是 ... -
Lucene-2.2.0 源代码阅读学习(30)
2009-02-06 14:57 757关于Query的学习。 主要使用TermQuery和Boole ... -
Lucene-2.2.0 源代码阅读学习(29)
2009-02-06 14:54 1161关于IndexSearcher检索器。 ... -
Lucene-2.2.0 源代码阅读学习(28)
2009-02-06 14:48 1289关于检索的核心IndexSearcher类。 IndexSea ...
相关推荐
在实际开发中,开发者可以使用Lucene Highlighter来增强搜索引擎的结果展示,例如,在新闻网站的搜索功能中,当用户输入关键词后,返回的新闻摘要将自动高亮显示关键词,使用户能够快速了解新闻内容。 总结,Lucene...
赠送Maven依赖信息文件:lucene-highlighter-6.6.0.pom; 包含翻译后的API文档:lucene-highlighter-6.6.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.lucene:lucene-highlighter:6.6.0; 标签:...
lucene-highlighter-3.5.0.jar lucene高亮包
而Highlighter模块则是Lucene提供的一种用于高亮搜索关键词的工具,它能够自动识别出文档中与查询匹配的部分,并对其进行特殊处理,如加粗、变色等,使用户在浏览结果时能够快速定位到相关关键词。 首先,我们要...
本篇文章主要探讨如何利用Lucene实现文件摘要的自动提取,并进行关键词高亮显示。这一过程涉及到Lucene的Highlighter组件,它专门用于突出显示搜索结果中的关键词。 首先,我们了解Lucene的Highlighter是如何工作的...
赠送Maven依赖信息文件:lucene-highlighter-7.3.1.pom; 包含翻译后的API文档:lucene-highlighter-7.3.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.lucene:lucene-highlighter:7.3.1;...
lucene-highlighter.jar lucene-highlighter.jar
lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的
而Lucene Highlighter作为其核心组件之一,是实现搜索结果高亮显示的关键工具。本文将深入探讨Lucene Highlighter 7.7.2版本的功能、原理以及如何在实际开发和测试中有效利用它。 一、Lucene Highlighter简介 ...
在Lucene的众多组件中,Highlighter模块扮演着重要角色,它能够帮助我们从搜索结果中提取出与查询关键词相关的片段,使用户能够快速理解文档的关键内容。本文将深入探讨Lucene 4.4.0版本中的Highlighter模块,了解其...
lucene-highlighter-4.3.0.jar
lucene-highlighter-2.4.0.jar lucene highlighter
赠送Maven依赖信息文件:lucene-highlighter-7.7.0.pom; 包含翻译后的API文档:lucene-highlighter-7.7.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.lucene:lucene-highlighter:7.7.0; 标签:...
赠送Maven依赖信息文件:lucene-highlighter-7.2.1.pom; 包含翻译后的API文档:lucene-highlighter-7.2.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.lucene:lucene-highlighter:7.2.1; 标签:...
赠送Maven依赖信息文件:lucene-highlighter-7.3.1.pom; 包含翻译后的API文档:lucene-highlighter-7.3.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.lucene:lucene-highlighter:7.3.1; 标签:...
Lucene是一个高度可定制的全文搜索引擎库,广泛应用于各种Java应用程序中,以实现强大的搜索功能。在3.6.2版本中,Lucene提供了一整套功能,包括索引构建、查询解析、文档检索以及优化等。而Highlighter组件,则是...
lucene-highlighter-2.9.0.jar
lucene-highlighter-3.0.1.jar 还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。
实现中文分词的jar包:lucene-highlighter-3.6.1.jar
赠送Maven依赖信息文件:lucene-highlighter-7.7.0.pom; 包含翻译后的API文档:lucene-highlighter-7.7.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.apache.lucene:lucene-highlighter:7.7.0;...