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 web课程,怎么做啊😭没好好听课 根本不知道怎么下手
  • ¥15 做一个关于单片机的比较难的代码,然后搞一个PPT进行解释
  • ¥15 python提取.csv文件中的链接会经常出现爬取失败
  • ¥15 数据结构中的数组地址问题
  • ¥15 maya的mel里,怎样先选择模型A,然后利用mel脚本自动选择有相同名字的模型B呢。
  • ¥15 Python题,根本不会啊
  • ¥15 会会信号与系统和python的来
  • ¥15 关于#python#的问题
  • ¥20 oracle RAC 怎么配置啊,配置
  • ¥15 excel 日常使用中出现问题