lucene 相似度默认实现:计算文档长度时没有调用lengthNorm方法文档长度。
public float lengthNorm(String fieldName, int numTerms) {
return (float) (1.0 / Math.sqrt(numTerms));
}
源码剖析:
TermQuery类下的方法:
public Explanation explain(IndexReader reader, int doc) throws IOException {
...
//从索引中读取byte[]值,在创建索引的时候已经写入了
byte[] fieldNorms = reader.norms(field);
float fieldNorm =
fieldNorms!=null ? Similarity.decodeNorm(fi