进一步说搜索体验,我们更希望检索出来的数据是最想得到的数据;
这个其实就是关于文档的【相关性得分】
进一步细节说:我们查询的所有文档,会在内部做一次相关性的评分score;然后会根据这个score从大到小的排序,依次展示给客户端;
如何计算评分?
Elasticsearch使用的计算评分公式TF-IDF算法的实用计算公式如下:
score(q,d) coord(q,d)queryNorm(q)(tf (tind)idf (t)2 boost(t)norm(t,d))
IDF:逆向文档率,词在集合所有文档里出现的频率是多少?频次越高,权重 越低
在我们实际的工作中,我们经常会控制boost来调整score(boost默认值是1)
创建索引和映射:
1):创建索引
2):创建映射
/**
* 创建映射
*/
3):创建Document实体类
package com.elasticsearch.bean;
/**
* Created by angel;
*/
public class Document {
private Integer id;
private String title;
private String content;
private String comment;
public Integer getId() {
return id;
}
public String getComment() {
return comment;
}
public String getContent() {
return content;
}
public String getTitle() {
return title;
}
public void setComment(String comment) {
this.comment = comment;
}
public void setContent(String content) {
this.content = content;
}
public void setId(Integer id) {
this.id = id;
}
public void setTitle(String title) {
this.title = title;
}
}
4):重新创建索引和映射,创建文档
/**
* 创建文档
* */
5):测试:
//TODO 如何让id2 在 id1前面