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中文分词入门教程
Lucene IK Analyzer 3.0 Lucene的IK Analyzer 3.0 中文分词器 Lucene IK Analyzer 3.0 Lucene的IK Analyzer 3.0 中文分词器Lucene IK Analyzer 3.0 Lucene的IK Analyzer 3.0 中文分词器
lucene3.5 + ik中文分词器例子,可从网页抓取输出流,并通过关键字查询相关文件 java ,亲自测试可以使用
lucene 所有jar包 包含IKAnalyzer分词器
lucene3.5 IKAnalyzer3.2.5 实例中文分词通过,目前在网上找的lucene 和IKAnalyzer 的最新版本测试通过。内含:示例代码,以及最新jar包。 lucene lucene3.5 IKAnalyzer IKAnalyzer3.2.5 jar 中文 分词
IK Analyzer 是一个开源的,基于java 语言开发的轻量级的中文分词工具包。从2006 年12 月推出1.0 版开始, IKAnalyzer 已经推出了3 个大版本。最初,它是以开源项目 Luence 为应用主体的,结合词典分词和文法分析...
提示:IKAnalyzer中文分词器支持Lucene6.0以上,IKAnalyzer中文分词器支持Lucene6.0以上。
由于林良益先生在2012之后未对IKAnalyzer进行更新,后续lucene分词接口发生变化,导致不可使用,所以此jar包支持lucene6.0以上版本
支持lucene5的 IKAnalyzer中文分词器 IKAnalyzer5.jar
IK Analyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文...
Lucene5.21+IkAnalyzer2012_V5入门案例,看不懂你来打我。
由于林良益先生在2012之后未对IKAnalyzer进行更新,后续lucene分词接口发生变化,导致不可使用,所以此jar包支持lucene6.0以上版本
使用IK分词器,应为该集群使用到的solr版本为4.10.3-cdh5.7.5,所以使用的 IK 包为IKAnalyzer2012FF_u1.jar,如果是3x的solr,使用IKAnalyzer2012_u6.jar 具体操作如下: 引用 1.在/opt/cloudera/parcels/CDH/lib/...
IKAnalyzer分词工具,包括lucene库和百度百科词条。
IKAnalyzer继承Lucene的Analyzer抽象类,使用IKAnalyzer和Lucene自带的分析器方法一样,将Analyzer测试代码改为IKAnalyzer测试中文分词效果。 如果使用中文分词器ik-analyzer,就需要在索引和搜索程序中使用一致的...
solr的IK分词器JAR及配置文件 jar包和配置文件的放置位置不一样,详情可搜索 IK Analyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。 org.wltea.analyzer.lucene.IKAnalyzer jar
IKAnalyzer是一个开源的,基于Java语言开发的轻量级的中文分词语言包,它是以Lucene为应用主体,结合词典分词和文法分析算法的中文词组组件。从3.0版本开始,IK发展为面向java的公用分词组件,独立Lucene项目,同时...
IKAnalyzer 中文分词器V3.2使用手册 lucene
lucene4.3.0+IK Analyzer2012FF
该jar包之前只支持Lucene4.7.2,因为我自己的项目用到的是Lucene5.3.1,所以我自己重写了IKAnalyzer.java以及IKTokenizer.java,并且重新编译之后替换了之前的.class文件,现在可以适用于Lucene5.3.1