Commit f6058c6f by mushishixian

修复es的should的问题

parent 01ee5f70
Showing with 11 additions and 8 deletions
......@@ -55,8 +55,9 @@ func MatchGoodsNameByAttrs(bomItems []model.BomItem) (result []model.BomItem, er
if responses.Hits != nil {
for _, hit := range responses.Hits.Hits {
res, _ := hit.Source.MarshalJSON()
//还要去判断至少符合特定数量参数匹配的结果,比如最小匹配参数为2,那就是要有两个参数匹配到才正确
bomItems[key].GoodsName = gjson.Get(string(res), "goods_name").String()
fmt.Println(gjson.Get(string(res), "goods_name").String())
fmt.Println(string(res))
}
}
}
......@@ -114,7 +115,6 @@ func changeKeyword(attr string) (result string) {
compile, _ := regexp.Compile(regexpStr)
attr = compile.ReplaceAllString(attr, regular)
}
fmt.Println(attr)
return attr
}
......@@ -198,21 +198,24 @@ func getAttrValueByAttr(attr string) (attrValue string) {
//获取匹配的条件
func getQuery(attrs []string) (query *es.BoolQuery) {
subQuery := es.NewBoolQuery()
var subQuery *es.TermQuery
query = es.NewBoolQuery()
for _, attr := range attrs {
//还要判断是不是一个单位对应多个属性的
if strings.Contains(attr, "|") {
name := strings.Split(attr, "€")[0]
value := strings.Split(attr, "€")[1]
multiAttr := strings.Split(name, "|")
for _, temp := range multiAttr {
subQuery = subQuery.Should(es.NewTermQuery("attrs.attr_value", temp+"€"+value))
subQuery = es.NewTermQuery("attrs.attr_value", temp+"€"+value)
}
} else {
subQuery = subQuery.Should(es.NewTermQuery("attrs.attr_value", attr))
subQuery = es.NewTermQuery("attrs.attr_value", attr)
}
nestedQuery := es.NewNestedQuery("attrs", subQuery)
query.Should(nestedQuery)
query.MinimumNumberShouldMatch(2)
}
nestedQuery := es.NewNestedQuery("attrs", subQuery)
query = es.NewBoolQuery()
query = query.Filter(nestedQuery)
return query
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment