日期:2014-05-18  浏览次数:20694 次

初次使用lucene2.0的心得和疑问
这几天一直在看有关lucene的资料,在网上查了下,发现好多文章都是重复的,也有将的不错的文章,但大多例子都是基于lucene1.4.3的。本人刚接触lucene,在此一点小小的心得和疑问。请看下面:
lucene的基本特性可以参考:
<a   href= "http://www.yyhweb.com/Article.htm?cId=2&fId=3&aId=28 "> 初识lucene </a>
<a   href= "http://www.yyhweb.com/Article.htm?cId=2&fId=3&aId=46 "> Lucene基本使用介绍 </a>
网上大家对中文分词插件IK_CAnalyzer的评价不错,目前IK_CAnalyzer的最新版本是1.4,是在lucene2.0API的基础上开发的。本人下面的例子就是结合lucene2.0和IK_CAnalyzer使用的。

介绍:
例子是对lucene的简单使用,对“文章”的三个基本属性Id,title,content的索引和搜索。
通过ArticleBiz.getForumArt( "10 ");取得一个文章列表。
从此list里取得各文章属性建立索引。

public   class   IndexAndSearch{
      public   static   void   main(String[]   args)   throws   IOException,   ParseException{

    //RAMDirectory   directory   =   new   RAMDirectory();   //   将索引保存到内存中

      String   directory   =   "C:/index ";                           //   将索引保存到硬盘中
      if(!new   File(directory).exists())                          
            new   File(directory).mkdirs();

      //   IK_CAnalyzer的分词器
      MIK_CAnalyzer   mkAnalyzer   =   new   MIK_CAnalyzer();
      try{
                      //   取得文章列表,这部分省略了其与数据库的具体操作。
                      List   alist   =   ArticleBiz.getForumArt( "10 ");

                      //   生成一个IndexWriter,其作用是把每个Document   对象加到索引中来。
                      IndexWriter   writer   =   new   IndexWriter(directory,mkAnalyzer,true);
                      long   s   =   System.currentTimeMillis();//   计算开始时间

                      //   定义Document用来储存索引记录
                        Document   doc   =   null;

                  //   循环从文章列表里对每一篇文章进行索引并将其结果加到以上的writer   里
                      for(int   i=0;i <alist.size();i++){
                        doc   =   new   Document();
                        Article   curArt   =   (Article)   alist.get(i);
                        System.out.println( "index   of   : "+i+ "   the   id   is: "+curArt.getId()+ "   the   title   : "+curArt.getTitle());

                      // &nbs