相关度评分 _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
05-19 01:16