Elasticsearch相关度评分_score

原文链接: http://www.cnblogs.com/DianeSoHungry/p/8875144.html

相关度评分 _score 的目的

是为了将当前查询的结果进行排序,比较不同查询结果的相关度评分没有太大意义。

_score的计算方式

score(q,d)  =    # score(q,d) 是文档 d 与查询 q 的相关度评分。   
          · queryNorm(q)      # 查询归一化因子,用来使查询结果之间能够相互比较,但意义不大,因为_score的目的并不是对不同查询进行比较,而是用来对查询结果进行排序
          · coord(q,d)        # 协调因子,对于多词查询,文档里出现的匹配词越多,该值越大。 bool查询也遵循这个规则。Lucene中同义词查询会自动禁用这个值(优秀!)。
          · ∑ (           
              · tf(t in d)       
              · idf(t)²      
              · t.getBoost()     
              · norm(t,d)    
            ) (t in q)   

原文

优化查询结果的方法

  1. 设置boost参数在一个查询上、某些索引上
  2. 使用查询结构修改相关度
  3. 使用boosting查询,对包含不想要的词的查询结果进行降级
  4. function_score查询:这个查询可以使两个效果融合:可以仍然根据全文相关度进行排序,但也会同时考虑最新发布文档、流行文档、或接近用户希望价格的产品。
    3.1 field_value_factor:需要有一个专门的字段,存储数值,以这个数值进行调试
    3.2 functions:可以用来对不同搜索词加权
    3.3

转载于:https://www.cnblogs.com/DianeSoHungry/p/8875144.html

你可能感兴趣的:(Elasticsearch相关度评分_score)