总结ES的各种查询与打分方式:
- match_all: 查询所有字段
- match 查询某个字段,并且根据(tfidf or bm25)打分
- match_pharse 查询短语,区别于match他要考虑前后顺序. 可以设置slop=整数,来设定词语之间的最大距离
- term: 查询单个词(区别于match, 是查询没有被analysize的语料(即比如大小写转换。。)).
- terms: 查询多个词
- query_string: 支持复杂语法,一般不用
- 区分查询与过滤器: 过滤器是筛选(bool),查询是要打分的
- match, phrase_prefix查询前缀
- bool查询与过滤器: must, should, must_not. (最小should, minimum_should_match)
- range查询与过滤器
分词器:有各种分词器,能不能用自带代替默认?
相关性打分:
- tfidf or bm25 可以配置
- explain : true, 返回分数计算详情
- 利用query + rescore, 来进行类似粗选+精排打分的模式. 还可以设置粗选权重(query_weight), 重打分权重(rescore_query_weight))
- 大招,function_score定制打分
- weight 附加查询条件与权重
- 合并方式(不同function合并方式, score_mode). function得分与查询得分合并,boost_mode(avg,max,min,replace,默认相乘)
- field_value_factor: 根据不同字段设置不同查询与权重(后面需要再细看)