in app/src/main/java/org/apache/roller/weblogger/business/search/lucene/RebuildWebsiteIndexOperation.java [77:155]
public void doRun() {
Date start = new Date();
// since this operation can be run on a separate thread we must treat
// the weblog object passed in as a detached object which is proned to
// lazy initialization problems, so requery for the object now
if (this.website != null) {
logger.debug("Reindexining weblog " + website.getHandle());
try {
this.website = roller.getWeblogManager().getWeblog(
this.website.getId());
} catch (WebloggerException ex) {
logger.error("Error getting website object", ex);
return;
}
} else {
logger.debug("Reindexining entire site");
}
IndexWriter writer = beginWriting();
try {
if (writer != null) {
// Delete Doc
Term tWebsite = null;
if (website != null) {
tWebsite = IndexUtil.getTerm(FieldConstants.WEBSITE_HANDLE,
website.getHandle());
}
if (tWebsite != null) {
writer.deleteDocuments(tWebsite);
} else {
Term all = IndexUtil.getTerm(FieldConstants.CONSTANT,
FieldConstants.CONSTANT_V);
writer.deleteDocuments(all);
}
// Add Doc
WeblogEntryManager weblogManager = roller
.getWeblogEntryManager();
WeblogEntrySearchCriteria wesc = new WeblogEntrySearchCriteria();
wesc.setWeblog(website);
wesc.setStatus(PubStatus.PUBLISHED);
List<WeblogEntry> entries = weblogManager.getWeblogEntries(wesc);
logger.debug("Entries to index: " + entries.size());
for (WeblogEntry entry : entries) {
writer.addDocument(getDocument(entry));
logger.debug(MessageFormat.format(
"Indexed entry {0}: {1}",
entry.getPubTime(), entry.getAnchor()));
}
// release the database connection
roller.release();
}
} catch (Exception e) {
logger.error("ERROR adding/deleting doc to index", e);
} finally {
endWriting();
if (roller != null) {
roller.release();
}
}
Date end = new Date();
double length = (end.getTime() - start.getTime()) / (double) RollerConstants.SEC_IN_MS;
if (website == null) {
logger.info("Completed rebuilding index for all users in '"
+ length + "' secs");
} else {
logger.info("Completed rebuilding index for website handle: '"
+ website.getHandle() + "' in '" + length + "' seconds");
}
}