ElasticSearch 搜索推荐

Term Suggester

"suggest_mode":"missing"  missing 默认选项,不返回精准匹配到的分词结果
"suggest_mode":"popular"  popular 大于等于搜索词频率的返回
"suggest_mode":"always", 不做任何限制
 "min_doc_freq":2		出现在文档中的次数大于min_doc_freq的才返回,同一文档中多次出现算一次。
 GET /product/_search
{
  "suggest": {
    "desc_suggest": {
      "text":"手机中的",
      "term":{
        "field":"desc",
        "suggest_mode":"popular",
        "min_doc_freq":2
      }
    }
  }
}

Completion Suggester

基于内存而非索引(内存消耗大),性能好,只适合前缀搜索
结果精准度高召回率低

#添加新字段 设置suggest
PUT /product/_mapping
{
  "properties": {
    "desc_sugg": {
      "type": "text",
      "analyzer": "ik_max_word",
      "fields": {
        "suggest": {
          "type": "completion",
          "analyzer": "ik_max_word"
        }
      }
    }
  }
}

#给新字段赋值
POST /product/_update_by_query
{
  "script": {
    "source": "ctx._source.desc_sugg=ctx._source.desc",
    "lang": "painless"
  },
  "query": {
    "match_all": {}
  }
}
# "skip_duplicates":true, 结果去重  
# "fuzziness":2 允许容错数
GET /product/_search
{
  "suggest": {
    "desc_suggest": {
      "prefix": "耳机",
      "completion": {
        "field": "desc_sugg.suggest",
        "skip_duplicates":true,
        "fuzzy":{
          "fuzziness":2
        }
      }
    }
  }
}

Context Suggester

新增索引
PUT product_suggest
{
  "mappings": {
    "properties": {
      "suggest": {
        "type": "completion",
        "contexts": [
          {
            "name": "place_type",
            "type": "category",
            "path": "tags"
          },
          {
            "name": "localtion",
            "type": "geo",
            "path": "loc",
            "precision": 4
          }
        ]
      },
      "loc":{
        "type": "geo_point"
      }
    }
  }
}
新增数据
PUT /product_suggest/_doc/1
{
  "suggest":["hello","word","tremhhh"],
  "tags":["no","hh"]
}

PUT /product_suggest/_doc/2
{
  "suggest":["hellhho","word","treeemhhh"],
  "tags":["monely"]
}

PUT /product_suggest/_doc/3
{
  "suggest": [
    "latlon",
    "word",
    "tremhhh"
  ],
  "loc": [
    {
      "lat": 43.56,
      "lon": -79.56
    },
    {
      "lat": 49.56,
      "lon": -59.56
    }
  ]
}
# "place_type":["no"] 在传入的指定分类中查询
# {"context":"monely","boost":2}  boost增加权重返回结果会排在前面
POST /product_suggest/_search
{
  "suggest": {
    "tag_suggest": {
      "prefix": "he",
      "completion": {
        "field": "suggest",
        "size":10,
        "skip_duplicates":true,
        "contexts":{
          "place_type":[
            {"context":"no"},
            {"context":"monely","boost":2}
            ]
        }
      }
    }
  }
}
#地理位置查询
POST /product_suggest/_search
{
  "suggest": {
    "tag_suggest": {
      "prefix": "tre",
      "completion": {
        "field": "suggest",
        "size": 10,
        "skip_duplicates": true,
        "contexts": {
          "localtion": [
            {
              "lat": 43.55,
              "lon": -79.55
            }
          ]
        }
      }
    }
  }
}

相关推荐

  1. ElasticSearch 搜索推荐

    2024-03-13 22:34:04       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-13 22:34:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-13 22:34:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 22:34:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 22:34:04       18 阅读

热门阅读

  1. ES6 类的扩展

    2024-03-13 22:34:04       15 阅读
  2. js的事件有哪些?

    2024-03-13 22:34:04       19 阅读
  3. Android adb启动app方式

    2024-03-13 22:34:04       19 阅读
  4. 【SpringBoot】多环境切换的灵活配置

    2024-03-13 22:34:04       23 阅读
  5. 车联网术语汇总 车联网术语汇总

    2024-03-13 22:34:04       18 阅读
  6. UE5 获取各个信息的像素

    2024-03-13 22:34:04       22 阅读
  7. 基础 | 并发编程 - [线程状态]

    2024-03-13 22:34:04       22 阅读
  8. 英伟达tx2光驱烧录功能支持

    2024-03-13 22:34:04       23 阅读
  9. js的异步请求?

    2024-03-13 22:34:04       25 阅读