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();
}
}
}
分享到:
相关推荐
在实际应用中,开发者会将中文文本通过 Paoding 分词器进行分词,以使得 Lucene 索引中文时更加精确。例如,对于一个包含产品信息的字段,如果直接索引整个文本,将不能实现对特定产品名的搜索。通过 Paoding 分词后...
总的来说,Lucene.NET在中文分词和高亮显示方面的应用需要结合合适的分词器,并进行适当的配置和优化。开发者可以根据实际需求选择适合的分词器,并通过集成和调优提高系统的搜索效率和用户体验。
本文将详细讲解如何在Lucene 6.6版本中结合拼音分词和IK中文分词,以及如何利用自定义词典和停用词表提升分词效率。 首先,我们来了解核心组件——Lucene 6.6。这个版本的Lucene引入了多项改进,包括更快的搜索速度...
《支持Lucene的词典机械中文分词技术详解》 在信息技术领域,中文分词是自然语言处理(NLP)中...在实际应用中,开发者可以结合Lucene提供的分词工具和自定义策略,以满足特定场景的需求,提升系统的性能和用户体验。
2. **配置与初始化**:根据项目需求,配置分词器的参数,如自定义词典、分词模式等,然后在Lucene的Analyzer中实例化该分词器。 3. **索引建立**:在创建索引时,使用配置好的分词器对中文文本进行分词,生成分词后...
来自“猎图网 www.richmap.cn”基于IKAnalyzer分词算法的准商业化Lucene中文分词器。 1. 正向全切分算法,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I 1.6G 1G内存 WinXP) 2. 对数量词、地名、路名的...
1. **中文分词器**:在Lucene中,针对中文的分词通常使用第三方插件,如IK Analyzer、jieba分词库或SmartChinese Analyzer。这些分词器能识别中文词汇并将其拆分为单个词元(Token)。 2. **配置分析器**:在...
在实际应用中,选择哪种分词器应根据具体需求来决定。如果需要高效处理中日韩三国语言,可以选择CJKAnalyzer;如果专注中文且不涉及其他语言,ChineseAnalyzer可能是更好的选择;而对于更复杂的需求,如新词识别和...
Lucene.Net+盘古分词是一个常见的中文信息检索组合。但是随着盘古分词停止更新,与Lucene.Net3.0无法兼容。为了使得大家少走弯路,本人利用Lucene.Net2.9+盘古分词2.3搭建了一个Demo,里面包含了两个模块的源码,方便...
jieba分词器是开源的中文分词库,它在Lucene中的应用常见于Java版的jieba分词。jieba采用混合分词策略,包括精确模式、全模式和搜索引擎模式,适用于不同的应用场景。 1. 精确模式:力求精准,适合新闻标题等场景。...
使用visual studio 开发的lucene.net和盘古分词实现全文检索。并按照lucene的得分算法进行多条件检索并按照得分算法计算匹配度排序。 可以输入一句话进行检索。 lucene.net的版本为2.9.2 盘古分词的版本为2.3.1 并...
#### 中文分词技术在Lucene中的应用 为了增强Lucene在中文环境下的表现,需要对Lucene的默认分析器进行扩展,引入中文分词器。常见的中文分词器有: - **Jieba分词**:一款流行的开源中文分词工具,支持精确模式和...
本文将深入探讨Lucene引擎与SQLite数据库在分词查询中的应用,以及如何通过它们来统计单词频率、识别重点单词和句子。 首先,Lucene是一个高性能、全文检索库,由Apache软件基金会开发。它提供了一个高效的、可扩展...
在实际应用中,Compass 会使用 Lucene 的底层搜索能力,同时通过提供更丰富的元数据管理和事务支持,使得在关系型数据库和搜索引擎之间同步数据变得更加容易。而添加了中文分词器,如 Je-Analysis,可以使得 Compass...
总的来说,Paoding分词器是Lucene进行中文信息处理的一个强大工具,它的出现极大地提升了中文文本在搜索引擎中的检索效率和准确性。通过深入理解和熟练运用Paoding,我们可以构建出更加符合中文特性的搜索引擎系统,...
在这个版本中,对于中文分词,Lucene 使用了专门的中文分词器,如 IK 分词器或 HanLP,来对中文文本进行分析和拆分,生成适合搜索的关键词。 **分词技术** 分词是搜索引擎处理文本的关键步骤,尤其对于中文来说,...
在信息技术领域,中文分词是文本处理的一个关键步骤,尤其是在搜索引擎和自然语言处理应用中。Lucene是一个高性能、全文检索库,而“lucene中文分词工具包”则为Lucene提供了一个专门针对中文分词的解决方案。这个...
在这个例子中,`pom.xml`列出了Lucene库作为项目的依赖,确保在编译和运行时能够正确加载所需的分词器和其他Lucene组件。 在实际使用Lucene进行分词时,首先需要了解其核心概念,如文档、字段、术语(tokens)和...
**Lucene+中文IK分词器实例解析** Lucene是一个高性能、全文检索库,由Apache软件基金会开发。它提供了一个简单但功能强大的API...通过这个实例,开发者可以更好地理解和掌握Lucene与IK分词器在中文全文搜索中的应用。
《中文分词及其在基于Lucene的全文检索中的应用》这篇论文主要探讨了中文分词在全文检索系统,特别是基于Lucene平台的应用。全文检索技术是现代信息检索领域的重要组成部分,而Lucene作为一款开源的全文检索引擎框架...