深入理解Elasticsearch搜索算法
2018-09-28 本文已影响7人
郭子语
废话不多说,理解了搜索相关算法是理解搜索的核心!
对于TF/IDF
在一个搜索过程中,通常都是这样的过程
- 过滤,像boolean查询等,must、must not,先过滤出结果
- TF/IDF对一个term进行分数计算
- 利用空间向量模型,多个term算出一个总分数。
常见的搜索优化方法
实得分数地方
- 通过boost改变词条权重
- 改变查询结构,通过bool嵌套bool的方式,仍然相当于改变了他们的权重
- positive 和negative机制,比如想搜索包含hello的,但是尽量不包含Word的doc,利用negative查询,并通过negative_boost降低分数
- constant_score机制,直接对某些词条使用不计算分数,部分地方可以用这个提升速度
*自定义相关度分数算法function_score,boost_mode决定分数与指定字段的值如何计算,相加还是取最大等等。可以通过modifier让计算的分数更平滑,
https://blog.csdn.net/wuzhiwei549/article/details/80434603 - 提升索引权重,如通过indices_boost指定某些索引的权重