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
|
||
|
}
|