• es搜索模型例子


    ES文本搜索有两个概念
    文本召回率
    文本准确率
    对于用户的搜索我们要尽量保证高的召回率,然后再保证准确率以防止一些结果查询遗漏,但是准确率低的可以通过es的搜索模型打分让其靠后。


    #使用function score解决排序模型 GET /shop/_search { "_source": "*", #显示出所有字段 "script_fields": { #查询出对应坐标的距离 "distance":{ "script":{ "source":"haversin(lat,lon,doc['location'].lat,doc['location'].lon)", "lang":"expression", "params":{"lat":31.23916171,"lon":121.48789949} } } }, "query": { "function_score": { "query": { "bool": { "must": [ {"match": {"name": {"query": "凯悦","boost": 0.1}}}, #boost 0.1也就是这部分的被降权到0.1,也就是文本搜索召回结果,不会特别影响打分 {"term": {"seller_disabled_flag": 0}} ]}}, "functions": [ #利用高斯方法控制相关性,涉及打分 { "gauss": { "location": { "origin": "31.23916171,121.48789949", "scale": "100km", #100KM为距离的函数拐点,一旦超过这个点打分就会加速下降 "offset": "0km", #最高点的左右距离为0,也就是只有最高点才为1分 "decay": 0.5 #拐点处为0.5分 } }, "weight": 9 #距离占据总分数的权重为9 }, { "field_value_factor": { "field": "remark_score" }, "weight": 0.2 #评论字段的打分权重为0.2 }, { "field_value_factor": { "field": "seller_remark_score" }, "weight": 0.1 #商店备注字段打分的权重为0.1 } ], "score_mode": "sum", #距离,评论字段,商店备注的打分之间的关系为相加(也可以改为相乘,但是放大的会比较大,在相关性计算放的太大不是很好,因为还需要和别的字段打分进行计算,太大会加重这部分权重) "boost_mode": "replace" #标题,也就是查询部分的权重,replace也就是不计算入内,这部分对查询结果的打分不影响,只做索引查询 } } , "sort": [ #结果的排序方式 { "_score": { "order": "desc" } } ] }
    这是高斯函数图,有对应参数的控制属性可以作为参考理解

      

  • 相关阅读:
    大数据下的质量体系建设
    快速打造属于你的接口自动化测试框架
    测试环境问题排查的那些事儿
    100个任务,用多机实现
    shell 在一个文件中查找数字
    shell中的awk使用
    shell怎么实现多进程
    删除字符串S1中的子串S2
    C++11的新特性
    C++里面普通指针怎么转换成智能指针
  • 原文地址:https://www.cnblogs.com/yaohaitao/p/12593961.html
Copyright © 2020-2023  润新知