es添加全文索引highlight接口
parent
ab40d156b2
commit
cfc782385c
|
@ -8,7 +8,7 @@ import (
|
|||
"strconv"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/olivere/elastic"
|
||||
"gopkg.in/olivere/elastic.v7"
|
||||
"qiniupkg.com/x/log.v7"
|
||||
)
|
||||
|
||||
|
@ -165,7 +165,7 @@ func UpdateArtilce(c *gin.Context) {
|
|||
ID int64 `json:"id"`
|
||||
Title string `json:"title"`
|
||||
Content string `json:"content"`
|
||||
author string `json:"author"`
|
||||
Author string `json:"author"`
|
||||
Type int64 `json:"type"`
|
||||
IsPublic int `json:"is_public"`
|
||||
}
|
||||
|
@ -201,7 +201,7 @@ func UpdateArtilce(c *gin.Context) {
|
|||
Type: int32(req.Type),
|
||||
Title: req.Title,
|
||||
Content: req.Content,
|
||||
Author: req.author,
|
||||
Author: req.Author,
|
||||
ID: req.ID,
|
||||
IsPublic: int32(req.IsPublic),
|
||||
Version: (docs[0].Version + 1),
|
||||
|
@ -217,6 +217,12 @@ func UpdateArtilce(c *gin.Context) {
|
|||
}
|
||||
|
||||
func SearchArticleESHightLight(c *gin.Context) {
|
||||
type RetHighlight struct{
|
||||
ID int64 `json:"id" gorm:"column:id" sql:"id"`
|
||||
Title string `json:"title" gorm:"column:title" sql:"title"`
|
||||
Type int32 `json:"type" gorm:"column:type" sql:"type"`
|
||||
Highlight []string `json:"highlight" gorm:"column:highlight" sql:"highlight"`
|
||||
}
|
||||
rsp := RespBase{Msg: "FAIL", Status: 210}
|
||||
defer func() {
|
||||
c.JSON(200, rsp)
|
||||
|
@ -232,9 +238,11 @@ func SearchArticleESHightLight(c *gin.Context) {
|
|||
}
|
||||
|
||||
query := elastic.NewMatchQuery("content", req.Term)
|
||||
|
||||
x := []model.Doc{}
|
||||
_, e = db.GetElastic().Query("doc", query, &x, 10, 0)
|
||||
highlight := elastic.NewHighlight()
|
||||
highlight = highlight.Fields(elastic.NewHighlighterField("content"))
|
||||
highlight = highlight.PreTags("<span>").PostTags("</span>")
|
||||
x := []RetHighlight{}
|
||||
_, e = db.GetElastic().QueryHighlight("doc", query, &x,highlight, 10, 0)
|
||||
if nil != e {
|
||||
log.Print(e.Error())
|
||||
return
|
||||
|
|
|
@ -79,19 +79,21 @@ func (p *ElkEngine) QueryHighlight(index string, query elastic.Query, v interfac
|
|||
|
||||
if nil != p {
|
||||
if limit == 0 {
|
||||
res, err := p.cli.Search().Index(index).Query(query).Highlight(hightlight).Do(context.Background())
|
||||
res, err := p.cli.Search().Index(index).Query(query).Highlight(hightlight).Do(context.TODO())
|
||||
if err != nil {
|
||||
print(err)
|
||||
return nil, err
|
||||
}
|
||||
id := []string{}
|
||||
for _, vs := range res.Hits.Hits {
|
||||
log.Print(vs.Highlight)
|
||||
id = append(id, vs.Id)
|
||||
data, e := vs.Source.MarshalJSON()
|
||||
if nil != e {
|
||||
log.Print(e.Error())
|
||||
}
|
||||
mapobj := map[string]interface{}{}
|
||||
mapobj["highlight"] = vs.Highlight["content"]
|
||||
e = json.Unmarshal(data, &mapobj)
|
||||
if nil != e {
|
||||
log.Print(e.Error())
|
||||
|
@ -104,16 +106,17 @@ func (p *ElkEngine) QueryHighlight(index string, query elastic.Query, v interfac
|
|||
}
|
||||
return id, nil
|
||||
} else {
|
||||
res, err := p.cli.Search(index).Query(query).Highlight(hightlight).Size(limit).From(limit * offset).Do(context.Background())
|
||||
res, err := p.cli.Search(index).Query(query).Highlight(hightlight).Size(limit).From(limit * offset).Do(context.TODO())
|
||||
if err != nil {
|
||||
print(err)
|
||||
return nil, err
|
||||
}
|
||||
id := []string{}
|
||||
for _, vs := range res.Hits.Hits {
|
||||
log.Print(vs.Highlight)
|
||||
id = append(id, vs.Id)
|
||||
data, e := vs.Source.MarshalJSON()
|
||||
log.Print(string(data))
|
||||
// log.Print(string(data))
|
||||
if nil != e {
|
||||
log.Print(e.Error())
|
||||
}
|
||||
|
@ -122,6 +125,8 @@ func (p *ElkEngine) QueryHighlight(index string, query elastic.Query, v interfac
|
|||
if nil != e {
|
||||
log.Print(e.Error())
|
||||
}
|
||||
mapobj["content"] = ""
|
||||
mapobj["highlight"] = vs.Highlight["content"]
|
||||
obj, e := utils.UnmarshalJson2StructGen(eletype, mapobj)
|
||||
if nil != e {
|
||||
log.Print(e.Error())
|
||||
|
|
|
@ -249,12 +249,13 @@ func UnmarshalJson2StructGen(t reflect.Type, maps map[string]interface{}) (inter
|
|||
if !ok {
|
||||
return nil, errors.New(TagNoExisted)
|
||||
}
|
||||
log.Print(remap["json"])
|
||||
ret := reflect.New(t)
|
||||
// log.Print(ret.Kind())
|
||||
opStruct := ret.Elem()
|
||||
// log.Print(opStruct.Kind())
|
||||
for k, v := range maps {
|
||||
log.Print(k)
|
||||
// log.Print(k)
|
||||
if filedName, ok := remap["json"][k]; ok {
|
||||
// log.Print(filedName, " ", opStruct.FieldByName(filedName).Kind(), reflect.TypeOf(v).Kind().String())
|
||||
if SameKind(opStruct.FieldByName(filedName).Kind(), reflect.TypeOf(v).Kind()) {
|
||||
|
|
Loading…
Reference in New Issue