`

lucene3 中文IKAnalyzer分词例子

阅读更多
import java.io.IOException;
import java.io.StringReader;
import java.util.Iterator;

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.IndexWriter;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.AttributeImpl;
import org.wltea.analyzer.lucene.IKAnalyzer;
import org.wltea.analyzer.lucene.IKQueryParser;
import org.wltea.analyzer.lucene.IKSimilarity;
/**
 * 采用IKAanlyzer分词器查询
 * @author admin
 *
 */
public class IKAnalyzerSearchWord {
	private static String fieldName = "text";
	public  static void searchWord(String field ,String keyword) {
		if(null!=field&&!"".equals(field)){
			fieldName = field;
		}
		String text = "IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, " +
				"IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。" +
				"新版本的IK Analyzer 3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 ";   
		Analyzer analyzer = new IKAnalyzer();
		StringReader reader = new StringReader(text);   
		  
		long startTime = System.currentTimeMillis();    //开始时间   
		TokenStream ts = analyzer.tokenStream("*", reader);   
		Iterator<AttributeImpl> it = ts.getAttributeImplsIterator();
		while(it.hasNext()){
			System.out.println((AttributeImpl)it.next());
		}
		System.out.println("");   
		  
		long endTime = System.currentTimeMillis();  //结束时间   
		System.out.println("IK分词耗时" + new Float((endTime - startTime)) / 1000 + "秒!"); 
		Directory dir = null;
		IndexWriter writer = null;
		IndexSearcher searcher = null;
		try {
			dir = new RAMDirectory();
			writer = new IndexWriter(dir, analyzer, true,
					IndexWriter.MaxFieldLength.LIMITED);
			System.out.println(IndexWriter.MaxFieldLength.LIMITED);
			Document doc = new Document();
			doc.add(new Field(fieldName, text, Field.Store.YES,
					Field.Index.ANALYZED));
			writer.addDocument(doc);
			writer.close();
			//在索引其中使用IKSimilarity相似评估度
			searcher = new IndexSearcher(dir);
			searcher.setSimilarity(new IKSimilarity());
			Query query = IKQueryParser.parse(fieldName, keyword);
			TopDocs topDocs = searcher.search(query, 5);
			System.out.println("命中:"+topDocs.totalHits);
			ScoreDoc[] scoreDocs = topDocs.scoreDocs;
			for (int i = 0; i < scoreDocs.length; i++) {
				Document targetDoc = searcher.doc(scoreDocs[i].doc);
				System.out.println("內容:"+targetDoc.toString());
			}
		} catch (Exception e) {
			System.out.println(e);
		}finally{
			try {
				searcher.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				dir.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) {
		long a = System.currentTimeMillis();
		IKAnalyzerSearchWord.searchWord("","中文分词工具包");
		System.out.println(System.currentTimeMillis()-a);
	}
}

 

import java.io.IOException;
import java.io.StringReader;
import java.util.Iterator;

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.IndexWriter;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.AttributeImpl;
import org.wltea.analyzer.lucene.IKAnalyzer;
import org.wltea.analyzer.lucene.IKQueryParser;
import org.wltea.analyzer.lucene.IKSimilarity;
/**
 * 采用IKAanlyzer分词器查询
 * @author admin
 *
 */
public class IKAnalyzerSearchWord {
	private static String fieldName = "text";
	public  static void searchWord(String field ,String keyword) {
		if(null!=field&&!"".equals(field)){
			fieldName = field;
		}
		String text = "IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, " +
				"IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。" +
				"新版本的IK Analyzer 3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。 ";   
		Analyzer analyzer = new IKAnalyzer();
		StringReader reader = new StringReader(text);   
		  
		long startTime = System.currentTimeMillis();    //开始时间   
		TokenStream ts = analyzer.tokenStream("*", reader);   
		Iterator<AttributeImpl> it = ts.getAttributeImplsIterator();
		while(it.hasNext()){
			System.out.println((AttributeImpl)it.next());
		}
		System.out.println("");   
		  
		long endTime = System.currentTimeMillis();  //结束时间   
		System.out.println("IK分词耗时" + new Float((endTime - startTime)) / 1000 + "秒!"); 
		Directory dir = null;
		IndexWriter writer = null;
		IndexSearcher searcher = null;
		try {
			dir = new RAMDirectory();
			writer = new IndexWriter(dir, analyzer, true,
					IndexWriter.MaxFieldLength.LIMITED);
			System.out.println(IndexWriter.MaxFieldLength.LIMITED);
			Document doc = new Document();
			doc.add(new Field(fieldName, text, Field.Store.YES,
					Field.Index.ANALYZED));
			writer.addDocument(doc);
			writer.close();
			//在索引其中使用IKSimilarity相似评估度
			searcher = new IndexSearcher(dir);
			searcher.setSimilarity(new IKSimilarity());
			Query query = IKQueryParser.parse(fieldName, keyword);
			TopDocs topDocs = searcher.search(query, 5);
			System.out.println("命中:"+topDocs.totalHits);
			ScoreDoc[] scoreDocs = topDocs.scoreDocs;
			for (int i = 0; i < scoreDocs.length; i++) {
				Document targetDoc = searcher.doc(scoreDocs[i].doc);
				System.out.println("內容:"+targetDoc.toString());
			}
		} catch (Exception e) {
			System.out.println(e);
		}finally{
			try {
				searcher.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				dir.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	public static void main(String[] args) {
		long a = System.currentTimeMillis();
		IKAnalyzerSearchWord.searchWord("","中文分词工具包");
		System.out.println(System.currentTimeMillis()-a);
	}
}

 

分享到:
评论

相关推荐

    Lucene4.7+IK Analyzer中文分词入门教程

    【Lucene4.7+IK Analyzer中文分词入门教程】 Lucene是一个开源的全文检索库,它提供了文本分析、索引和搜索的核心工具。在这个入门教程中,我们将使用Lucene 4.7版本,结合IK Analyzer,一个专门针对中文分词的开源...

    IKanalyzer 分词小测试例子

    **IKanalyzer分词器详解** IKAnalyzer是一款开源的、基于Java实现的中文分词工具,主要用于对中文文本进行分词处理。它以其高效、灵活的特性,在许多Java开发的搜索引擎和自然语言处理项目中得到广泛应用。这个"IK...

    lucene+中文IK分词器 例子

    总结来说,"lucene3.5 + ik中文分词器例子"是一个展示如何使用Lucene进行中文全文检索的示例,它涵盖了从数据抓取、分词处理、索引建立到查询执行的全过程。通过这个实例,开发者可以更好地理解和掌握Lucene与IK分词...

    IKAnalyzer和Lucene分词工具下载地址+使用方法

    IKAnalyzer是一款基于Java语言开发的中文分词工具包,它在Lucene的基础上进行了优化和扩展,特别适用于全文检索和自然语言处理任务。IKAnalyzer提供了强大的中文分词能力,能够有效地识别和处理中文词汇,提高了搜索...

    IKAnalyzer2012_FF_hf1.jar

    解决lucene4.0与IKAnalyzer的冲突。解决Exception in thread "main" java.lang.VerifyError...原因IKAnalyzer中参考手册中的例子是使用的lucene3.4,与4.0已经是不兼容了。本资源包含了IKAnalyzer2012_FF_hf1.jar及源码

    IKAnalyzer中文分词器V3.1.1使用手册

    ### IKAnalyzer中文分词器V3.1.1使用手册 #### 1. IKAnalyzer 3.1.1 介绍 IKAnalyzer是一个基于Java语言开发的开源轻量级...通过这个例子,开发者可以快速了解如何在实际应用中集成IKAnalyzer来进行中文分词处理。

    IKAnalyzer中文分词器V3.2.8使用手册

    ### IKAnalyzer中文分词器V3.2.8使用手册 #### 1. IKAnalyzer3.X介绍 IKAnalyzer是一款开源的、基于Java语言开发的轻量级中文分词工具包。自2006年12月发布1.0版以来,已经经历了多个大版本的迭代,目前最新版本为...

    elasticsearch-analysis-ik2.x增加连续数字字母英语智能分词、动态词库刷新支持elasticsearch2.x以上

    文件说明:本zip包含IKAnalyzer的src及elasticsearch可运行插件plugins两部分。 使用说明:修改src源码后可通过IKAnalzyerDemo、LuceneIndexAndSearchDemo测试分词及检索。将编译后jar包替换plugins中相应jar包即可...

    Lucene-Demo.rar Lucene分词的demo

    分词器的配置是灵活的,可以根据需求选择不同的分词策略,比如标准分词器(StandardAnalyzer)适用于大多数英文文本,而中文分词可能需要使用IKAnalyzer或SmartChineseAnalyzer等针对中文特性的分词器。 在运行这个...

    Lucene 全文检索的 各种例子

    在这个“Lucene全文检索的各种例子”中,我们将探讨如何使用不同的分词器,如ikAnalyzer和smartChineseAnalyzer,来实现中文文本的索引和搜索。 首先,让我们深入理解一下Lucene。Lucene的核心功能包括文档的索引和...

    跟益达学Solr5之使用IK分词器

    IK分词器(Intelligent Chinese Analyzer for Solr)是针对Java环境下Lucene/Solr的高效、灵活的中文分词组件,它的目标是为Java开发人员提供一个快速、稳定、扩展性好的中文分词工具。 在Solr5中,IK分词器已经是...

    luceneIKAnalyzer中文分词及索引,简单实例.pdf

    在本文中,我们将通过一个简单的例子来探讨如何使用Lucene和IKAnalyzer进行中文分词及建立索引。 首先,我们需要引入相关的库文件,包括Lucene的核心库和IKAnalyzer。在Java项目中,这通常通过Maven或Gradle的依赖...

    lucene开发部分例子

    在这个过程中,你会了解到如何创建Analyzer来处理中文分词,因为 Lucene 默认并不支持中文。例如,可以使用IK Analyzer、SmartCN Analyzer或jieba分词库来实现。此外,你还会学习到如何设计查询解析器,将用户的输入...

    elasticsearch-analysis-ik-6.2.2.zip

    在这个例子中,"text_field"字段将使用"my_ikAnalyzer"进行分析,该分析器基于ik_max_word tokenizer,能尽可能多地切分出词汇,并应用了小写转换和ASCII折叠过滤器,确保搜索的兼容性。 总的来说,"elasticsearch-...

    lucene.zip

    总结来说,"lucene.zip"包含了一个基于Lucene的简单搜索系统实例,利用了IK分词器对中文文本进行分词,构建了索引,并实现了搜索功能。这个例子对于理解和学习如何在实际项目中使用Lucene进行信息检索是非常有价值的...

    Lucene在web项目中的应用

    在中文环境下,Lucene需要配合分词器,如IK Analyzer或HanLP,对中文文本进行分词处理。分词器会根据语法规则和词汇库将句子拆分成单个词语,以便于搜索。 ### 5. 在留言项目中的应用 在描述中提到的Leave_msg_...

    lucene例子

    默认的Analyzer如StandardAnalyzer处理英文文本,对于中文则可以使用SmartChineseAnalyzer或IKAnalyzer。 2. **Field定义**:每个文档由多个Field组成,每个Field都有自己的属性,如是否存储、是否可搜索、是否可...

Global site tag (gtag.js) - Google Analytics