是时候用 ES 拯救发际线啦

Elasticsearch 怎么区分手机和手机壳呢?

Elasticsearch | 作者 Lemcoo | 发布于2019年08月15日 | 阅读数:3042

如题正在做商城的搜索,初学elasticsearch,如何实现比如搜华为mate20pro只能搜索出手机,而搜索华为mate20pro手机壳只能搜索出手机壳呢?
已邀请:

kiralovecat

赞同来自:

看你这个是类目匹配还是query直接匹配了.类目匹配就是你的每个商品都有对应的类目,手机和手机壳自然会是不同的类目,然后在检索的时候根据query定位到不同类目.在搜索条件中加上类目匹配就可以区分手机|手机壳了.如果是直接query匹配(输入手机出手机,输入手机壳出手机壳)在切词词典里面加上手机壳 手机,就可以把手机 手机壳切成独立的词,这样就可以区分了. 

ridethewind

赞同来自:

只要手机和手机壳是两个term,用term查就会达到你想要的效果

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

举例:只包含手机,不要手机壳。估计楼主需求比这还要复杂一些。
GET phone-0815/_search
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"title": "手机"
}
}
],
"must_not": [
{
"match_phrase": {
"title": "手机壳"
}
}
]
}
}
}

envy666

赞同来自:

我觉得这本质上是个分词的问题,比如手机壳分词后就是一个完整的TERM“手机壳”,搜索手机的时候就不会匹配到它了,你需要的是一个高质量词库和合适的分词模式,IK_MAX_WORD肯定是不行的

要回复问题请先登录注册