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 =
      无家可归

  2.     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());  
         }  
       }  
    
     

你可能感兴趣的:(算法,IBM,Lucene)