fix badword

This commit is contained in:
y_fujita 2015-11-11 19:29:40 +09:00
parent 5175add5a8
commit 5c7875189a
2 changed files with 25 additions and 41 deletions

View file

@ -39,6 +39,7 @@ import org.codelibs.fess.app.web.CrudMode;
import org.codelibs.fess.app.web.base.FessAdminAction;
import org.codelibs.fess.es.config.exentity.SuggestBadWord;
import org.codelibs.fess.exception.FessSystemException;
import org.codelibs.fess.helper.SuggestHelper;
import org.codelibs.fess.helper.SystemHelper;
import org.dbflute.optional.OptionalEntity;
import org.dbflute.optional.OptionalThing;
@ -66,6 +67,8 @@ public class AdminSuggestbadwordAction extends FessAdminAction {
private SystemHelper systemHelper;
@Resource
protected DynamicProperties crawlerProperties;
@Resource
protected SuggestHelper suggestHelper;
// ===================================================================================
// Hook
@ -225,6 +228,7 @@ public class AdminSuggestbadwordAction extends FessAdminAction {
validate(form, messages -> {}, toEditHtml());
createSuggestBadWord(form).ifPresent(entity -> {
suggestBadWordService.store(entity);
suggestHelper.addBadWord(entity.getSuggestWord());
saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL));
}).orElse(() -> {
throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL), toEditHtml());
@ -238,6 +242,7 @@ public class AdminSuggestbadwordAction extends FessAdminAction {
validate(form, messages -> {}, toEditHtml());
createSuggestBadWord(form).ifPresent(entity -> {
suggestBadWordService.store(entity);
suggestHelper.storeAllBadWords();
saveInfo(messages -> messages.addSuccessCrudUpdateCrudTable(GLOBAL));
}).orElse(() -> {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, form.id), toEditHtml());
@ -252,6 +257,7 @@ public class AdminSuggestbadwordAction extends FessAdminAction {
final String id = form.id;
suggestBadWordService.getSuggestBadWord(id).ifPresent(entity -> {
suggestBadWordService.delete(entity);
suggestHelper.deleteBadWord(entity.getSuggestWord());
saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL));
}).orElse(() -> {
throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), toEditHtml());
@ -297,6 +303,7 @@ public class AdminSuggestbadwordAction extends FessAdminAction {
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(oFile), enc));
suggestBadWordService.importCsv(reader);
suggestHelper.storeAllBadWords();
} catch (final Exception e) {
throw new FessSystemException("Failed to import data.", e);
} finally {

View file

@ -159,7 +159,7 @@ public class SuggestHelper {
}
public void refreshWords() {
deleteAllBadWord();
deleteAllBadWords();
storeAllElevateWords();
}
@ -218,59 +218,36 @@ public class SuggestHelper {
// }
}
public void deleteAllBadWord() {
public void deleteAllBadWords() {
final List<SuggestBadWord> list = suggestBadWordBhv.selectList(cb -> {
cb.query().matchAll();
});
final Set<String> badWords = new HashSet<String>();
final Set<String> badWords = new HashSet<>();
for (final SuggestBadWord suggestBadWord : list) {
final String word = suggestBadWord.getSuggestWord();
badWords.add(word);
}
// TODO
// suggestService.updateBadWords(badWords);
// suggestService.deleteBadWords();
// suggestService.commit();
suggester.settings().badword().deleteAll();
}
/*
public void updateSolrBadwordFile() {
suggestBadWordBhv.selectList(cb -> {
public void storeAllBadWords() {
deleteAllBadWords();
final List<SuggestBadWord> list = suggestBadWordBhv.selectList(cb -> {
cb.query().matchAll();
});
final File dir = new File(System.getProperty("catalina.home").replace("¥", "/") + "/" + badwordFileDir);
if (!dir.exists() || !dir.isDirectory()) {
logger.warn(dir.getAbsolutePath() + " does not exist.");
return;
for (final SuggestBadWord suggestBadWord : list) {
final String word = suggestBadWord.getSuggestWord();
suggester.indexer().addBadWord(word);
}
// TODO
// final File file = new File(dir, SuggestConstants.BADWORD_FILENAME);
// BufferedWriter bw = null;
// try {
// if (!file.exists()) {
// file.createNewFile();
// }
// bw = new BufferedWriter(new FileWriter(file, false));
// for (final SuggestBadWord suggestBadWord : list) {
// bw.write(suggestBadWord.getSuggestWord());
// bw.newLine();
// }
// bw.close();
// } catch (final IOException e) {
// logger.warn("Failed to update badword file.", e);
// } finally {
// if (bw != null) {
// try {
// bw.close();
// } catch (final Exception e2) {
// //ignore
// }
// }
// }
}
*/
public void addBadWord(final String badWord) {
suggester.indexer().addBadWord(badWord);
}
public void deleteBadWord(final String badWord) {
suggester.indexer().deleteBadWord(badWord);
}
protected boolean isContentField(final String field) {
for (final String contentField : contentFieldNames) {