title: Why I got strange norm value in es?
body: <p>I got the explain result:</p>
  
  <pre><code>{
      "_index": "scoretest",
      "_type": "test",
      "_id": "2",
      "matched": true,
      "explanation": {
          "value": 0.8784157,
          "description": "weight(content:chinese in 1) [PerFieldSimilarity], result of:",
          "details": [
              {
                  "value": 0.8784157,
                  "description": "fieldWeight in 1, product of:",
                  "details": [
                      {
                          "value": 1,
                          "description": "tf(freq=1.0), with freq of:",
                          "details": [
                              {
                                  "value": 1,
                                  "description": "termFreq=1.0"
                              }
                          ]
                      },
                      {
                          "value": 1.4054651,
                          "description": "idf(docFreq=1, maxDocs=3)"
                      },
                      {
                          "value": 0.625,
                          "description": "fieldNorm(doc=1)"
                      }
                  ]
              }
          ]
      }
  }
  </code></pre>
  
  <p>and my document is :</p>
  
  <pre><code>chinese book
  </code></pre>
  
  <p>notice the fieldNorm is 0.625</p>
  
  <p>but follow to:</p>
  
  <pre><code>public float lengthNorm(FieldInvertState state) {
      final int numTerms;
      if (discountOverlaps)
          numTerms = state.getLength() - state.getNumOverlap();
      else
          numTerms = state.getLength();
      return state.getBoost() * ((float) (1.0 / Math.sqrt(numTerms)));
  }
  </code></pre>
  
  <p>I think it should be 1/sqrt(2) = 0.71428571428571</p>
  
  <p>I found the explain it may be because of decode and encode.</p>
  
  <p>1 But I'm not sure is that indeed because of decode? or my calc mistake?</p>
  
  <p>2 in the formula, what is state.getBoost()?</p>