70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
package audiobookmod
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"91porn-server/common/elastic"
|
|
"91porn-server/common/log"
|
|
"91porn-server/models"
|
|
)
|
|
|
|
var es *elastic.Client
|
|
|
|
const ESTable = models.ESInfoAudioBookTable
|
|
|
|
func InitESIndex() {
|
|
es = elastic.Init()
|
|
var setting = elastic.M{
|
|
"settings": elastic.M{
|
|
"number_of_shards": elastic.NumberOfShards,
|
|
"number_of_replicas": elastic.NumberOfReplicas,
|
|
"analysis": elastic.M{
|
|
"analyzer": elastic.M{
|
|
"ik": elastic.M{
|
|
"tokenizer": elastic.AnalyzerIkMaxWord,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"mappings": elastic.M{
|
|
"properties": elastic.M{
|
|
"title": elastic.M{
|
|
"type": "text",
|
|
"analyzer": elastic.AnalyzerIkMaxWord,
|
|
"search_analyzer": elastic.AnalyzerIkSmart,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
if err := es.CreateIndices(ESTable, setting); err != nil {
|
|
panic(fmt.Sprintf("%s index indeices err ==>[%+v]", ESTable, err))
|
|
}
|
|
}
|
|
|
|
func Search(keywords string, from int64, size int64) (data []ESAudioBookSource, err error) {
|
|
query := elastic.M{
|
|
"query": elastic.M{
|
|
"bool": elastic.M{
|
|
"must": elastic.A{
|
|
{"multi_match": elastic.M{
|
|
"query": keywords,
|
|
"fields": []string{"title"}},
|
|
},
|
|
{"term": elastic.M{"isActive": true}},
|
|
},
|
|
},
|
|
},
|
|
"from": from,
|
|
"size": size,
|
|
}
|
|
if err = elastic.Init().Search(ESTable, &data, query); err != nil {
|
|
log.Error(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "Search", table, "CommonSearch", err),
|
|
log.Any("keywords", keywords),
|
|
log.Any("from", from),
|
|
log.Any("size", size),
|
|
)
|
|
return
|
|
}
|
|
return
|
|
}
|