美文网首页
ES-相关性重塑

ES-相关性重塑

作者: 卡门001 | 来源:发表于2022-04-11 21:50 被阅读0次

定义

  • 相关性搜索
  • 让搜索引擎理解语义
  • 影响召回及排序
举例 - //输入休息、住宿,也可以搜到凯悦
休息、住宿 ==》 凯悦

相关性重塑策略

    1. 查询时除了must这外,引入should
    1. 修改“召回策略”(查询方法)

1. 引入shoud

    "function_score": {
      "query": {
        "bool": {
          "must": [
            {
              "bool": {
                "should": [
                  {"match": {"name": {"query": "住宿","boost": 0.1}}},
                  {"term": {"category_id": {"value": 2,"boost": 0.1}}}
                ]
              }
            },
            {"term": {"seller_disabled_flag": 0 }}
          ]
        }
      },
      ...
      "score_mode": "sum",
      "boost_mode": "sum"
    }
  },

当前端输入休息时,会返回"酒店(category_id=2) 的类目

2. 构建分词识别器

//分词函数识别器
private Map<String,Object> analyzeCategoryKeyword(String keyWord) throws IOException {
    Map<String,Object> res = new HashMap();
    Request req = new Request("GET","/shop/_analyze");


    JSONObject jsonObjectReq = new JSONObject();
    jsonObjectReq.put("field","name");
    jsonObjectReq.put("text",keyWord);

    req.setJsonEntity(jsonObjectReq.toJSONString());

    Response response = restClient.performRequest(req);
    String result = EntityUtils.toString(response.getEntity());
    JSONObject jsonObject  = JSONObject.parseObject(result);

    JSONArray jsonArray = jsonObject.getJSONArray("tokens");
    for (Object s : jsonArray) {
        String token = ((JSONObject)s).getString("token");
        Integer categoryId = getCategoryByToken(token);
        res.put(token,categoryId);
    }
    return res;
}



//由Token得到类目id
private Integer getCategoryByToken(String token){
    for (Integer key : categoryWorkMap.keySet()) {
        List<String> tokenList = categoryWorkMap.get(key);
        if (tokenList.contains(token)){
            return key;
        }
    }
    return null;
}

//利用token与category的关系
private Map<Integer,List<String>> categoryWorkMap = new HashMap<>();
@PostConstruct
public void init(){
    categoryWorkMap.put(1,new ArrayList<>());//美食
    categoryWorkMap.put(2,new ArrayList<>());//酒店
    categoryWorkMap.get(1).add("吃饭");
    categoryWorkMap.get(1).add("下午茶");

    categoryWorkMap.get(2).add("休息");
    categoryWorkMap.get(2).add("睡觉");
    categoryWorkMap.get(2).add("住宿");
}

3. 根据新建的分词识别器,修改“召回策略’

分为:识别器模式与无识别器模式,两种查询方式
(过程略)

相关文章

  • ES-相关性重塑

    定义 相关性搜索 让搜索引擎理解语义 影响召回及排序 举例 - //输入休息、住宿,也可以搜到凯悦 相关性重塑策略...

  • Toastmaster word: aesthetic

    英 [iːs'θetɪk; es-] 美 [ɛs'θɛtɪk] adjectiveconcerned with...

  • elasticsearch php

    新建索引 $es->indices()->create(['index' => '库名']); 新进索引文档 $e...

  • 那些永远记不住的单词|Aesthetic 美学审美【042】

    Aesthetic 英 [iːs'θetɪk; es-] 美 [ɛs'θɛtɪk] adj. 美的;美学的;审美的...

  • Elasticsearch

    一、相关术语 ES-》数据库 索引index-》表 文档document-》行 字段fields-》列 分片(sh...

  • 4.3-搜索的相关性算分

    相关性和相关性算分 相关性 – Relevance搜索的相关性算分,描述了⼀个⽂档和查询语句匹配的程度。ES 会对...

  • ES-近义词查询

    ES-近义词查询 在现实生活中,我们搜索"马铃薯"时,百度能给我找到马铃薯,土豆,洋芋等相关信息.因为在它们都是同...

  • ES-集群配置

    Elasticsearch:核心的分布式搜索和分析引擎---做存储数据用--就叫es7.x以上版本集群:https...

  • es-索引相关

    取2个月之前时间 查看索引 删除索引,通配符形式 添加索引副本 索引起别名 查看别名

  • es-配置详解

    (1)集群名称,默认为elasticsearch (2)节点名称,es启动时会自动创建节点名称,但你也可进行配置 ...

网友评论

      本文标题:ES-相关性重塑

      本文链接:https://www.haomeiwen.com/subject/szuysrtx.html