`

lucene中文分词

阅读更多

1 、问题的来源

增加分词以后结果的准确度提高了,但是用户反映返回结果的速度很慢。原因是, Lucene 做每一篇文档的相关关键词的高亮显示时,在运行时执行了很多遍的分词操作。这样降低了性能。

2 、解决方法

在 Lucene1.4.3 版本中的一个新功能可以解决这个问题。 Term Vector 现在支持保存 Token.getPositionIncrement() 和 Token.startOffset() 以及 Token.endOffset() 信息。利用 Lucene 中新增加的 Token 信息的保存结果以后,就不需要为了高亮显示而在运行时解析每篇文档。通过 Field 方法控制是否保存该信息。修改 HighlighterTest.java 的代码如下:

// 增加文档时保存 Term 位置信息。

private void addDoc(IndexWriter writer, String text) throws IOException

{

Document d = new Document();

//Field f = new Field(FIELD_NAME, text, true, true, true);

Field f = new Field(FIELD_NAME, text ,

Field.Store.YES, Field.Index.TOKENIZED,

Field.TermVector.WITH_POSITIONS_OFFSETS);

d.add(f);

writer.addDocument(d);

}

// 利用 Term 位置信息节省 Highlight 时间。

void doStandardHighlights() throws Exception

{

Highlighter highlighter =new Highlighter(this,new QueryScorer(query));

highlighter.setTextFragmenter(new SimpleFragmenter(20));

for (int i = 0; i < hits.length(); i++)

{

String text = hits.doc(i).get(FIELD_NAME);

int maxNumFragmentsRequired = 2;

String fragmentSeparator = "...";

TermPositionVector tpv = (TermPositionVector)reader.getTermFreqVector(hits.id(i),FIELD_NAME);

// 如果没有 stop words 去除还可以改成 TokenSources.getTokenStream(tpv,true); 进一步提速。

TokenStream tokenStream=TokenSources.getTokenStream(tpv);

//analyzer.tokenStream(FIELD_NAME,new StringReader(text));

String result =

highlighter.getBestFragments(

tokenStream,

text,

maxNumFragmentsRequired,

fragmentSeparator);

System.out.println("\t" + result);

}

}

最后把 highlight 包中的一个额外的判断去掉。对于中文来说没有明显的单词界限,所以下面这个判断是错误的:

tokenGroup.isDistinct(token)

这样中文分词就不会影响到查询速度了。

来源:http://www.lucene.com.cn/fc.htm

分享到:
评论
1 楼 liheqian_0083 2007-12-26  
HOHO,收监

相关推荐

    Lucene中文分词器包

    来自“猎图网 www.richmap.cn”基于IKAnalyzer分词算法的准商业化Lucene中文分词器。 1. 正向全切分算法,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I 1.6G 1G内存 WinXP) 2. 对数量词、地名、路名的...

    Lucene中文分词器组件

    本文将深入探讨Lucene中文分词器组件的相关知识点。 首先,我们要明白中文分词的重要性。由于中文是以词为基本单位,不像英文那样有明显的空格分隔,因此在进行信息检索时,需要先对中文文本进行分词,将连续的汉字...

    lucene中文分词工具包

    Lucene是一个高性能、全文检索库,而“lucene中文分词工具包”则为Lucene提供了一个专门针对中文分词的解决方案。这个工具包的核心是IKAnalyzer,它是一个开源且基于Java语言开发的轻量级中文分词工具,旨在提升中文...

    lucene中文分词器(paoding解牛)

    《Lucene中文分词器——Paoding解牛详解》 在中文信息检索领域,分词是至关重要的一环,它能够将连续的汉字序列切割成具有独立意义的词语,为后续的索引和查询提供基础。Lucene作为Java最著名的全文搜索引擎库,其...

    lucene.NET 中文分词

    中文分词是将连续的汉字序列切分成具有语义的词语的过程,是自然语言处理(NLP)中的基础步骤。在Lucene.NET中,为了支持中文分词,通常需要结合第三方分词器,如IK Analyzer、HanLP、jieba.NET等。这些分词器具备...

    Lucene中文分词组件 JE-Analysis 1.5.1

    //采用正向最大匹配的中文分词算法,相当于分词粒度等于0 MMAnalyzer analyzer = new MMAnalyzer(); //参数为分词粒度:当字数等于或超过该参数,且能成词,该词就被切分出来 MMAnalyzer analyzer = new ...

    lucene 中文分词 庖丁解牛

    《Lucene中文分词:庖丁解牛》 在信息技术高速发展的今天,全文搜索引擎已经成为网站内容检索不可或缺的一部分。其中,Apache Lucene作为一个开源的全文检索库,被广泛应用于各种项目中,尤其对于处理中文文本,...

    lucene中文分词jar包

    关于lucene中文分词的一个辅助jar包

    lucene中文分词源码,做搜索引擎需要用到的好东西哦

    《深入理解Lucene中文分词源码:打造高效搜索引擎》 在信息爆炸的时代,搜索引擎已经成为了我们获取知识的重要工具。而构建一个强大的搜索引擎,离不开核心的文本处理技术——中文分词。Lucene作为一款高性能、全文...

    lucene中文分词(庖丁解牛)庖丁分词

    《Lucene中文分词——庖丁解牛》 在自然语言处理领域,中文分词是基础且关键的一环。在Java开发中,Apache Lucene是一个强大的全文搜索引擎库,但默认并不支持中文,这就需要借助第三方分词工具。本文将深入探讨...

    lucene中文分词公用组件V1.4

    《深入理解Lucene中文分词公用组件V1.4》 Lucene,作为一个强大的全文搜索引擎库,对于中文处理尤其重要,而中文分词是其中的关键环节。本文将深入解析Lucene中文分词公用组件V1.4的更新内容,帮助开发者更好地理解...

    基于词典的最大匹配的Lucene中文分词程序

    本文将深入探讨“基于词典的最大匹配”的Lucene中文分词程序,这是构建高效、准确的中文信息处理系统的重要组成部分。 首先,我们要理解什么是分词。中文分词是指将连续的汉字序列按照词语的边界进行划分,使得每个...

    引入局部统计识别高频词汇的Lucene中文分词程序STUSegmentConfig.rar

    标题中的“引入局部统计识别高频词汇的Lucene中文分词程序STUSegmentConfig.rar”表明这是一个基于Lucene的中文分词工具,它利用了局部统计信息来识别和处理中文文本中的高频词汇。Lucene是一个开源全文检索库,广泛...

    引入局部统计识别高频词汇的Lucene中文分词程序src.rar

    标题中的“引入局部统计识别高频词汇的Lucene中文分词程序src.rar”表明这是一个关于使用Lucene进行中文分词的源代码项目,其中融入了局部统计的方法来识别和处理高频词汇。Lucene是一个流行的全文检索库,广泛应用...

    Struts标签Lucene中文分词构建

    ### Struts标签Lucene中文分词构建 #### 概述 本文主要介绍如何利用Struts框架中的标签来实现中文分词的功能,特别是基于Lucene的分析器进行分词处理,并结合Log4j进行日志记录的技术实践。Struts作为Apache ...

    lucene3庖丁解牛中文分词器

    《深入剖析:Lucene3与庖丁解牛中文分词器》 在信息技术飞速发展的今天,全文检索和搜索引擎已经成为日常开发中不可或缺的部分。Lucene作为一款强大的全文检索库,被广泛应用于各种信息检索系统中。然而,对于中文...

    IKAnalyzer2012+lucene中文分词

    IKAnalyzer2012+lucene中文分词是一个用于搜索引擎或信息检索系统的中文处理工具,它结合了IKAnalyzer2012和lucene-core-3.6.0这两个关键组件,为处理中文文本提供了高效的分词服务。在这个组合中,IKAnalyzer是主要...

    lucene中文分词公用组件V1.3

    1.修正了1.2版本在数量词处理的缺陷 2.优化分词性能 3.优化词典 请参考lucene中文分词公用组件V1.2之前版本使用说明

    lucene 中文分词

    **Lucene 中文分词** Lucene 是一个开源的...总的来说,通过这个简单的Lucene中文分词案例,你可以了解到如何利用Lucene进行全文检索,并结合第三方分词器处理中文内容,从而在Java项目中实现高效的中文搜索功能。

Global site tag (gtag.js) - Google Analytics