1 41 package com.mvnforum.search.member; 42 43 import java.io.IOException ; 44 import java.util.*; 45 46 import com.mvnforum.db.DAOFactory; 47 import com.mvnforum.db.MemberBean; 48 import org.apache.commons.logging.Log; 49 import org.apache.commons.logging.LogFactory; 50 import org.apache.lucene.index.IndexWriter; 51 52 55 public class RebuildMemberIndexTask extends TimerTask 56 { 57 private static Log log = LogFactory.getLog(RebuildMemberIndexTask.class); 58 59 public static final int MERGE_FACTOR = 20; 60 61 private int maxMemberID = 0; 62 63 66 RebuildMemberIndexTask(int maxMemberID) { 67 this.maxMemberID = maxMemberID; 68 } 69 70 73 public void run() { 74 long start = System.currentTimeMillis(); 75 76 Collection companies = null; 77 try { 78 companies = DAOFactory.getMemberDAO().getMembers(); 79 } catch (Exception ex) { 80 log.error("RebuildMemberIndexTask.run : cannot get all companies from database for indexing", ex); 81 } 82 83 if (companies == null) return; 84 85 89 IndexWriter writer = null; 90 try { 91 writer = MemberIndexer.getIndexWriter(true); 92 writer.mergeFactor = MERGE_FACTOR; 93 94 int i = 0; 95 for (Iterator iter = companies.iterator(); iter.hasNext(); ) { 96 MemberBean memberBean = (MemberBean) iter.next(); 97 MemberIndexer.doIndexMember(memberBean, writer); 98 i++; 99 } 100 writer.optimize(); 101 log.info("Rebuilding index finished successfully! " + i + " member(s) indexed"); 102 } catch (Exception e) { 103 log.error("Error while rebuilding index", e); 104 } finally { 105 try { 106 if (writer != null) { 107 writer.close(); 108 } 109 } catch (IOException ignore) { 110 } 111 } 112 log.info("RebuildMemberIndexTask took " + (System.currentTimeMillis() - start) + " ms"); 113 } 114 } 115 | Popular Tags |