2010-03-11 5 views
13

Estaba navegando por la web en busca de un marco de indexación y búsqueda, y tropecé con Solr. Una funcionalidad que necesitamos absolutamente es aumentar los resultados según el campo que contenga el golpe.Resultados de Boost Solr basados ​​en el campo que contenía el hit

Un pequeño ejemplo:

Considere un disco como éste:

<movie> 
    <title>The Dark Knight</title> 
    <alternative_title>Batman Begins 2</alternative_title> 
    <year>2008</year> 
    <director>Christopher Nolan</director> 
    <plot>Batman, Gordon and Harvey Dent are forced to deal with the chaos unleashed by an anarchist mastermind known only as the Joker, as it drives each of them to their limits.</plot> 
</movie> 

quiero combinar, por ejemplo, el título, y la trama alternative_title campos en un campo de búsqueda, lo cual no es demasiado difícil después mirando la documentación y los tutoriales de Solr/Lucene. Sin embargo, también quiero que las películas que tienen un hit en el título tengan una puntuación más alta que hits en alternative_title y que, a su vez, tengan una puntuación más alta que hits en el campo de la trama. ¿Hay alguna forma de indicar este tipo de puntuación en el xml o necesitamos desarrollar algún algoritmo de puntuación personalizado?

Tenga en cuenta también que el ejemplo que he dado es ficticio y que los datos reales probablemente contengan más de 100 campos.

Gracias de antemano,

Tom

Respuesta

6

No he utilizado Solr, pero he utilizado Lucene. Al observar:

http://wiki.apache.org/solr/SolrQuerySyntax

Declara que la sintaxis de consulta de Solr es un superconjunto de Lucene de. Y en Lucene, la forma en que se pueden realizar aumentos por campo es utilizar el operador de zanahoria seguido por algún valor arbitrario, es decir,

title:batman^10 alternative_title:batman

La ventaja de hacer esto en la consulta en tiempo es que se puede ajustar el aumente el valor sobre la marcha para que coincida con cualquier estándar de relevancia que tenga. Entonces, si un valor de impulso de 10 es demasiado alto, puede ajustarlo de manera correspondiente.

11

Esto es para lo que se diseñó DismaxQueryParser de Solr. Ver http://wiki.apache.org/solr/DisMaxRequestHandler

Hay muchos parámetros, pero el principal que debe personalizar es "qf", que es cómo especifica qué campos se deben buscar y el impulso para cada uno. Así que si quieres título de dominar, puede especificar algo como:

título^10^2 alternative_title director de^1^1 parcela

como el valor del parámetro QF. Puede configurarlo personalizando la configuración de ejemplo y experimentando desde allí.

Cuestiones relacionadas