|
@@ -431,11 +431,14 @@ func ClearUserCache(middleground *Middleground, positionId int64) {
|
|
|
}
|
|
|
|
|
|
// 关键词分词处理
|
|
|
-func KeywordsProcessing(keywords, sep string) string {
|
|
|
+func KeywordsProcessing(keywords, originalWord, sep string) string {
|
|
|
keywords = MatchSpace.ReplaceAllString(keywords, " ")
|
|
|
if keywords == "" || len(strings.Split(keywords, sep)) == 1 {
|
|
|
return keywords
|
|
|
}
|
|
|
+ if originalWord == "" {
|
|
|
+ originalWord = strings.ReplaceAll(keywords, sep, "")
|
|
|
+ }
|
|
|
var newWords = make([]string, 0, 0)
|
|
|
if keywords != "" && len(strings.Split(keywords, sep)) > 1 {
|
|
|
var words = strings.Split(keywords, sep)
|
|
@@ -449,32 +452,32 @@ func KeywordsProcessing(keywords, sep string) string {
|
|
|
//compare
|
|
|
if k == 0 { //first
|
|
|
newWord := v + words[k+1]
|
|
|
- if strings.Contains(keywords, newWord) { //组合后 必须包含
|
|
|
+ if strings.Contains(originalWord, newWord) { //组合后 必须包含
|
|
|
words[k+1] = newWord
|
|
|
}
|
|
|
} else if k == len(words)-1 { //last
|
|
|
newWord := newWords[len(newWords)-1] + v
|
|
|
- if strings.Contains(keywords, newWord) {
|
|
|
+ if strings.Contains(originalWord, newWord) {
|
|
|
newWords[len(newWords)-1] = newWord
|
|
|
}
|
|
|
} else {
|
|
|
if len([]rune(newWords[len(newWords)-1])) < len([]rune(words[k+1])) {
|
|
|
newWord := newWords[len(newWords)-1] + v
|
|
|
- if strings.Contains(keywords, newWord) {
|
|
|
+ if strings.Contains(originalWord, newWord) {
|
|
|
newWords[len(newWords)-1] = newWord
|
|
|
} else {
|
|
|
newWord = v + words[k+1]
|
|
|
- if strings.Contains(keywords, newWord) { //组合后 必须包含
|
|
|
+ if strings.Contains(originalWord, newWord) { //组合后 必须包含
|
|
|
words[k+1] = newWord
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
newWord := v + words[k+1]
|
|
|
- if strings.Contains(keywords, newWord) { //组合后 必须包含
|
|
|
+ if strings.Contains(originalWord, newWord) { //组合后 必须包含
|
|
|
words[k+1] = newWord
|
|
|
} else {
|
|
|
newWord = newWords[len(newWords)-1] + v
|
|
|
- if strings.Contains(keywords, newWord) {
|
|
|
+ if strings.Contains(originalWord, newWord) {
|
|
|
newWords[len(newWords)-1] = newWord
|
|
|
}
|
|
|
}
|