46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
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
|
|
}
|