📄 forumindex.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 + -