From a523664f3ae8826800041d135969fba15ccf8164 Mon Sep 17 00:00:00 2001 From: Leufolium Date: Tue, 14 May 2024 22:58:12 +0800 Subject: [PATCH 1/2] by Robin at 20240514 --- app/mix/dao/elasticsearch.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/app/mix/dao/elasticsearch.go b/app/mix/dao/elasticsearch.go index 3bee31ce..132bc100 100644 --- a/app/mix/dao/elasticsearch.go +++ b/app/mix/dao/elasticsearch.go @@ -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,7 +71,15 @@ func (es *ElasticSearch) GetStreamerAcctListFuzzilyByName(ctx *gin.Context, req var nameClause elastic.Query // 查询文字长度小于短语匹配的,进行Term匹配,否则进行短语匹配 - if len(req.Name) < consts.StreamerAcct_MatchPhraseLen { + 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", req.Name) } else { nameClause = elastic.NewMatchPhraseQuery("name", req.Name) @@ -105,7 +114,15 @@ func (es *ElasticSearch) GetStreamerAcctListFuzzilyByUserId(ctx *gin.Context, re var nameClause elastic.Query var userIdStringClause elastic.Query // 查询文字长度小于短语匹配的,进行Term匹配,否则进行短语匹配 - if len(req.UserIdString) < consts.StreamerAcct_MatchPhraseLen { + 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", req.UserIdString) userIdStringClause = elastic.NewTermQuery("user_id_string", req.UserIdString) } else { From 211bd4ba79fcdf86d82f43b367fe476e50272703 Mon Sep 17 00:00:00 2001 From: Leufolium Date: Tue, 14 May 2024 23:01:58 +0800 Subject: [PATCH 2/2] by Robin at 20240514 --- app/mix/dao/elasticsearch.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/mix/dao/elasticsearch.go b/app/mix/dao/elasticsearch.go index 132bc100..ca393f28 100644 --- a/app/mix/dao/elasticsearch.go +++ b/app/mix/dao/elasticsearch.go @@ -80,9 +80,9 @@ func (es *ElasticSearch) GetStreamerAcctListFuzzilyByName(ctx *gin.Context, req } } if len < consts.StreamerAcct_MatchPhraseLen { - nameClause = elastic.NewTermQuery("name", req.Name) + 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) @@ -123,11 +123,11 @@ func (es *ElasticSearch) GetStreamerAcctListFuzzilyByUserId(ctx *gin.Context, re } } if len < consts.StreamerAcct_MatchPhraseLen { - nameClause = elastic.NewTermQuery("name", req.UserIdString) - userIdStringClause = elastic.NewTermQuery("user_id_string", req.UserIdString) + 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()