Boost Solr résultats basés sur le champ qui contenait le coup
J'ai été la navigation sur le web à la recherche d'une indexation et de recherche de cadre et je suis tombé sur Solr.
Une fonctionnalité que nous avons absolument besoin est de dynamiser les résultats en fonction de ce champ de la frapper.
Un petit exemple:
Envisager un dossier comme ceci:
<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>
Je veux combiner par exemple le titre, alternative_title et le tracé des champs dans un champ de recherche, qui n'est pas trop difficile après avoir regardé la Solr/Lucene de la documentation et des tutoriels.
Cependant, je veux aussi que les films qui ont un coup dans le titre ont un score plus élevé que les visites sur les alternative_title et ceux qui sont à leur tour score supérieur frappe dans la parcelle de terrain.
Est-il possible d'indiquer ce genre de notation dans le xml, ou devons-nous développer coutume, l'algorithme de scoring?
Veuillez également noter que l'exemple que j'ai donné, c'est de la fiction et le réel de données sera probablement contenir 100+ champs.
Merci d'avance,
Tom
source d'informationauteur TomFor | 2010-03-11
Vous devez vous connecter pour publier un commentaire.
C'est ce que Solr est DismaxQueryParser a été conçu pour. Voir http://wiki.apache.org/solr/DisMaxRequestHandler
Il y a beaucoup de paramètres, mais le principal que vous devez personnaliser l'est "qf", qui est la façon dont vous spécifier quels champs doivent être recherchés et le coup de pouce pour chacun d'eux. Donc, si vous voulez le titre de dominer, vous pouvez spécifier quelque chose comme:
titre^10 alternative_title^2 directeur^1 parcelle^1
que la valeur de la qf paramètre. Vous pouvez faire cela par la personnalisation de la configuration d'exemple et d'expérimenter à partir de là.
Je n'ai pas utilisé Solr, mais j'ai utilisé Lucene. En la regardant:
http://wiki.apache.org/solr/SolrQuerySyntax
Il affirme que Solr est la syntaxe de la requête est un sur-ensemble de Lucene. Et dans Lucene, la façon dont vous pouvez effectuer par champ booste est d'utiliser la carotte opérateur suivie par une valeur arbitraire, c'est à dire
title:batman^10 alternative_title:batman
L'avantage de le faire lors de la requête en temps, c'est que vous pouvez modifier la valeur d'amplification sur la volée pour correspondre quelle que soit la norme de pertinence, vous avez. Donc, si un coup de pouce de la valeur de 10 est trop élevé, vous pouvez l'ajuster en conséquence.
Si c'est une fonctionnalité qui n'est pas spécifique à une recherche, mais l'ensemble du site. Vous pouvez stimuler le titre au moment de l'indexation. Stimuler donner le champ d'un plus haut niveau de pertinence, qui sonne exactement ce que vous voulez.
Consultez ce lien:
http://wiki.apache.org/solr/UpdateXmlMessages#Optional_attributes_for_.22field.22