Browse Source

Merge branch 'dev2.1' of http://192.168.3.207:10080/qmx/qfw into dev2.1

zhangjinkun 7 years ago
parent
commit
631c957e2f

+ 1 - 0
common/src/github.com/go-gomail/gomail/smtp.go

@@ -59,6 +59,7 @@ func NewPlainDialer(host string, port int, username, password string) *Dialer {
 // should be closed when done using it.
 func (d *Dialer) Dial() (SendCloser, error) {
 	conn, err := netDialTimeout("tcp", addr(d.Host, d.Port), 10*time.Second)
+	conn.SetDeadline(time.Now().Add(20 * time.Second))
 	if err != nil {
 		return nil, err
 	}

+ 32 - 1
common/src/qfw/util/elastic/elasticutil.go

@@ -1003,6 +1003,11 @@ const (
 	FilterQuery_New  = `{"query":{"bool":{"must": [%s%s%s],"should":[]}}}`
 	MatchQueryString = `{"match": {%s: { "query":"%s", "operator": "and"}}}`
 	HL_New           = `"highlight": {"pre_tags": ["<HL>"],"post_tags": ["<HL>"],"fields": {%s}}`
+
+	ik_highlightStr = `%s: {"fragment_size": %d,"number_of_fragments": 1,"require_field_match": true}`
+	IK_pre_tags     = `<font class=\"es-highlight\">`
+	IK_post_tags    = `</font>`
+	HL_IK           = `"highlight": {"pre_tags": ["` + IK_pre_tags + `"],"post_tags": ["` + IK_post_tags + `"],"fields": {%s}}`
 )
 
 //替换了"号
@@ -1250,7 +1255,7 @@ func GetResForJY(index, itype string, keys []KeyConfig, allquery, findfields, So
 		if start > -1 {
 			qstr = qstr[:len(qstr)-1] + `,"from":` + strconv.Itoa(start) + `,"size":` + strconv.Itoa(limit) + "}"
 		}
-		log.Println("jy-ngram-find", qstr)
+		//log.Println("jy-ngram-find", qstr)
 		return Get(index, itype, qstr)
 	} else {
 		return nil
@@ -1286,3 +1291,29 @@ func GetAllByNgram(index, itype, qstr, findfields, order, fields string, start,
 		return nil
 	}
 }
+
+//ik 分词
+func GetAllByIk(index, itype, qstr, findfields, order, fields string, start, limit, count int, highlight bool) *[]map[string]interface{} {
+	if qstr != "" {
+		if highlight {
+			ws := []string{}
+			for _, w := range strings.Split(findfields, ",") {
+				ws = append(ws, fmt.Sprintf(ik_highlightStr, w, count))
+			}
+			qstr = qstr[:len(qstr)-1] + `,` + fmt.Sprintf(HL_IK, strings.Join(ws, ",")) + `}`
+		}
+		if len(fields) > 0 {
+			qstr = qstr[:len(qstr)-1] + `,"_source":[` + fields + "]}"
+		}
+		if len(order) > 0 {
+			qstr = qstr[:len(qstr)-1] + `,"sort":[` + SR(SR(SR(SR(order, ",", "},{", -1), " ", "", -1), ":-1", `:"desc"`, -1), ":1", `:"asc"`, -1) + `]}`
+		}
+		if start > -1 {
+			qstr = qstr[:len(qstr)-1] + `,"from":` + strconv.Itoa(start) + `,"size":` + strconv.Itoa(limit) + "}"
+		}
+		//log.Println("GetAllByNgram:", qstr)
+		return Get(index, itype, qstr)
+	} else {
+		return nil
+	}
+}

+ 16 - 0
common/src/qfw/util/elastic/elasticutil_Index_test.go

@@ -1,8 +1,10 @@
 package elastic
 
 import (
+	"encoding/json"
 	"log"
 	_ "log"
+	"net/url"
 
 	_ "gopkg.in/mgo.v2/bson"
 	_ "gopkg.in/olivere/elastic.v1"
@@ -81,3 +83,17 @@ func Test_saveToEs(t *testing.T) {
 		"title": "你好,试试2",
 	})
 }
+
+func Test_word(t *testing.T) {
+	InitElasticSize("http://192.168.3.207:9700", 2)
+	es := GetEsConn()
+	defer DestoryEsConn(es)
+	p := url.Values{}
+	p["text"] = []string{"中华人民共和国"}
+	p["analyzer"] = []string{"ik_pinyin"}
+	by, err := es.PerformRequest("GET", "/test1/_analyze", p, nil)
+	b, _ := by.Body.MarshalJSON()
+	var res map[string]interface{}
+	json.Unmarshal(b, &res)
+	log.Println(res, err)
+}

+ 10 - 12
common/src/qfw/util/mail/gmail.go

@@ -2,11 +2,10 @@ package mail
 
 import (
 	"log"
+	"qfw/util"
 	"sync"
 	"time"
 
-	"qfw/util"
-
 	"github.com/go-gomail/gomail"
 )
 
@@ -20,11 +19,11 @@ type GmailAuth struct {
 var mailLock = &sync.Mutex{}
 var dialer *gomail.Dialer
 
-func getDialer(flag bool, auth *GmailAuth) *gomail.Dialer {
+func getDialer(flag bool, auth *GmailAuth, to string) *gomail.Dialer {
 	if flag && dialer != nil {
 		return dialer
 	}
-	log.Println("邮件getDialer:get new gomail Dialer")
+	log.Println(to, "发送邮件getDialer:get new gomail Dialer")
 	dialer = gomail.NewPlainDialer(auth.SmtpHost, auth.SmtpPort, auth.User, auth.Pwd) // 发送邮件服务器、端口、发件人账号、发件人密码
 	return dialer
 }
@@ -46,22 +45,21 @@ func GSendMail(from, to, cc, bcc, subject, body, fname, rename string, auth *Gma
 		m.Attach(fname, gomail.Rename(rename), gomail.SetHeader(h)) //添加附件
 		//m.Attach(fname) //添加附件
 	}
-	return gSend(auth, m)
+	return gSend(auth, m, to)
 }
 
 //
-func gSend(auth *GmailAuth, m *gomail.Message) bool {
+func gSend(auth *GmailAuth, m *gomail.Message, to string) bool {
 	mailLock.Lock()
 	defer mailLock.Unlock()
 	defer util.Catch()
-	var err error
-	for i := 0; i < 2; i++ {
-		if err = getDialer(i == 0, auth).DialAndSend(m); err == nil {
-			return true
-		} else {
+	for i := 0; i < 3; i++ {
+		if err := getDialer(i == 0, auth, to).DialAndSend(m); err != nil {
+			log.Println(to, "第", i+1, "次发送邮件gSend error:", err)
 			time.Sleep(200 * time.Millisecond)
+		} else {
+			return true
 		}
 	}
-	log.Println("邮件gSend:", err)
 	return false
 }