ElasticSearch - 查询打分控制
2019-08-28 本文已影响0人
辻子路
Query Context & Filter Context
- 高级搜索的功能:支持多项文本输入,针对多个字段进行搜索。
- 搜索引擎一般也提供基于时间,价格等条件的过滤。
- 在ElasticSearch中,有Query和Filter两种不同的Context
- Query Context:相关性算分
- Filter Context:不需要算分,可以利用Cache,获得更好的性能
bool查询
- 一个bool查询,是一个或者多个查询子句的组合
总共包括4种子句。其中两种会影响算分,两种不影响算分 -
相关性并不是只在全文本检索的专利。也适用于yes|no的子句,匹配的子句越多,相关性评分越高。如果多条查询子句被合并成一条复合查询语句,比如bool查询,则每个查询子句计算得出的评分会被合并到总的相关性评分中
image.png
bool查询语法
image.pngbool嵌套
image.png查询语句的结构,会对相关度算分产生影响
- 同一层级下的竞争字段,具有相同的权重
- 层级越深,权重越低
-
通过嵌套bool查询,可以改变对算分的影响
image.png
控制字段的Boosting
- Boosting是控制相关度的一种手段
索引,字段或者查询子条件 - 参数boost的含义
- 当boost>1是,打分的相关度相对性提升
- 当0<boost<1时,打分的权重相对性降低
-
当boost<0时,贡献负分
image.png
image.png