feat-IRONFANS-117-Robin #438

Merged
chenhao merged 2 commits from feat-IRONFANS-117-Robin into test 2024-05-14 23:02:20 +08:00
1 changed files with 25 additions and 8 deletions

View File

@ -8,6 +8,7 @@ import (
"service/dbstruct"
"service/library/elasticsearchdb"
"service/library/logger"
"unicode"
"service/api/consts"
streameracctproto "service/api/proto/streamer_acct/proto"
@ -70,10 +71,18 @@ func (es *ElasticSearch) GetStreamerAcctListFuzzilyByName(ctx *gin.Context, req
var nameClause elastic.Query
// 查询文字长度小于短语匹配的进行Term匹配否则进行短语匹配
if len(req.Name) < consts.StreamerAcct_MatchPhraseLen {
nameClause = elastic.NewTermQuery("name", req.Name)
len := 0
for _, char := range req.Name {
if unicode.Is(unicode.Han, char) {
len++
} else {
len++
}
}
if len < consts.StreamerAcct_MatchPhraseLen {
nameClause = elastic.NewTermQuery("name.short_char", req.Name)
} else {
nameClause = elastic.NewMatchPhraseQuery("name", req.Name)
nameClause = elastic.NewMatchPhraseQuery("name.long_char", req.Name)
}
query := elastic.NewBoolQuery()
delFlagClause := elastic.NewMatchQuery("del_flag", 0)
@ -105,12 +114,20 @@ func (es *ElasticSearch) GetStreamerAcctListFuzzilyByUserId(ctx *gin.Context, re
var nameClause elastic.Query
var userIdStringClause elastic.Query
// 查询文字长度小于短语匹配的进行Term匹配否则进行短语匹配
if len(req.UserIdString) < consts.StreamerAcct_MatchPhraseLen {
nameClause = elastic.NewTermQuery("name", req.UserIdString)
userIdStringClause = elastic.NewTermQuery("user_id_string", req.UserIdString)
len := 0
for _, char := range req.UserIdString {
if unicode.Is(unicode.Han, char) {
len++
} else {
len++
}
}
if len < consts.StreamerAcct_MatchPhraseLen {
nameClause = elastic.NewTermQuery("name.short_char", req.UserIdString)
userIdStringClause = elastic.NewTermQuery("user_id_string.short_char", req.UserIdString)
} else {
nameClause = elastic.NewMatchQuery("name", req.UserIdString)
userIdStringClause = elastic.NewMatchPhraseQuery("user_id_string", req.UserIdString)
nameClause = elastic.NewMatchPhraseQuery("name.long_char", req.UserIdString)
userIdStringClause = elastic.NewMatchPhraseQuery("user_id_string.long_char", req.UserIdString)
}
orClause := elastic.NewBoolQuery().Should(nameClause, userIdStringClause)
query := elastic.NewBoolQuery().Must()