|
@@ -19,7 +19,6 @@ import (
|
|
|
"time"
|
|
|
|
|
|
"github.com/go-xweb/httpsession"
|
|
|
- . "github.com/thinxer/go-word2vec"
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
|
)
|
|
@@ -33,14 +32,8 @@ const (
|
|
|
bidSearch_sort = `{"publishtime":-1}`
|
|
|
)
|
|
|
|
|
|
-var M *Model
|
|
|
-var recomKWChan chan bool = make(chan bool, 1)
|
|
|
var listlock = &sync.Mutex{}
|
|
|
|
|
|
-func init() {
|
|
|
- M, _ = Load("./zb.bin")
|
|
|
-}
|
|
|
-
|
|
|
//剑鱼标讯推送三级页点赞暂弃 改成剑鱼标讯实验室点赞功能
|
|
|
func (m *Front) Praise() error {
|
|
|
defer util.Catch()
|
|
@@ -625,74 +618,8 @@ func wxvisitD(sid, userId string) (objdata map[string]interface{}) {
|
|
|
return obj
|
|
|
}
|
|
|
func (f *Front) GetRecomKWs() {
|
|
|
- maxCount := 500
|
|
|
- recomKWChan <- true
|
|
|
- defer func() {
|
|
|
- <-recomKWChan
|
|
|
- }()
|
|
|
- value := f.GetString("value")
|
|
|
count, _ := f.GetInteger("count")
|
|
|
- ves := strings.Split(value, " ")
|
|
|
- var pairs []map[string]interface{}
|
|
|
- for _, v := range ves {
|
|
|
- Pw, _ := M.MostSimilar(strings.Split(v, "+"), []string{}, maxCount)
|
|
|
- arr := generateRandomNumber(0, maxCount, count)
|
|
|
- for k, p := range Pw {
|
|
|
- sim := p.Sim
|
|
|
- word := p.Word
|
|
|
- // if sim < float32(config.Sysconfig["recommendThreshold"].(float64)) {
|
|
|
- // continue
|
|
|
- // }
|
|
|
- if !isinByInt(k, arr) {
|
|
|
- continue
|
|
|
- }
|
|
|
- if strings.HasSuffix(word, "路") || public.DealString(word) {
|
|
|
- continue
|
|
|
- }
|
|
|
- pairs = append(pairs, map[string]interface{}{
|
|
|
- "sim": sim,
|
|
|
- "word": word,
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- f.ServeJson(pairs)
|
|
|
-}
|
|
|
-
|
|
|
-//随机数查询
|
|
|
-func generateRandomNumber(start int, end int, count int) []int {
|
|
|
- //范围检查
|
|
|
- if end < start || (end-start) < count {
|
|
|
- return nil
|
|
|
- }
|
|
|
- //存放结果的slice
|
|
|
- nums := make([]int, 0)
|
|
|
- //随机数生成器,加入时间戳保证每次生成的随机数不一样
|
|
|
- r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
|
- for len(nums) < count {
|
|
|
- //生成随机数
|
|
|
- num := r.Intn((end - start)) + start
|
|
|
- //查重
|
|
|
- exist := false
|
|
|
- for _, v := range nums {
|
|
|
- if v == num {
|
|
|
- exist = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- if !exist {
|
|
|
- nums = append(nums, num)
|
|
|
- }
|
|
|
- }
|
|
|
- return nums
|
|
|
-}
|
|
|
-
|
|
|
-func isinByInt(i int, arr []int) bool {
|
|
|
- for _, v := range arr {
|
|
|
- if i == v {
|
|
|
- return true
|
|
|
- }
|
|
|
- }
|
|
|
- return false
|
|
|
+ f.ServeJson(public.RecomKws.GetRecomKws(f.GetString("value"), count))
|
|
|
}
|
|
|
|
|
|
//记录用户行为--推荐关键词
|