123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- package main
- import (
- "qfw/util"
- "qfw/util/mongodb"
- "qfw/util/redis"
- "sync"
- "time"
- "gopkg.in/mgo.v2/bson"
- )
- const (
- REDISIDS = "ids"
- REDISKEYS = "keys"
- INFOID = "info"
- INFOTIMEOUT = 86400 * 30
- )
- var (
- Sysconfig map[string]interface{}
- MQFW mongodb.MongodbSim
- extractColl, projectColl string
- lenprojectname int
- MultiThread chan bool
- IdLock = &sync.Mutex{}
- PncbMayLock = &sync.Mutex{}
- MegerFieldsLen *MegerFields
- //三组lock,对应的(PNKey)key为项目名称,值对应的是此项目名称对应的项目id数组
- PNKey, PCKey, PBKey = NewKeyMap(), NewKeyMap(), NewKeyMap()
- PNKeyMap, PCKeyMap, PBKeyMap = sync.Map{}, sync.Map{}, sync.Map{}
- currentMegerTime int64 //合并项目的时间位置,用来清理几个月之前的项目
- currentMegerCount int //合并项目的计数,用来定时清理
- )
- type MegerFields struct {
- ProjectNamelen int
- ProjectCodelen int
- }
- type KeyMap struct {
- Lock sync.Mutex
- Map map[string]*Key
- }
- type Key struct {
- Arr *[]string
- Lock *sync.Mutex
- }
- func NewKeyMap() *KeyMap {
- return &KeyMap{
- Map: map[string]*Key{},
- }
- }
- func init() {
- initarea()
- util.ReadConfig(&Sysconfig)
- MultiThread = make(chan bool, util.IntAllDef(Sysconfig["thread"], 200))
- lenprojectname = util.IntAllDef(Sysconfig["lenprojectname"], 20) - 1
- megerfields, _ := Sysconfig["megerfields"].(map[string]interface{})
- MegerFieldsLen = &MegerFields{
- ProjectNamelen: util.IntAllDef(megerfields["projectlen"], 5),
- ProjectCodelen: util.IntAllDef(megerfields["projectcodelen"], 8),
- }
- redis.InitRedisBySize(Sysconfig["redisaddrs"].(string), util.IntAllDef(Sysconfig["redisPoolSize"], 100), 30, 300)
- MQFW = mongodb.MongodbSim{
- MongodbAddr: Sysconfig["mongodbServers"].(string),
- Size: util.IntAll(Sysconfig["mongodbPoolSize"]),
- DbName: Sysconfig["mongodbName"].(string),
- }
- MQFW.InitPool()
- extractColl = Sysconfig["extractColl"].(string)
- projectColl = Sysconfig["projectColl"].(string)
- }
- func main() {
- RunFullData()
- time.Sleep(99999 * time.Hour)
- }
- func NewPushInfo(tmp map[string]interface{}) bson.M {
- return bson.M{
- "comeintime": tmp["comeintime"],
- "publishtime": tmp["publishtime"],
- "title": tmp["title"],
- "toptype": tmp["toptype"],
- "subtype": tmp["subtype"],
- "infoformat": tmp["infoformat"],
- "infoid": util.BsonIdToSId(tmp["_id"]),
- "href": tmp["href"],
- "area": tmp["area"],
- "city": tmp["city"],
- "cresult": tmp["cresult"],
- "score": tmp["score"],
- }
- }
|