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

📄 rebuilduserindexoperation.java

📁 这个weblogging 设计得比较精巧
💻 JAVA
字号:
/* * Created on Jul 16, 2003 * * Authored by: Mindaugas Idzelis  (min@idzelis.com) */package org.roller.business.search.operations;import java.io.IOException;import java.text.MessageFormat;import java.util.Date;import java.util.Iterator;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.Term;import org.roller.RollerException;import org.roller.business.IndexManagerImpl;import org.roller.business.search.FieldConstants;import org.roller.business.search.IndexUtil;import org.roller.model.Roller;import org.roller.model.RollerFactory;import org.roller.model.WeblogManager;import org.roller.pojos.WeblogEntryData;import org.roller.pojos.WebsiteData;/** * @author aim4min * * An index operation that rebuilds a given users index (or all indexes.) */public class RebuildUserIndexOperation extends WriteToIndexOperation{    //~ Static fields/initializers =============================================    private static Log mLogger =        LogFactory.getFactory().getInstance(RebuildUserIndexOperation.class);    //~ Instance fields ========================================================    private WebsiteData website;    //~ Constructors ===========================================================    /**     * Create a new operation that will recreate an index.     *     * @param website The website to rebuild the index for, or null for all users.     */    public RebuildUserIndexOperation(IndexManagerImpl mgr, WebsiteData website)    {        super(mgr);        this.website = website;    }    //~ Methods ================================================================    /* (non-Javadoc)     * @see java.lang.Runnable#run()     */    public void doRun()    {        Date start = new Date();        IndexReader reader = beginDeleting();        try        {            if (reader != null)            {                String userName = null;                if (website != null && website.getUser() != null)                {                    userName = website.getUser().getUserName();                }                Term tUsername =                    IndexUtil.getTerm(FieldConstants.USERNAME, userName);                if (tUsername != null)                {                    reader.delete(tUsername);                }                else                {                    Term all =                        IndexUtil.getTerm(FieldConstants.CONSTANT,                                          FieldConstants.CONSTANT_V);                    reader.delete(all);                }            }        }        catch (IOException e)        {            mLogger.info("Problems deleting doc from index", e);        }        finally        {            endDeleting();        }        IndexWriter writer = beginWriting();        Roller roller = RollerFactory.getRoller();        try        {            roller.begin();            if (writer != null)            {                WeblogManager weblogManager = roller.getWeblogManager();                List entries = weblogManager .getWeblogEntries(                    website,                 // userName                    null,                   // startDate                    new Date(),             // endDate // don't index 'future' entries                    null,                   // catName                    WeblogManager.PUB_ONLY, // status                    null);                    for (Iterator wbItr = entries.iterator(); wbItr.hasNext();)                 {                    WeblogEntryData entry = (WeblogEntryData) wbItr.next();                    writer.addDocument(getDocument(entry));                    mLogger.debug(                       MessageFormat.format("Indexed entry {0}: {1}",                       new Object[] {entry.getPubTime(), entry.getAnchor()}));                }            }        }        catch (Exception e)        {            mLogger.error("ERROR adding doc to index", e);        }        finally        {            endWriting();            if (roller != null) roller.release();        }        Date end = new Date();        double length = (end.getTime() - start.getTime()) / (double) 1000;        if (website == null)        {            mLogger.info(               "Completed rebuilding index for all users in '" + length + "' secs");        }        else        {            mLogger.info("Completed rebuilding index for '" +                 website.getUser().getUserName() + "' in '" + length + "' seconds");        }    }}

⌨️ 快捷键说明

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