Chinaunix首页 | 论坛 | 博客
  • 博客访问: 500291
  • 博文数量: 1496
  • 博客积分: 79800
  • 博客等级: 大将
  • 技术积分: 9940
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 13:22
文章分类

全部博文(1496)

文章存档

2011年(1)

2008年(1495)

我的朋友

分类:

2008-09-09 13:30:12

    网上流行的lucene使用方法大部分是lucene1.4左右,而现在的lucene已经到了2.x,以下是lucene2.2.0的事例

     1.像往常的框架一样,自然需要将其所需的jar包导入

      导入lucene-core-2.2.0.jar(最新的jar)

    //---------------------------------------------------------

     2.创建索引(Index)

      public void createIndex(){

     File indexDir=new File("f:/lucene/"); //将索引写入到"f:/lucene/"下;

     long start=new Date().getTime();

     StandardAnalyzer sa=new StandardAnalyzer(); //创建标准分析器

     try {

      IndexWriter indexWriter=new IndexWriter(indexDir,sa,true); //需要Index写入器,(创建)

      indexWriter.setMergeFactor(100);

      indexWriter.setMaxMergeDocs(100);

      indexWriter.setMaxFieldLength(5000);

      while(rs.next()){

       Document doc=new Document(); //创建文档(document)对象,rs是recordset对象,事先已经从数据库取出!

       doc.add(new Field("productName",rs.getString("productName"),Field.Store.YES,Field.Index.TOKENIZED)); //为document添加好field

       doc.add(new Field("unitprice",rs.getString("unitprice"),Field.Store.YES,Field.Index.TOKENIZED));

       indexWriter.addDocument(doc); //别忘记,将document加到写入器indexWriter

      }

      indexWriter.optimize(); //进行优化

      indexWriter.close();//关闭

     } catch (CorruptIndexException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

     } catch (LockObtainFailedException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

     } catch (IOException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

     } catch (SQLException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

     }

     long end=new Date().getTime();

     System.out.println("索引创建完毕,用时:"+(end-start)+"毫秒");

    }

    //---------------------------------------------------------------

    3.创建检索方法(searcher)

     public Hits searcher(String queryString){

     Hits hits=null;

     try {

      IndexSearcher indexSearcher=new IndexSearcher("f:/lucene/"); //创建从"f:/lucene"检索数据的检索器

      String[] fields={"productName","unitprice"};

      QueryParser queryParser=new MultiFieldQueryParser(fields,new StandardAnalyzer()); //创建查询分析器

      Query query= queryParser.parse(queryString); //查询分析器解析 查询条件

      hits=indexSearcher.search(query);//检索器检索出所有符合条件的数据,封成hits返回.

      return hits;

     } catch (CorruptIndexException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

     } catch (IOException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

     } catch (ParseException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

     }

     return null;

    }

 

[1]   

【责编:landy】

--------------------next---------------------

阅读(110) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~