diff --git a/src/main/java/org/codelibs/fess/exec/SuggestCreator.java b/src/main/java/org/codelibs/fess/exec/SuggestCreator.java index 37606af086a3b2738b0b2727036888ffc0e6bd17..92061ade6ec28db885037912478bd45e516a712a 100644 --- a/src/main/java/org/codelibs/fess/exec/SuggestCreator.java +++ b/src/main/java/org/codelibs/fess/exec/SuggestCreator.java @@ -187,55 +187,66 @@ public class SuggestCreator { } private int create() { - if (!ComponentUtil.getFessConfig().isSuggestDocuments()) { - logger.info("Skip create suggest document."); + if (!ComponentUtil.getFessConfig().isSuggestDocuments() && !ComponentUtil.getFessConfig().isSuggestSearchLog()) { + logger.info("Skipped to create new suggest index."); return 0; } - logger.info("Start create suggest document."); - - final AtomicInteger result = new AtomicInteger(1); - final CountDownLatch latch = new CountDownLatch(1); - final SuggestHelper suggestHelper = ComponentUtil.getSuggestHelper(); - logger.info("Create update index."); + logger.info("Creating new suggest index."); suggestHelper.suggester().createNextIndex(); - logger.info("Store all bad words."); + logger.info("Storing all bad words."); suggestHelper.storeAllBadWords(true); - logger.info("Store all elevate words."); + logger.info("Storing all elevate words."); suggestHelper.storeAllElevateWords(true); - logger.info("Parse words from indexed documents."); - suggestHelper.indexFromDocuments(ret -> { - logger.info("Success index from documents."); - result.set(0); - latch.countDown(); - }, t -> { - logger.error("Failed to update suggest index.", t); - latch.countDown(); - }); + final AtomicInteger exitCode = new AtomicInteger(0); - try { - latch.await(); - } catch (final InterruptedException ignore) { - if (logger.isDebugEnabled()) { - logger.debug("Interrupted.", ignore); + if (ComponentUtil.getFessConfig().isSuggestDocuments()) { + final CountDownLatch latch = new CountDownLatch(1); + + logger.info("Parsing words from indexed documents."); + suggestHelper.indexFromDocuments(ret -> { + logger.info("Success indexing from documents."); + latch.countDown(); + }, t -> { + logger.error("Failed to update suggest index.", t); + exitCode.set(1); + latch.countDown(); + }); + + try { + latch.await(); + } catch (final InterruptedException ignore) { + if (logger.isDebugEnabled()) { + logger.debug("Interrupted.", ignore); + } + exitCode.set(1); } } - logger.info("Store search logs."); - suggestHelper.storeSearchLog(); + if (ComponentUtil.getFessConfig().isSuggestSearchLog()) { + logger.info("Parsing words from search logs."); + try { + suggestHelper.storeSearchLog(); + } catch (final Exception e) { + if (logger.isDebugEnabled()) { + logger.debug("Failed to update suggest index.", e); + } + exitCode.set(1); + } + } - logger.info("Switch indices."); + logger.info("Replacing new suggest index."); suggestHelper.suggester().switchIndex(); - logger.info("Remove old indices."); + logger.info("Removing old indices."); suggestHelper.suggester().removeDisableIndices(); - return result.get(); + return exitCode.get(); } private int purge(final LocalDateTime time) {