首页 | 网站地图 | RSS订阅 | 高级搜索 | 收藏本站
默认搜索       热门关键字: lucene  nutch  eee  sdD  dad
Google广告位置
Google AD
当前位置:搜索引擎>Lucene> 正文

  • lucene实例
  • 日期:2007-10-10   点击:   作者:   来源:   字体:[ ]
刚结束了一个项目,回头想了下整个开发流程,决定再总结下缓存问题及lucene(全文检索)的运用。

    首先来谈下lucene

    项目的service端运用spring+hibernate开发。其间用到lucene做全文检索。版本为2.2,分词用的是JE-Analysis1.5.1.MMAnalyzer.建立索引用到队列。

   我们先在blogservice里初始化索引路径,其实现是在spring配置文件里设置:

 <bean id="blogService" class="cn.shell.service.BlogService"
  parent="baseService">
  
  <property name="indexPathRoot"
   value="${webapp.root}WEB-INF/index/blog/">
  </property>
  
</bean>

   项目中主要是要求提高性能,所以采用队列来创建索引。List  waitToIndexList=new LinkedList();

   创建索引部分:

   IndexWriter indexWriter;

   IndexSearcher indexSearcher;

   创建新线程:Thread indexThread=new Thread(this);

   实例分词:   MMAnalyzer analyzer=new MMAnalyzer();

   初始化部分:

  public void init(){

                              File rp = new File(indexPathRoot);
  if (!rp.exists()) {
   rp.mkdirs();
  }
  File segments = new File(indexPathRoot + File.separator
    + "segments.gen");
  boolean bCreate = true;
  if (segments.exists()) {
   bCreate = false;
  }
  try {
   
   indexWriter = new IndexWriter(indexPathRoot, analyzer, bCreate);
   indexSearcher = new IndexSearcher(indexPathRoot);
  } catch (Exception e) {
   logger.error("init indexWriter fail", e);
  }
  indexThread.start();                      //启动线程

}

public void run(){

while (!indexThread.isInterrupted()) {
   if (!waitToIndexList.isEmpty()) {
    Blog blog = (Blog) waitToIndexList.remove(0);
    Document doc = new Document();
    doc.add(new Field("blogID", blog.getBlogID(), Field.Store.YES,
      Field.Index.UN_TOKENIZED));
    doc.add(new Field("title", blog.getTitle(), Field.Store.YES,
      Field.Index.TOKENIZED));
    doc.add(new Field("content", blog.getContent(),
      Field.Store.YES, Field.Index.TOKENIZED));
    doc.add(new Field("author", blog.getClientUser().getNickName(),
      Field.Store.YES, Field.Index.TOKENIZED));

    try {
     indexWriter.addDocument(doc);
     indexWriter.flush();
     indexWriter.optimize();
    } catch (Exception e) {
     logger.error("create index error", e);
    }

   }

   try {
    Thread.sleep(50);
   } catch (Exception e) {
    logger.error(e);
   }

  }}


共2页: 上一页 1 [2] 下一页
所有评论 关闭窗口↓ 打印本页 论坛讨论 返回列表
用户名: 新注册) 密码: 匿名评论 [所有评论]

评论内容:(不能超过250字,请自觉遵守互联网相关政策法规。

最新评论: