본문 바로가기

Lucene

[lucene] fieldsNorm


http://www.mail-archive.com/lucene-user@jakarta.apache.org/msg06275.html

루씬에서 디폴트로 랭킹 (유사도 점수)를 구하는 fact 중에 fieldsNorm이 있다..

fieldNorm is defined as

getBoost(t.field in d) * lengthNorm(t.field in d)


These two values are multipled into a single value at index time, and it is unfortunately impossible to separate them at search time, when explanations are produced.

If you never apply boosts, fieldNorm() is just lengthNorm(). If you apply boosts, then it is these two factors combined.

 

위의 계산식에 의해 계산되며 인덱싱 될 때 계산되고 검색시에는 저 값을 따로 분리 할 수 없다.

만약 필드에 가중치를 주지 않으면 lengthNorm만으로 계산이 된다.

 

Field#setOmitNorms(true) 이 메서드로 필드에 lengthNorm을 계산하지 않도록

설정 할 수 있다.

그런데, 이건 가중치도 적용이 안 되어 버린다.

Similarity#lengthNorm(String fieldName, int numTokens) return a constant (1f)

이렇게 하면 , lengthNorm만 적용되지 않도록 할 수 있다.