weixin_41575970 2022-07-26 15:43 采纳率: 100%
浏览 47
已结题

es 搜索精准性问题如何解决

es 如何在搜索苹果手机的时候只出苹果手机,搜苹果可能出苹果手机,也可能出真实的苹果
搜挖掘机只出挖掘相关内容,不出飞机、机械,机器等和挖掘不相关的内容
比如下面的例子,如何搜苹果手机只出手机相关内容,搜挖掘机配件只出挖掘机相关的内容,而不是搜苹果手机,挖掘机、飞机都能搜出来
PUT /product
{
"settings": {
"number_of_replicas": 1,
"number_of_shards": 1,
"analysis.analyzer.default.type": "ik_max_word"
},
"mappings": {
"properties": {
"id":{
"type": "long"
},
"title":{
"type": "text",
"fields": {
"titleName":{
"type":"keyword"
}
}
},
"tags":{
"type": "nested"
}
}
}
}

POST /_bulk?filter_path=items.*.error
{"create":{"_index":"product","_id":1}}
{"title":"我是苹果手机1","id":"1"}
{"create":{"_index":"product","_id":2}}
{"title":"苹果手机","id":"2"}
{"create":{"_index":"product","_id":3}}
{"title":"四川苹果","id":"3"}
{"create":{"_index":"product","_id":4}}
{"title":"广州苹果","id":"4"}
{"create":{"_index":"product","_id":5}}
{"title":"挖掘机零件","id":"5"}
{"create":{"_index":"product","_id":6}}
{"title":"挖掘机配件","id":"6"}
{"create":{"_index":"product","_id":7}}
{"title":"飞机配件","id":"7"}
{"create":{"_index":"product","_id":8}}
{"title":"飞机零件","id":"8"}

GET /product/_search
{
"query": {
"match": {
"title": "苹果手机"
}
}
}

GET /product/_search
{
"query": {
"match": {
"title": "挖掘机配件"
}
}
}

  • 写回答

3条回答 默认 最新

  • bug_keng 2022-07-26 17:39
    关注

    分词涉及关键字说明
    text和keyword
    text和keyword是数据类型,针对的是数据写入,写入到磁盘上是否进行分词。
    text会分词,也就是说,在数据落盘时,会被分割成多个独立的单词,然后存入倒排索引中。分词查询时候,也是以单词维度进行匹配。
    keyword不会分词,存的的是整个短语。
    match和term
    match和term,是两种搜索方式,针对的是数据查询,要查询的短语是否进行分词。

    数据类型修改成keyword 或者搜索使用term

    
    GET /product/_search
    {
    "query": {
    "term": {
    "title": "苹果手机"
    }
    }
    }
    
    GET /product/_search
    {
    "query": {
    "term": {
    "title": "挖掘机配件"
    }
    }
    }
    
    
    
    

    match搜索时候,会对被搜索的内容进行分词,然后拿分词后的内容,去倒排索引中查询。
    term是不对被搜索内容进行分词,就是完全匹配。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月4日
  • 已采纳回答 7月27日
  • 修改了问题 7月26日
  • 创建了问题 7月26日

悬赏问题

  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误