1. 下载 lucene-2.9.1 和 ictclas4j
修改ictclas4j里的丢字的BUG
2. 代码
package com.lucene.tools;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
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.store.FSDirectory;
import org.ictclas4j.bean.SegResult;
import org.ictclas4j.segment.SegTag;
/**
* 分词工具类
* 使用Lucene和ictclas4j.jar
*
* @author Administrator
*
*/
public class LuceneAnalyzer {
// 建立索引的路径
public static final String path = "G://index2";
/**
* 除去字符串中最后的reg字符
*
* @param str
* @return
*/
public static String getDelReg(String str, String reg) {
String temp = "";
String[] strs = str.split(reg);
for (int i = 0; i < strs.length; i++) {
if (!"".equals(strs[i]) || strs[i].length() > 0) {
temp = temp + strs[i] + reg;
}
}
if (temp.length() > 0) {
temp = temp.substring(0, temp.length() - 1);
}
return temp;
}
/**
* 分词处理
*
* @param str
* @return
*/
public void _LuceneHandle(String indexName, String str){
try{
if(""!=str){
int len = str.length();
SegTag st = new SegTag(1);
SegResult strs = st.split(str);
String[] temp = strs.getFinalResult().split(" ");
String[] _temp = new String[2];
IndexWriter writer = new IndexWriter(FSDirectory.getDirectory(path, true), new StandardAnalyzer(), true);;
for(int i=0;i<temp.length;i++){
for(int j=0;j<2;j++){
_temp = temp[i].split("/");
}
_LuceneWinteIndex(indexName, _temp[0], len, writer);
}
writer.close();
}
else{
System.out.println("分词字符串不能为空");
}
}
catch(Exception e){
e.printStackTrace();
}
}
/**
* 创建索引
*
* @param str
* @return
*/
public void _LuceneWinteIndex(String indexName, String str, int len, IndexWriter writer) {
try{
if(""!=indexName && ""!=str){
Document doc = new Document();
doc.add(new Field(indexName, str, Field.Store.YES, Field.Index.TOKENIZED));
writer.setMaxFieldLength(len);
writer.addDocument(doc);
}
else{
System.out.println("索引名称和检索字符串不能为空");
}
}
catch(Exception e){
e.printStackTrace();
}
}
/**
* 检索
*
* @param name
*/
public int _LuceneSearchIndex(String name, String keyword){
int result = 0;
try{
IndexSearcher searcher = new IndexSearcher(path);
Hits hits = null;
Query query = null;
QueryParser qp = new QueryParser(name, new StandardAnalyzer());
query = qp.parse(keyword);
hits = searcher.search(query);
result = hits.length();
}
catch(Exception e){
e.printStackTrace();
}
return result;
}
}
分享到:
相关推荐
在本篇文章中,我们将围绕“baidu.rar_baidu_dictionary_中文分词_中文分词_词典_分词词典”这一主题,深入探讨百度曾经使用的中文分词词典及其在实际应用中的价值。 首先,让我们了解中文分词词典的重要性。词典是...
中文分词是自然语言处理中的一个基础任务,它是指将连续的汉字序列切分成具有语义意义的词汇序列的过程。与英文等其他语言相比,中文没有明显的单词界限,因此中文分词是进行后续自然语言处理任务(如文本分类、情感...
标题中的"C# 中文分词 LUCENE IKAnalyzer"是指使用C#语言实现的一个中文分词工具,它基于开源全文检索引擎Lucene,并且采用了IKAnalyzer(智能汉字分词系统)的Java版本进行移植。Lucene是一个强大的、高性能的信息...
中文分词是将连续的汉字序列切分成具有语义的词语的过程,是自然语言处理(NLP)中的基础步骤。在Lucene.NET中,为了支持中文分词,通常需要结合第三方分词器,如IK Analyzer、HanLP、jieba.NET等。这些分词器具备...
"百度中文分词词库"是一个专门用于分词的资源,它包含了大量的词汇及其组合方式,为精确地将连续的汉字序列分割成具有语义意义的词语提供了基础。 首先,我们要理解什么是中文分词。由于中文句子没有明显的空格来...
中文分词是自然语言处理(NLP)领域中的基础任务,它是将连续的汉字序列切分成具有语义意义的词语序列。在这个“中文分词数据集.zip”压缩包中,包含了一个专门用于训练中文分词模型的数据集。下面将详细讨论中文...
中文分词是自然语言处理(NLP)领域中的基础任务,它是将连续的汉字序列切分成具有语义意义的词语序列。在这个“中文分词词库整理.7z”压缩包中,包含的可能是一个精心整理的中文词汇集合,用于支持各种中文分词算法...
### 中文分词词库大全词库解析 #### 标题与描述概述 标题:“中文分词词库大全词库” 描述重复强调了一个词典的来源及其格式(TXT)。这表明该词库是为了中文自然语言处理(NLP)任务中的分词而准备的资源。中文...
中文分词是中文文本处理的基石,因为中文没有像英文那样的空格来自然地划分单词,所以需要通过分词算法将连续的汉字序列切分成有意义的词汇单元。这一过程对于后续的文本分析、信息检索、机器翻译等任务至关重要。 ...
标签 "中文分词" 是关键点,中文分词是将连续的汉字序列切分成有意义的词语,这是处理中文文本的基础步骤,对于信息检索、情感分析、机器翻译等任务至关重要。常见的中文分词算法有基于词典的匹配方法、统计模型如隐...
《深入理解Lucene 6.6:拼音与IK中文分词技术详解》 在信息检索领域,Lucene作为一款强大的全文搜索引擎库,被广泛应用。在处理中文文本时,分词是至关重要的一步,它决定了搜索的精度和效果。本文将详细讲解如何在...
在IT领域,汉字分词是自然语言处理(NLP)中的关键步骤,它涉及到将连续的汉字序列分割成有意义的词汇单元,以便计算机能够理解和分析文本。本项目名为"C#汉字分词程序",它实现了两种常见的分词算法:正向最大匹配...
在IT领域,中文分词是自然语言处理(NLP)中的关键步骤,它涉及到将连续的汉字序列分割成有意义的词语单元,以便计算机能够理解和分析文本。本项目以"matlab中文分词——最大正向匹配法.rar"为主题,重点讨论了如何...
CSW中文分词组件,是一套可自动将一段文本按常规汉语词组进行拆分,并以指定方式进行分隔的COM组件。本组件采用独有的高效的分词引擎及拆分算法,具有准确、高速、资源占用率小等特点。为了满足客户对文本语义进行...
分词是中文文本处理的基石,因为它能将连续的汉字序列划分为具有语义意义的单元,便于后续的分析和应用。 在"庖丁解牛"中,用户可以通过运行`analyzer.bat`程序来测试和查看分词结果。这是一个便捷的交互方式,允许...
中文分词是将连续的汉字序列切分成具有语义意义的词语的过程。与英文单词间的空格作为天然分隔符不同,中文没有明确的分词标志,因此需要借助特定算法来完成。常见的分词方法有基于词典的匹配法、统计模型如隐...
中文不同于英文,单词之间没有明显的分隔符,因此在处理中文文本时,我们需要先进行分词,即将连续的汉字序列切分成有意义的词汇单元。Sanford中文分词库是一种常用的分词工具,它基于统计模型,能够根据语料库学习...
分词是自然语言处理中的基础步骤,它将连续的汉字序列切分成有意义的词语,这对于搜索引擎、信息检索、文本分析等多个领域至关重要。这类类库能够帮助开发者高效地实现对中文文本的预处理,提升系统的性能和准确性。...
ik中文分词词库35万中文分词词库(含电商)
来自“猎图网 www.richmap.cn”基于IKAnalyzer分词算法的准商业化Lucene中文分词器。 1. 正向全切分算法,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I 1.6G 1G内存 WinXP) 2. 对数量词、地名、路名的...