IKAnalyzer基于lucene2.0版本API开发

使用说明:
IKAnalyzer
基于lucene2.0 版本API 开发,实现了以词典分词为基础的正反向全切分算法,是Lucene Analyzer 接口的实现,代码使用例子如下:

  1.  

    import org.mira.lucene.analysis.IK_CAnalyzer <------- 引用类

    import .....

     

    public class IKAnalyzerTest extends TestCase {

     

       RAMDirectory directory;

       private IndexSearcher searcher;

     

       public void setUp() throws Exception {

     

         directory = new RAMDirectory();

         IndexWriter writer = new IndexWriter(directory,

                          new IK_CAnalyzer(), <------- 实例化类

                              true);

     

         Document doc = new Document();

         doc.add(Field.Keyword("title", " 中文分词测试"));

         doc.add(Field.Text("description", "Illidium Space Modulator"));

         writer.addDocument(doc);

         writer.close();

         searcher = new IndexSearcher(directory);

      }

     

      public void testTermQuery() throws Exception {

        Query query = new TermQuery(new Term("title", " 中文分词"));

        Hits hits = searcher.search(query);

        assertEquals(1, hits.length());

      }

    }



    分词效果测试,命令行如下:
    java -classpath IKAnalyzer.jar;lucene-core-2.0.0.jar org.mira.lucene.analysis.IK_CAnalyzer
    中华人民共和国香港特别行政区

    性能与特性:
    1.
    正向全切分算法,42 万汉字字符/ 每秒的处理能力(IBM ThinkPad 酷睿I 1.6G 1G 内存 WinXP
    2.
    对数量词、地名、路名的优化处理
    3.
    对未知词汇采用自识别结合二元切分算法,确保搜索召回率

    V 2.0.2
    修订 Bata 版对二元切分的缺陷

    正向全切分分词器:org.mira.lucene.analysis.IK_CAnalyzer (适合建索引时使用)

    正向最大全切分分词器:org.mira.lucene.analysis.MIK_CAnalyzer (适合用户输入检索时使用)

    下面演示 正向最大全切分分词器 效果:

    例子:中华人民共和国香港特别行政区
    0 - 7 =
    中华人民共和国
    7 - 14 =
    香港特别行政区


    例子:据路透社报道,印度尼西亚社会事务部一官员星期二(29) 表示,日惹市附近当地时间27 日晨553 分发

    生的里氏6.2 级地震已经造成至少5427 人死亡?20000 余人受伤,近20 万人无家可归。
    1 - 4 =
    路透社
    4 - 6 =
    报道
    7 - 12 =
    印度尼西亚
    12 - 14 =
    社会
    14 - 17 =
    事务部
    17 - 18 =

    18 - 20 =
    官员
    20 - 23 =
    星期二
    24 - 27 = 29

    28 - 30 =
    表示
    31 - 34 =
    日惹市
    34 - 36 =
    附近
    36 - 40 =
    当地时间
    40 - 43 = 27

    43 - 44 =

    44 - 46 = 5

    46 - 49 = 53

    48 - 50 =
    分发
    49 - 51 =
    发生
    52 - 54 =
    里氏
    54 - 58 = 6.2

    58 - 60 =
    地震
    60 - 62 =
    已经
    62 - 64 =
    造成
    64 - 66 =
    至少
    66 - 71 = 5427

    71 - 73 =
    死亡
    74 - 79 = 20000
    79 - 81 =
    余人
    81 - 83 =
    受伤
    84 - 85 =

    85 - 89 = 20
    万人
    89 - 93 =
    无家可归

    import org.mira.lucene.analysis.IK_CAnalyzer <-------  引用类  
   import .....  
      
   public class IKAnalyzerTest extends TestCase {  
     
      RAMDirectory directory;  
     private IndexSearcher searcher;  
     
      public void setUp() throws Exception {  
    
        directory = new RAMDirectory();  
        IndexWriter writer = new IndexWriter(directory,  
                         new IK_CAnalyzer(), <-------  实例化类  
                             true);  
     
        Document doc = new Document();  
        doc.add(Field.Keyword("title", " 中文分词测试"));  
        doc.add(Field.Text("description", "Illidium Space Modulator"));  
        writer.addDocument(doc);  
        writer.close();  
       searcher = new IndexSearcher(directory);  
     }  
     
     public void testTermQuery() throws Exception {  
       Query query = new TermQuery(new Term("title", " 中文分词"));  
       Hits hits = searcher.search(query);  
       assertEquals(1, hits.length());  
     }  
   }  
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值