有个需求各位帮忙看看es是怎么样实现的?
物品有标签属性,一个物品有多个标签,假设某个物品有5个标签:nice 颜值高 good 物美价廉 宅男专属
用户可以选择一个或多个标签来匹配商品,需求如下:
nice 可以匹配到
颜值高 可以匹配到
nice 颜值高 物美价廉 可以匹配到
物美价廉 神器 匹配不到(多个标签只要有一个匹配不到就不行)
价廉 匹配不到(必须是‘物美价廉’才能匹配到)
神器 匹配不到
-------------------------------------------------------
尝试在创建文档时
{
"tags":["nice","颜值高","good","物美价廉","宅男专属 "]
}
搜索是使用:
物品有标签属性,一个物品有多个标签,假设某个物品有5个标签:nice 颜值高 good 物美价廉 宅男专属
用户可以选择一个或多个标签来匹配商品,需求如下:
nice 可以匹配到
颜值高 可以匹配到
nice 颜值高 物美价廉 可以匹配到
物美价廉 神器 匹配不到(多个标签只要有一个匹配不到就不行)
价廉 匹配不到(必须是‘物美价廉’才能匹配到)
神器 匹配不到
-------------------------------------------------------
尝试在创建文档时
{
"tags":["nice","颜值高","good","物美价廉","宅男专属 "]
}
搜索是使用:
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [{
"terms": {
"tags": ["nice"]
}
}, {
"terms": {
"tags": ["good"]
}
}]
}
}
}
可以正常匹配{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [{
"terms": {
"tags": ["nice"]
}
}, {
"terms": {
"tags": ["颜值高"]
}
}]
}
}
}
但是带中文的,这样匹配不上了,包括数字+英文的也存在这样的问题。
2 个回复
novia - 1&0
赞同来自:
put数据 标签 百度 阿里 google
查询一 百度+阿里,可以匹配到
查询二 百度+腾讯 匹配不到
zqc0512 - andy zhou
赞同来自: