ElasticSearch - 查询打分控制

ElasticSearch - 查询打分控制

八月 28, 2019

Query Context & Filter Context

  • 高级搜索的功能:支持多项文本输入,针对多个字段进行搜索。
  • 搜索引擎一般也提供基于时间,价格等条件的过滤。
  • 在ElasticSearch中,有Query和Filter两种不同的Context
    1. Query Context:相关性算分
    2. Filter Context:不需要算分,可以利用Cache,获得更好的性能

bool查询

  • 一个bool查询,是一个或者多个查询子句的组合
    总共包括4种子句。其中两种会影响算分,两种不影响算分
  • 相关性并不是只在全文本检索的专利。也适用于yes|no的子句,匹配的子句越多,相关性评分越高。如果多条查询子句被合并成一条复合查询语句,比如bool查询,则每个查询子句计算得出的评分会被合并到总的相关性评分中
    image.png

bool查询语法

image.png

bool嵌套

image.png

查询语句的结构,会对相关度算分产生影响

  • 同一层级下的竞争字段,具有相同的权重
  • 层级越深,权重越低
  • 通过嵌套bool查询,可以改变对算分的影响
    image.png

控制字段的Boosting

  • Boosting是控制相关度的一种手段
    索引,字段或者查询子条件
  • 参数boost的含义
    1. 当boost>1是,打分的相关度相对性提升
    2. 当0<boost<1时,打分的权重相对性降低
    3. 当boost<0时,贡献负分
      image.png
      image.png