refresh suggest words on init method

This commit is contained in:
yfujita 2014-10-27 05:33:38 +09:00
parent fafacb82c4
commit 93ffa2feb4
3 changed files with 45 additions and 10 deletions

View file

@ -5,7 +5,9 @@ import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.annotation.Resource;
@ -15,6 +17,8 @@ import jp.sf.fess.db.exbhv.SuggestBadWordBhv;
import jp.sf.fess.db.exbhv.SuggestElevateWordBhv;
import jp.sf.fess.db.exentity.SuggestBadWord;
import jp.sf.fess.db.exentity.SuggestElevateWord;
import jp.sf.fess.entity.PingResponse;
import jp.sf.fess.service.SearchService;
import jp.sf.fess.suggest.SuggestConstants;
import jp.sf.fess.suggest.service.SuggestService;
@ -26,6 +30,9 @@ public class SuggestHelper {
private static final Logger logger = LoggerFactory
.getLogger(SuggestHelper.class);
@Resource
protected SearchService searchService;
@Resource
protected SuggestService suggestService;
@ -37,6 +44,36 @@ public class SuggestHelper {
public String badwordFileDir = "./solr/core1/conf/";
public void init() {
final Thread th = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
final PingResponse response = searchService.ping();
final int status = response.getStatus();
if (status == 0) {
if (logger.isInfoEnabled()) {
logger.info("Solr server was availabled. Refresh suggest words.");
}
refreshWords();
break;
}
try {
Thread.sleep(1 * 1000);
} catch (final InterruptedException e) {
//ignore
}
}
}
});
th.start();
}
public void refreshWords() {
deleteAllBadWord();
storeAllElevateWords();
}
public void storeAllElevateWords() {
suggestService.deleteAllElevateWords();
@ -99,10 +136,13 @@ public class SuggestHelper {
final SuggestBadWordCB cb = new SuggestBadWordCB();
cb.query().setDeletedBy_IsNull();
final List<SuggestBadWord> list = suggestBadWordBhv.selectList(cb);
final Set<String> badWords = new HashSet<String>();
for (final SuggestBadWord suggestBadWord : list) {
final String word = suggestBadWord.getSuggestWord();
suggestService.deleteBadWord(word);
badWords.add(word);
}
suggestService.updateBadWords(badWords);
suggestService.deleteBadWords();
suggestService.commit();
}

View file

@ -293,6 +293,9 @@
</initMethod>
</component>
<component name="suggestHelper" class="jp.sf.fess.helper.SuggestHelper" />
<component name="suggestHelper" class="jp.sf.fess.helper.SuggestHelper">
<initMethod name="init">
</initMethod>
</component>
</components>

View file

@ -70,14 +70,6 @@
key="labels.suggest_bad_word_suggest_word" /></th>
<td><html:text property="suggestWord" style="width:98%;" /></td>
</tr>
<tr>
<th><bean:message key="labels.suggest_bad_word_target_role" /></th>
<td><html:text property="targetRole" style="width:98%;" /></td>
</tr>
<tr>
<th><bean:message key="labels.suggest_bad_word_target_label" /></th>
<td><html:text property="targetLabel" style="width:98%;" /></td>
</tr>
</tbody>
<tfoot>
<tr>