You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
45 lines
1.0 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"regexp" |
|
"strings" |
|
"time" |
|
|
|
search "go-common/app/interface/openplatform/article/model/search" |
|
"go-common/library/log" |
|
) |
|
|
|
const _sourceType = "article" |
|
|
|
// Segment . |
|
func (s *Service) Segment(c context.Context, id int32, content string, withTag int, remarks string) (keywords []string, err error) { |
|
var ( |
|
source = _sourceType |
|
trackid = int32(time.Now().Unix()) |
|
res *search.TagboxResponse |
|
) |
|
if withTag == 1 { |
|
content = strings.Replace(content, " ", " ", -1) |
|
rule := "\\<[\\S\\s]+?\\>" |
|
reg, _ := regexp.Compile(rule) |
|
content = reg.ReplaceAllString(content, "") |
|
} |
|
req := &search.TagboxRequest{ |
|
Id: &id, |
|
SourceType: &source, |
|
Content: &content, |
|
Trackid: &trackid, |
|
Remarks: &remarks, |
|
} |
|
if res, err = s.searchRPC.Segment(c, req); err != nil { |
|
log.Error("s.Segment error(%+v), params(%+v)", err, req) |
|
return |
|
} |
|
if *res.ExecCode != int32(0) { |
|
log.Error("creation: s.segment id(%d), code(%d)", id, res.ExecCode) |
|
return |
|
} |
|
keywords = res.GetKeywords() |
|
return |
|
}
|
|
|