fix popularwords
This commit is contained in:
parent
68c601c965
commit
b7de7d9add
2 changed files with 26 additions and 7 deletions
|
@ -28,6 +28,7 @@ import javax.annotation.PostConstruct;
|
|||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType;
|
||||
import org.codelibs.fess.mylasta.direction.FessConfig;
|
||||
import org.codelibs.fess.suggest.exception.SuggesterException;
|
||||
import org.codelibs.fess.suggest.request.popularwords.PopularWordsRequestBuilder;
|
||||
import org.codelibs.fess.util.ComponentUtil;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -78,9 +79,12 @@ public class PopularWordHelper {
|
|||
stream(baseRoles).of(stream -> stream.forEach(role -> popularWordsRequestBuilder.addRole(role)));
|
||||
stream(baseFields).of(stream -> stream.forEach(field -> popularWordsRequestBuilder.addField(field)));
|
||||
stream(baseExcludes).of(stream -> stream.forEach(exclude -> popularWordsRequestBuilder.addExcludeWord(exclude)));
|
||||
popularWordsRequestBuilder.execute().then(r -> {
|
||||
r.getItems().stream().forEach(item -> wordList.add(item.getText()));
|
||||
}).error(t -> logger.warn("Failed to generate popular words.", t));
|
||||
try {
|
||||
popularWordsRequestBuilder.execute().getResponse().getItems().stream()
|
||||
.forEach(item -> wordList.add(item.getText()));
|
||||
} catch (SuggesterException e) {
|
||||
logger.warn("Failed to generate popular words.", e);
|
||||
}
|
||||
|
||||
return wordList;
|
||||
});
|
||||
|
|
|
@ -26,6 +26,8 @@ import java.util.Arrays;
|
|||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
@ -78,6 +80,8 @@ public class SuggestHelper {
|
|||
|
||||
protected PopularWordHelper popularWordHelper = null;
|
||||
|
||||
public long searchStoreIntervalMinute = 1;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
fessConfig = ComponentUtil.getFessConfig();
|
||||
|
@ -127,7 +131,7 @@ public class SuggestHelper {
|
|||
}
|
||||
|
||||
public void indexFromSearchLog(final List<SearchLog> searchLogList) {
|
||||
final Set<String> sessionIdSet = new HashSet<>();
|
||||
final Map<String, LocalDateTime> sessionIdMap = new HashMap<>();
|
||||
searchLogList.stream().forEach(
|
||||
searchLog -> {
|
||||
if (searchLog.getHitCount() == null
|
||||
|
@ -135,9 +139,20 @@ public class SuggestHelper {
|
|||
return;
|
||||
}
|
||||
|
||||
final String sessionId = searchLog.getUserSessionId();
|
||||
if (sessionId == null || sessionIdSet.contains(sessionId)) {
|
||||
final String sessionId;
|
||||
if (searchLog.getUserSessionId() != null) {
|
||||
sessionId = searchLog.getUserSessionId();
|
||||
} else {
|
||||
sessionId = searchLog.getClientIp() + '_' + searchLog.getSearchWord();
|
||||
}
|
||||
|
||||
final LocalDateTime requestedAt = searchLog.getRequestedAt();
|
||||
if (sessionId == null) {
|
||||
return;
|
||||
} else if (sessionIdMap.containsKey(sessionId)) {
|
||||
if (sessionIdMap.get(sessionId).plusMinutes(searchStoreIntervalMinute).isAfter(requestedAt)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
final StringBuilder sb = new StringBuilder(100);
|
||||
|
@ -171,7 +186,7 @@ public class SuggestHelper {
|
|||
if (fessConfig.isValidSearchLogPermissions(roles.toArray(new String[roles.size()]))) {
|
||||
suggester.indexer().indexFromSearchWord(sb.toString(), fields.toArray(new String[fields.size()]),
|
||||
tags.toArray(new String[tags.size()]), roles.toArray(new String[roles.size()]), 1, langs);
|
||||
sessionIdSet.add(sessionId);
|
||||
sessionIdMap.put(sessionId, requestedAt);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue