• 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" } } ] }
    这是高斯函数图,有对应参数的控制属性可以作为参考理解

      

  • 相关阅读:
    C#操作XML
    Eval调用函数
    SQL 日期时间函数
    vue中created和mounted区别
    记录uniapp的APP端分享到微信好友,链接为小程序页面,分享失败的BUG
    【News】Windows CE会死吗?答,死不了,只是变身了。
    【原创】工作总结
    【原创】工作总结之二
    【资源收集】关于WINCE网卡开发的知识收集
    【news】wince 7 preview release。大家可以去看看
  • 原文地址:https://www.cnblogs.com/yaohaitao/p/12593961.html
Copyright © 2020-2023  润新知