本文记录Lucene+Paoding的使用方法图解:
一、下载Lucene(官网:http://archive.apache.org/dist/lucene/java/)本文中使用的是:2.9.4,下载后解压,Lucene所需要的基本jar文件如下列表:
     lucene-core-2.9.4.jar                   Lucene核心jar
     lucene-analyzers-2.9.4.jar            Lucene分词jar 
     lucene-highlighter-2.9.4.jar           Lucene高亮显示jar
 
二、由于Lucene中的中文分词实现不了我们所需要的功能,所以,需要下载第三方包(疱丁解牛)(官网:http://code.google.com/p/paoding/ )最新版本为:paoding-analysis-2.0.4-beta.zip 下载解压后,Lucene使用'疱丁'所需要的jar文件如下列表:
    paoding-analysis.jar                       Lucene针对中文分词需要jar 
    commons-logging.jar                     日志文件
    {PADODING_HOME}/dic          疱丁解牛词典目录(PAODING_HOME:代表解压后的paoding目录)
 
三、打开Eclipse并创建一个Java Project(项目名称和项目所在的路径不能包含空格),本例中Project Name:Paoding
       1_1:在Paoding Project 创建一个Folder--lib(用于存放所有的jar),把前面所说的jar文件拷贝到lib目录下,并把lib下所有的jar添加到项目ClassPath下.   
      1_2:拷贝{PAODING_HOME}/dic目录 至   Paoding项目/src下整个项目结构图如下:
 
四、创建TestFileIndex.java类,实现功能是:把d:\data\*.txt所有文件读入内存中,并写入索引目录(d:\luceneindex)下
TestFileIndex.java
 
package com.lixing.paoding.index;

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.InputStreamReader;

import net.paoding.analysis.analyzer.PaodingAnalyzer;

import org.apache.lucene.analysis.Analyzer; 
import org.apache.lucene.document.Document; 
import org.apache.lucene.document.Field; 
import org.apache.lucene.index.IndexWriter; 
import org.apache.lucene.store.Directory; 
import org.apache.lucene.store.FSDirectory;

public  class TestFileIndex { 
   public  static  void main(String[] args)  throws Exception { 
    String dataDir= "d:/data"; 
    String indexDir= "d:/luceneindex"; 
     
    File[] files= new File(dataDir).listFiles(); 
    System.out.println(files.length); 
     
    Analyzer analyzer= new PaodingAnalyzer(); 
    Directory dir=FSDirectory.open( new File(indexDir)); 
    IndexWriter writer= new IndexWriter(dir, analyzer, IndexWriter.MaxFieldLength.UNLIMITED); 
     
     for( int i=0;i<files.length;i++){ 
      StringBuffer strBuffer= new StringBuffer(); 
      String line=""; 
      FileInputStream is= new FileInputStream(files[i].getCanonicalPath()); 
      BufferedReader reader= new BufferedReader( new InputStreamReader(is, "gb2312")); 
      line=reader.readLine(); 
       while(line !=  null){ 
        strBuffer.append(line); 
        strBuffer.append( "\n"); 
        line=reader.readLine(); 
      } 
        
      Document doc= new Document(); 
      doc.add( new Field( "fileName", files[i].getName(), Field.Store.YES, Field.Index.ANALYZED)); 
      doc.add( new Field( "contents", strBuffer.toString(), Field.Store.YES, Field.Index.ANALYZED)); 
      writer.addDocument(doc); 
      reader.close(); 
      is.close(); 
    } 
     
    writer.optimize(); 
    writer.close(); 
    dir.close(); 
    System.out.println( "ok"); 
  } 
}

 
 
五、创建TestFileSearcher.java,实现在的功能是:读取索引中的内容:
TestFileSearcerh.java
 
package com.lixing.paoding.index;

import java.io.File;

import net.paoding.analysis.analyzer.PaodingAnalyzer;

import org.apache.lucene.analysis.Analyzer; 
import org.apache.lucene.document.Document; 
import org.apache.lucene.queryParser.QueryParser; 
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.FSDirectory; 
import org.apache.lucene.util.Version;

public  class TestFileSearcher { 
   public  static  void main(String[] args)  throws Exception { 
    String indexDir =  "d:/luceneindex"; 
    Analyzer analyzer =  new PaodingAnalyzer(); 
    Directory dir = FSDirectory.open( new File(indexDir)); 
    IndexSearcher searcher =  new IndexSearcher(dir,  true); 
    QueryParser parser =  new QueryParser(Version.LUCENE_29,  "contents",analyzer); 
    Query query = parser.parse( "呼救"); 
     //Term term=new Term("fileName", "大学"); 
     //TermQuery query=new TermQuery(term); 
     
    TopDocs docs=searcher.search(query, 1000); 
    ScoreDoc[] hits=docs.scoreDocs; 
    System.out.println(hits.length); 
     for( int i=0;i<hits.length;i++){ 
      Document doc=searcher.doc(hits[i].doc); 
      System.out.print(doc.get( "fileName")+ "--:\n"); 
      System.out.println(doc.get( "contents")+ "\n"); 
    } 
     
    searcher.close(); 
    dir.close(); 
  } 
}

本文出自 “李新博客” 博客,请务必保留此出处http://kinglixing.blog.51cto.com/3421535/702663

Lucene中文分词Demo相关推荐

  1. 转 Lucene中文分词组件 JE-Analysis 1.5.1 天狼

    2006-05-29 17:40     主题:  [发布]Lucene中文分词组件 JE-Analysis 1.5.1   天狼 注册于: 2006-05-28 00:23 帖子总数: 103 离线 ...

  2. 当前几个主要的Lucene中文分词器的比较

    http://blog.fulin.org/2009/08/lucene_chinese_analyzer_compare.html 1. 基本介绍: paoding :Lucene中文分词" ...

  3. 11大Java开源中文分词器的使用方法和分词效果对比,当前几个主要的Lucene中文分词器的比较...

    本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那 ...

  4. java lucene 中文分词_Lucene的中文分词器IKAnalyzer

    分词器对英文的支持是非常好的. 一般分词经过的流程: 1)切分关键词 2)去除停用词 3)把英文单词转为小写 但是老外写的分词器对中文分词一般都是单字分词,分词的效果不好. 国人林良益写的IK Ana ...

  5. Lucene 中文分词器概述 与 Ik-Analyzer 使用教程

    目录 中文分词器简述 Ik-Analyzer 概述与特性 Ik-Analyzer 下载与使用 创建索引 查询索引 Ik-Analyzer 官方示例源码 中文分词器简述 1.Apache Lucene  ...

  6. 全文检索lucene中文分词的一些总结

    为什么80%的码农都做不了架构师?>>>    全文检索几乎是所有内容管理系统软件(CMS)必备的功能,在对公司的CMS产品的开发维护过程中,全文检索始终是客户重点关注的模块,为满足 ...

  7. 分享Lucene中文分词组件IK Analyzer V3.2.8

    IK Analyzer 3.X介绍   IK Analyzer是一个开源的,基于java诧言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始, IKAnalyzer已经推出了3个大版本 ...

  8. (转)Lucene中文分词图解

    本文记录Lucene+Paoding的使用方法图解: 一.下载Lucene(官网:http://archive.apache.org/dist/lucene/java/)本文中使用的是:2.9.4,下 ...

  9. Lucene 中文分词器 Ik-Analyzer 使用教程

    参考: https://blog.csdn.net/wangmx1993328/article/details/82258785

最新文章

  1. Python的GIL是什么鬼,多线程性能究竟如何
  2. DWR小结DWRUtil篇
  3. winxp批处理重启计算机,WinXP使用关机命令shutdown的方法
  4. 【Java并发编程】并发之痛 Thread,Goroutine,Actor
  5. hibernate正向生成数据库表以及配置——Teacher.hbm.xml
  6. 通过profile 用maven命令打不同配置的变量包
  7. linux中在工作空间编译cpp,linux tensorflow2.4.0 c++ 编译
  8. Java开发者必备:超全的Java问题排查工具单
  9. 用c语言实现相机坐标的过滤,华为2014年机试题【字符串过滤】-【C语言/C++】
  10. 开发是在什么部门办理_房产证办理流程是什么?办理房产证需要缴纳哪些费用?...
  11. 读贾志鹏线性筛有感 (莫比乌斯函数的应用)
  12. oracle 11g r2 rac中节点时间不同步,Oracle 11gR2 安装RAC错误之--时钟不同步
  13. AJAX培训第一讲:AJAX基础
  14. 解决WebStorm中文显示不正常的问题
  15. 如何u盘全新安装xp系统?
  16. 【Python数据科学】多表关联 merge、join、concat
  17. sql server关系代数练习--进阶
  18. 目标检测 | YOLO系列超全讲解v1,v2,v3
  19. python检测键盘输入termios、等待按键超时检测
  20. java本地Cache缓存的使用

热门文章

  1. linux存储池没足够空间,修改群晖存储池及存储空间顺序 | 呉真的博客
  2. 为Android Studio配置阿里云镜像仓库
  3. python+vue 陆丰市医院分诊管理系统
  4. android手机时间自动同步
  5. 快手诈骗违规封禁答题6道题
  6. ab压力测试命令及参数详解
  7. 云防护是什么?为何使用云防护
  8. vue环境简单实现动态瀑布流效果
  9. ArcGIS JS API popup弹窗
  10. php 支付宝 扫码 源码,PHP微信扫码+PHP支付宝源码