`

在Lucene中应用poading进行分词

阅读更多

1、下载poading解牛
http://code.google.com/p/paoding/downloads/list
2、设置系统环境变量PAODING_DIC_HOME指向词典安装目录
如:paoding.dic.home=z:\data\paoding\dic
3、解压paoding-analysis-2.0.4-beta,解压后再用压缩软件打开paoding-analysis.jar文件,单个解压出paoding-analysis.properties文件,在paoding-analysis.properties文件中添加或修改paoding.dic.home的值。并将paoding-analysis-2.0.4-beta解压包中的dic下的文件拷到PAODING_DIC_HOME目录下
如:paoding.dic.home=z:\data\paoding\dic
然后在将修改后的文件放回paoding-analysis.jar包
4、创建一个词库目录,目录必须跟paoding.dic.home的值一致,如:
paoding.dic.home=z:\data\paoding\dic
再创建索引目录,
如:paoding.dic.home=z:\data\paoding\test_index
5、创建一个java project,将paoding-analysis-2.0.4-beta根目录下的包引入,注意,此时引入的paoding-analysis.jar包应是你修改过的包文件。
6、测试代码:

package com.paoding.index;   
  
  
import java.io.IOException;   
  
import net.paoding.analysis.analyzer.PaodingAnalyzer;   
  
import org.apache.lucene.analysis.Analyzer;   
import org.apache.lucene.analysis.TokenStream;   
import org.apache.lucene.document.Document;   
import org.apache.lucene.document.Field;   
import org.apache.lucene.index.CorruptIndexException;   
import org.apache.lucene.index.IndexReader;   
import org.apache.lucene.index.IndexWriter;   
import org.apache.lucene.index.TermPositionVector;   
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.Searcher;   
import org.apache.lucene.search.highlight.Formatter;   
import org.apache.lucene.search.highlight.Highlighter;   
import org.apache.lucene.search.highlight.QueryScorer;   
import org.apache.lucene.search.highlight.TokenGroup;   
import org.apache.lucene.search.highlight.TokenSources;   
import org.apache.lucene.store.LockObtainFailedException;   
public class Index {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
        String IDNEX_PATH = "Z:/data/paoding/test_index";   
        //获取Paoding中文分词器   
        Analyzer analyzer = new PaodingAnalyzer();   
        //建立索引   
        IndexWriter writer;   
        try {   
            writer = new IndexWriter(IDNEX_PATH, analyzer, true);   
  
            Document doc = new Document();   
            Field field = new Field("content", "书法和国的书!", Field.Store.YES,   
                Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS);   
            doc.add(field);   
            writer.addDocument(doc);   
            writer.close();   
            System.out.println("Indexed success!");   
                
            //检索   
            IndexReader reader = IndexReader.open(IDNEX_PATH);   
            QueryParser parser = new QueryParser("content", analyzer);   
            Query query = parser.parse("书法");   
            Searcher searcher = new IndexSearcher(reader);   
            Hits hits = searcher.search(query);   
            if (hits.length() == 0) {   
                System.out.println("hits.length=0");   
            }   
            Document doc2 = hits.doc(0);   
            //高亮处理   
            String text = doc2.get("content");   
            TermPositionVector tpv = (TermPositionVector) reader.getTermFreqVector(   
                            0, "content");   
            TokenStream ts = TokenSources.getTokenStream(tpv);   
            Formatter formatter = new Formatter() {   
                public String highlightTerm(String srcText, TokenGroup g) {   
                    if (g.getTotalScore() <= 0) {   
                        return srcText;   
                    }   
                    return "<b>" + srcText + "</b>";   
                }   
            };   
            Highlighter highlighter = new Highlighter(formatter, new QueryScorer(   
                    query));   
            String result = highlighter.getBestFragments(ts, text, 5, "…");   
            System.out.println("result:\n\t" + result);   
            reader.close();   
        } catch (CorruptIndexException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        } catch (LockObtainFailedException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        } catch (IOException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        } catch (ParseException e) {   
            // TODO Auto-generated catch block   
            e.printStackTrace();   
        }   
  
  
    }   
  
}

 

分享到:
评论

相关推荐

    lucene简单教程poading中文分词.pdf

    在实际应用中,开发者会将中文文本通过 Paoding 分词器进行分词,以使得 Lucene 索引中文时更加精确。例如,对于一个包含产品信息的字段,如果直接索引整个文本,将不能实现对特定产品名的搜索。通过 Paoding 分词后...

    lucene.NET 中文分词

    总的来说,Lucene.NET在中文分词和高亮显示方面的应用需要结合合适的分词器,并进行适当的配置和优化。开发者可以根据实际需求选择适合的分词器,并通过集成和调优提高系统的搜索效率和用户体验。

    lucene6.6+拼音分词+ik中文分词包

    本文将详细讲解如何在Lucene 6.6版本中结合拼音分词和IK中文分词,以及如何利用自定义词典和停用词表提升分词效率。 首先,我们来了解核心组件——Lucene 6.6。这个版本的Lucene引入了多项改进,包括更快的搜索速度...

    支持lucene的词典机械中文分词

    《支持Lucene的词典机械中文分词技术详解》 在信息技术领域,中文分词是自然语言处理(NLP)中...在实际应用中,开发者可以结合Lucene提供的分词工具和自定义策略,以满足特定场景的需求,提升系统的性能和用户体验。

    Lucene中文分词器组件

    2. **配置与初始化**:根据项目需求,配置分词器的参数,如自定义词典、分词模式等,然后在Lucene的Analyzer中实例化该分词器。 3. **索引建立**:在创建索引时,使用配置好的分词器对中文文本进行分词,生成分词后...

    Lucene中文分词器包

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

    如何使用Lucene的中文分词搜索

    1. **中文分词器**:在Lucene中,针对中文的分词通常使用第三方插件,如IK Analyzer、jieba分词库或SmartChinese Analyzer。这些分词器能识别中文词汇并将其拆分为单个词元(Token)。 2. **配置分析器**:在...

    Lucene关于几种中文分词的总结

    在实际应用中,选择哪种分词器应根据具体需求来决定。如果需要高效处理中日韩三国语言,可以选择CJKAnalyzer;如果专注中文且不涉及其他语言,ChineseAnalyzer可能是更好的选择;而对于更复杂的需求,如新词识别和...

    Lucene.Net+盘古分词C# Demo

    Lucene.Net+盘古分词是一个常见的中文信息检索组合。但是随着盘古分词停止更新,与Lucene.Net3.0无法兼容。为了使得大家少走弯路,本人利用Lucene.Net2.9+盘古分词2.3搭建了一个Demo,里面包含了两个模块的源码,方便...

    运用在lucene中的中文分词算法源码

    jieba分词器是开源的中文分词库,它在Lucene中的应用常见于Java版的jieba分词。jieba采用混合分词策略,包括精确模式、全模式和搜索引擎模式,适用于不同的应用场景。 1. 精确模式:力求精准,适合新闻标题等场景。...

    lucene.net+盘古分词多条件全文检索并匹配度排序

    使用visual studio 开发的lucene.net和盘古分词实现全文检索。并按照lucene的得分算法进行多条件检索并按照得分算法计算匹配度排序。 可以输入一句话进行检索。 lucene.net的版本为2.9.2 盘古分词的版本为2.3.1 并...

    Lucene与中文分词技术的研究及应用

    #### 中文分词技术在Lucene中的应用 为了增强Lucene在中文环境下的表现,需要对Lucene的默认分析器进行扩展,引入中文分词器。常见的中文分词器有: - **Jieba分词**:一款流行的开源中文分词工具,支持精确模式和...

    lucene引擎和sqlite数据库分词查询

    本文将深入探讨Lucene引擎与SQLite数据库在分词查询中的应用,以及如何通过它们来统计单词频率、识别重点单词和句子。 首先,Lucene是一个高性能、全文检索库,由Apache软件基金会开发。它提供了一个高效的、可扩展...

    compass2.1.4包+所用lucene包+中文分词器

    在实际应用中,Compass 会使用 Lucene 的底层搜索能力,同时通过提供更丰富的元数据管理和事务支持,使得在关系型数据库和搜索引擎之间同步数据变得更加容易。而添加了中文分词器,如 Je-Analysis,可以使得 Compass...

    lucene中文分词器(paoding解牛)

    总的来说,Paoding分词器是Lucene进行中文信息处理的一个强大工具,它的出现极大地提升了中文文本在搜索引擎中的检索效率和准确性。通过深入理解和熟练运用Paoding,我们可以构建出更加符合中文特性的搜索引擎系统,...

    Lucene2.1 Source Code,分词源码

    在这个版本中,对于中文分词,Lucene 使用了专门的中文分词器,如 IK 分词器或 HanLP,来对中文文本进行分析和拆分,生成适合搜索的关键词。 **分词技术** 分词是搜索引擎处理文本的关键步骤,尤其对于中文来说,...

    lucene中文分词工具包

    在信息技术领域,中文分词是文本处理的一个关键步骤,尤其是在搜索引擎和自然语言处理应用中。Lucene是一个高性能、全文检索库,而“lucene中文分词工具包”则为Lucene提供了一个专门针对中文分词的解决方案。这个...

    Lucene-Demo.rar Lucene分词的demo

    在这个例子中,`pom.xml`列出了Lucene库作为项目的依赖,确保在编译和运行时能够正确加载所需的分词器和其他Lucene组件。 在实际使用Lucene进行分词时,首先需要了解其核心概念,如文档、字段、术语(tokens)和...

    lucene+中文IK分词器 例子

    **Lucene+中文IK分词器实例解析** Lucene是一个高性能、全文检索库,由Apache软件基金会开发。它提供了一个简单但功能强大的API...通过这个实例,开发者可以更好地理解和掌握Lucene与IK分词器在中文全文搜索中的应用。

    中文分词及其在基于Lucene的全文检索中的应用

    《中文分词及其在基于Lucene的全文检索中的应用》这篇论文主要探讨了中文分词在全文检索系统,特别是基于Lucene平台的应用。全文检索技术是现代信息检索领域的重要组成部分,而Lucene作为一款开源的全文检索引擎框架...

Global site tag (gtag.js) - Google Analytics