⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 forumindex.java

📁 一个jsp写的bbs
💻 JAVA
字号:
package com.laoer.bbscs.service.index;

import java.io.*;
import java.util.*;

import org.apache.commons.logging.*;
import org.apache.lucene.analysis.cw.*;
import org.apache.lucene.index.*;
import org.apache.lucene.store.*;
import com.laoer.bbscs.dao.*;
import com.laoer.bbscs.bean.Forum;
import com.laoer.bbscs.comm.*;
import com.laoer.bbscs.service.config.UserConfig;
import com.laoer.bbscs.exception.BbscsException;

/**
 * <p>Title: TianyiBBS</p>
 *
 * <p>Description: BBSCS</p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: Laoer.com</p>
 *
 * @author Laoer
 * @version 7.0
 */
public class ForumIndex {

  private static final Log logger = LogFactory.getLog(ForumIndex.class);

  private ForumDAO forumDAO;

  private UserConfig userConfig;

  public ForumIndex() {
  }

  public void createIndexs() throws BbscsException {
    logger.info("Index start...");
    File indexFilePath = this.getUserConfig().getIndexFilePath();
    logger.info("Index path:" + indexFilePath.toString());

    try {

      Directory directory;
      IndexWriter writer;

      if (this.getUserConfig().indexExist()) {
        directory = FSDirectory.getDirectory(indexFilePath, false);
        IndexReader reader = IndexReader.open(directory);

        if (reader.isLocked(directory)) {
          logger.info("Index file isLocked, unlock...");
          reader.unlock(directory);
        }

        List l = this.getForumDAO().findForumsByIndexStatus(Constant.INDEX_STATUS_NEED_DEL);
        logger.info("本次索引删除 " + l.size() + " 条数据");
        for (int i = 0; i < l.size(); i++) {
          Forum f = (Forum) l.get(i);
          Term term = new Term("docId", f.getId());
          reader.deleteDocuments(term);
          f.setIndexStatus(Constant.INDEX_STATUS_DELED);
          this.getForumDAO().saveForum(f);
        }

        l = this.getForumDAO().findForumsByIndexStatus(Constant.INDEX_STATUS_NEED_UPDTAE);
        logger.info("本次索引更新 " + l.size() + " 条数据");
        for (int i = 0; i < l.size(); i++) {
          Forum f = (Forum) l.get(i);
          Term term = new Term("docId", f.getId());
          reader.deleteDocuments(term);
          f.setIndexStatus(Constant.INDEX_STATUS_NO_INDEX);
          this.getForumDAO().saveForum(f);
        }
        reader.close();

        writer = new IndexWriter(directory, new CWordAnalyzer(), false);

      }
      else {
        directory = FSDirectory.getDirectory(indexFilePath, true);
        writer = new IndexWriter(directory, new CWordAnalyzer(), true);

      }

      List l = this.getForumDAO().findForumsByIndexStatus(Constant.INDEX_STATUS_NO_INDEX);
      logger.info("本次索引 " + l.size() + " 条数据");
      for (int i = 0; i < l.size(); i++) {
        Forum f = (Forum) l.get(i);
        writer.addDocument(ForumDocument.document(f));
        f.setIndexStatus(Constant.INDEX_STATUS_INDEXED);
        this.getForumDAO().saveForum(f);
      }
      writer.optimize();
      writer.close();

      logger.info("Index end...");
    }
    catch (IOException ex) {
      logger.error(ex);
      throw new BbscsException(ex);
    }

  }

  public ForumDAO getForumDAO() {
    return forumDAO;
  }

  public UserConfig getUserConfig() {
    return userConfig;
  }

  public void setForumDAO(ForumDAO forumDAO) {
    this.forumDAO = forumDAO;
  }

  public void setUserConfig(UserConfig userConfig) {
    this.userConfig = userConfig;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -