首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

lucene3 汉语言IKAnalyzer分词例子

2012-10-31 
lucene3 中文IKAnalyzer分词例子import java.io.IOExceptionimport java.io.StringReaderimport java.ut

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);}}

热点排行