I have a Solr (3.2.0) instance with omitNorms=true on all fields. This has been done in an attempt to not penalize documents which have many tags.
3.7455106 = (MATCH) fieldWeight(track_hierarchynode:pop in 258465), product of:
2.236068 = tf(termFreq(track_hierarchynode:pop)=5)
6.700173 = idf(docFreq=6960, maxDocs=2080776)
0.25 = fieldNorm(field=track_hierarchynode, doc=258465)
What puzzles me is that, despite omitNorms=true, the fieldNorm is still calculated and affects the score.
How is the fieldNorm value calculated when omitNorms=true?
The calculation of 1 / sqrt(5) = 0.4472 does not explain the value of 0.25 for fieldNorm in this case.
Relevant parts from schema.xml :
<field name="track_hierarchynode" type="textProcessed" indexed="true" stored="false" multiValued="true"/>
<!-- A field which tokenizes on whitespace, and which creates additional tokens
based on WordDelimiterFactory. Each term is lowercased and trimmed. -->
<fieldType name="textProcessed" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<!--
preserveOriginal : enable this option to also index the original token.
splitOnCaseChange : enable this option to split a token into multiple tokens based on case change.
splitOnNumerics : enable this option to split a token into multiple tokens based on numbers.
stemEnglishPossesive: enable this to remove trailing 's from tokens.
generateWordParts : enable this option to split a textual token into multiple tokens based on e.g. hyphens.
catenateWords : enable this option to generate different textual token combinations of tokens that are split.
generateNumberParts : enable this option to split a numeric token into multiple tokens based on e.g. hyphens.
catenateNumbers : enable this option to generate different numerical token combinations of tokens that are split.
catenateAll : enable this option to generate different token combinations of tokens that are split (both textual and numerical).
-->
<filter class="solr.WordDelimiterFilterFactory" preserveOriginal="0" splitOnCaseChange="1" splitOnNumerics="1" stemEnglishPossessive="1" generateWordParts="1" catenateWords="1" generateNumberParts="1" catenateNumbers="1" catenateAll="0"/>
<!--<filter class="solr.LengthFilterFactory" min="2" max="255"/>-->
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" preserveOriginal="0" splitOnCaseChange="1" splitOnNumerics="1" stemEnglishPossessive="1" generateWordParts="1" catenateWords="1" generateNumberParts="1" catenateNumbers="1" catenateAll="0"/>
<!--<filter class="solr.LengthFilterFactory" min="2" max="255" />-->
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
</analyzer>
</fieldType>