Solr: fieldNorm diferente por documento, sin aumento de documentos

Quiero que mis resultados de búsqueda se ordenen por puntaje, lo que están haciendo, pero el puntaje se calcula incorrectamente. Es decir, no necesariamenteincorrectamente, pero diferente de lo esperado y no estoy seguro de por qué. Mi objetivo es eliminar lo que sea que esté cambiando la puntuación.

Si realizo una búsqueda que coincide con dos objetos (donde se espera que ObjectA tenga una puntuación más alta que ObjectB), primero se devuelve ObjectB.

Digamos, para este ejemplo, que mi consulta es un solo término: "manzanas".

Título del objeto A: "las manzanas son manzanas" (2/3 términos)
Descripción de ObjectA: "¡Había manzanas en las manzanas-manzanas y ahora las manzanas se fueron por todas las manzanas!" (6/18 términos)
Título de ObjectB: "las manzanas son geniales" (1/3 términos)
Descripción de ObjectB: "¡Había manzanas en la sala de manzanas y ahora las manzanas se echaron a perder por todas partes!" (4/18 términos)

El campo de título no tiene impulso (o más bien, un impulso de 1) y el campo de descripción tiene un impulso de 0.8. No he especificado un aumento de documentos a través de solrconfig.xml o mediante la consulta que estoy pasando. Si hay otra forma de especificar un aumento de documentos, existe la posibilidad de que me falte uno.

Después de analizar elexplain impresión, se parece a ObjectAes calcular correctamente una puntuación más alta que ObjectB, tal como quiero, a excepción deuno diferencia: el campo de título de ObjectBorm siempre es más alto que el de ObjectA.

Aquí sigue elexplain imprimir. Para que lo sepas: el campo del título esmditem5_tns y el campo de descripción esmditem7_tns:

ObjectB:
1.3327172 = (MATCH) sum of:
  1.0352166 = (MATCH) max plus 0.1 times others of:
    0.9766194 = (MATCH) weight(mditem5_tns:appl in 0), product of:
      0.53929156 = queryWeight(mditem5_tns:appl), product of:
        1.8109303 = idf(docFreq=3, maxDocs=9)
        0.2977981 = queryNorm
      1.8109303 = (MATCH) fieldWeight(mditem5_tns:appl in 0), product of:
        1.0 = tf(termFreq(mditem5_tns:appl)=1)
        1.8109303 = idf(docFreq=3, maxDocs=9)
        1.0 = fieldNorm(field=mditem5_tns, doc=0)
    0.58597165 = (MATCH) weight(mditem7_tns:appl^0.8 in 0), product of:
      0.43143326 = queryWeight(mditem7_tns:appl^0.8), product of:
        0.8 = boost
        1.8109303 = idf(docFreq=3, maxDocs=9)
        0.2977981 = queryNorm
      1.3581977 = (MATCH) fieldWeight(mditem7_tns:appl in 0), product of:
        2.0 = tf(termFreq(mditem7_tns:appl)=4)
        1.8109303 = idf(docFreq=3, maxDocs=9)
        0.375 = fieldNorm(field=mditem7_tns, doc=0)
  0.2975006 = (MATCH) FunctionQuery(1000.0/(1.0*float(top(rord(lastmodified)))+1000.0)), product of:
    0.999001 = 1000.0/(1.0*float(1)+1000.0)
    1.0 = boost
    0.2977981 = queryNorm

ObjectA:
1.2324848 = (MATCH) sum of:
  0.93498427 = (MATCH) max plus 0.1 times others of:
    0.8632177 = (MATCH) weight(mditem5_tns:appl in 0), product of:
      0.53929156 = queryWeight(mditem5_tns:appl), product of:
        1.8109303 = idf(docFreq=3, maxDocs=9)
        0.2977981 = queryNorm
      1.6006513 = (MATCH) fieldWeight(mditem5_tns:appl in 0), product of:
        1.4142135 = tf(termFreq(mditem5_tns:appl)=2)
        1.8109303 = idf(docFreq=3, maxDocs=9)
        0.625 = fieldNorm(field=mditem5_tns, doc=0)
    0.7176658 = (MATCH) weight(mditem7_tns:appl^0.8 in 0), product of:
      0.43143326 = queryWeight(mditem7_tns:appl^0.8), product of:
        0.8 = boost
        1.8109303 = idf(docFreq=3, maxDocs=9)
        0.2977981 = queryNorm
      1.6634457 = (MATCH) fieldWeight(mditem7_tns:appl in 0), product of:
        2.4494898 = tf(termFreq(mditem7_tns:appl)=6)
        1.8109303 = idf(docFreq=3, maxDocs=9)
        0.375 = fieldNorm(field=mditem7_tns, doc=0)
  0.2975006 = (MATCH) FunctionQuery(1000.0/(1.0*float(top(rord(lastmodified)))+1000.0)), product of:
    0.999001 = 1000.0/(1.0*float(1)+1000.0)
    1.0 = boost
    0.2977981 = queryNorm

Respuestas a la pregunta(2)

Su respuesta a la pregunta