2010-09-21 7 views
5

Comencé a trabajar en el componente de recuperación de currículum (documento) basado en el motor de lucene.net. Funciona muy bien, y se obtiene el documento y la puntuación se basa en laCalcular el puntaje solo en función de que los documentos tengan más ocurrencia del término en lucene

la idea detrás de la VSM es la más veces que aparece un término de consulta en un documento en relación con el número de veces que aparece el término en todos los documentos en la colección, más relevante que el documento es a la consulta .

La función de puntuación práctica de Lucene se deriva de lo que sigue.

score(q,d)=coord(q,d)·queryNorm(q)· ∑(tf(t in d) ·idf(t)2 · t.getBoost() · norm(t,d)) 
            t in q 

en este

  • tf (t en d) se correlaciona con la frecuencia del término, se define como el número de veces término t aparece en el documento actualmente anotado d. Los documentos que tienen más apariciones de un término determinado reciben una puntuación más alta
  • idf (t) significa Frecuencia inversa de documentos. Este valor se correlaciona con el inverso de docFreq (la cantidad de documentos en los que aparece el término t). Esto significa que los términos más raros dan una mayor contribución al puntaje total.

Esto es realmente muy grande en la mayor parte de la situación, pero debido al cálculo fieldnorm el resultado no es exacto

valor fieldnorm también conocido como "norma longitud del campo" representa la longitud de ese campo en ese documento (por lo tanto, los campos más cortos se aumentan automáticamente).

Debido a esto no se obtuvieron los resultados precisos. Digamos por ejemplo que obtuve 10000 documentos en los que 3000 documentos obtuvieron la palabra clave java y oracle. Y el número de veces que aparece varía en cada documento.

  • asumen doc Un consiguió 10 java 20 oráculo entre 1000 palabras y doc B tiene 2 Java 2 oráculo entre 50 palabras
  • si estoy en busca de una consulta "java y Oracle", Lucene vuelve doc B con puntuación más alta debido a la normalización de la longitud.

Debido a la naturaleza del negocio que necesitamos para recuperar los documentos obtuvo más ocurrencia de palabra clave de búsqueda debe ser lo primero, realmente no nos importa la longitud del documento.

Debido a esto, un individuo con un gran currículum con muchas palabras clave se ha movido más abajo en el resultado y surgieron algunos pequeños curriculums.

Para evitar eso, necesito desactivar la normalización de la longitud. ¿¿Puede alguien ayudarme con esto??

He adjuntado la imagen del resultado de Lucas para su referencia.

En esta imagen, el documento con java 50 veces y el oráculo 6 veces se bajó a la posición 11.

alt text

Pero este documento con Java y Oracle 24 veces 5 veces es un marcador superior debido a la fieldnorm.

alt text

esperanza que transmitió la información clara ... Si no me pueden solicitar, i voy a dar más información

Respuesta

7

Puede desactivar la normalización de longitud con Field.setOmitNorms(true)

+0

gracias Shashikant, i ll trato que .. :) – RameshVel

+0

Shasi, funciona como se esperaba ... salvaste mi día ...... – RameshVel

+0

pregunta larga para una respuesta tan corta;) – serg10

Cuestiones relacionadas