ES版本跟新迭代的很快,截止到今天(2018.7.10) master的版本为6.3,打分公式一直都在微调,当前版本每个doc的对query的得分计算公式如下(就是最普通的BM25),其中n为query的term和当前doc的term的交集的大小:
idf计算公式如下,其中docCount为index中doc总数,docFreq为曾出现当前计算的term的doc频数:
tfNorm的计算公式如下,其中fieldLength为当前doc的term的个数,avgFieldLength为index内所有doc的平均term个数,freq为当前计算的term的频数,$k_1$和b为参数,其默认值分别为1.2和0.75:
注意:ES 为了分布式index和search的性能,docFreq
, docCount
and avgFieldLength
are computed per shard.
对短语的语义不起决定作用,对QA的查询贡献也小,这些词一般作为停用词表(stop list)
语法词:can, go, say, he;
功能词:介词of, about;
...client -> adaptor interface -> adaptor class -> adaptee
不要为了适应功能的interface而去继承修改,实现的耦合重不可复用,应该用adaptor来转换interface。
concrete:具体的,凝固。
tabular:扁平的,列表的
客户端代码调用工厂类,让工厂类的内部方法逻辑选择判断该实例化哪个具体类。
<font color=#CD5C5C> 变量其实只不过是程序可操作的存储区的名称。</font>C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
...