J'aimerais savoir comment jouer sur la pondération de certains champs, voire même de certains enregistrements. Partons sur l'exemple d'un index de livres : { "titre":"L'écume des jours", "auteur":"Boris Vian", "statut":"validé" }
J'aimerais que le titre du livre ait un poid plus fort dans la recherche que l'auteur. De plus j'aimerais que les enregistrements qui ont le statut "validé" aient un poids plus fort que les autres.
Est-ce que c'est avec le champ _boost que je dois jouer ? Si oui comment ?
Oui, le champ boost sert à cela. Tu peux définir un mapping pour le type et dans le mapping, indiquer le boost que tu veux sur un champ.
Si la valeur de boost est inférieure à 1, le champ aura *moins* d'importance.
Shay a néanmoins donné un excellent conseil à propos du boost.
Il vaut mieux laisser un mapping *neutre* en terme de boost et indiquer au moment de la recherche des poids pour les champs. Je viens d'appliquer ce conseil dans mon projet, et c'est en effet, beaucoup plus intéressant car tu peux jouer avec le boost, sans avoir à reindexer tes données.
> J'aimerais savoir comment jouer sur la pondération de certains champs, > voire même de certains enregistrements. > Partons sur l'exemple d'un index de livres : > { "titre":"L'écume des jours", "auteur":"Boris Vian", "statut":"validé" }
> J'aimerais que le titre du livre ait un poid plus fort dans la > recherche que l'auteur. > De plus j'aimerais que les enregistrements qui ont le statut "validé" > aient un poids plus fort que les autres.
> Est-ce que c'est avec le champ _boost que je dois jouer ? Si oui comment ?
> Si vous avez également posté votre question sur la mailing list elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette discussion pour faciliter le suivi.
Ok merci ;) Quelle est exactement la convention du underscore ? Pourquoi _boost lors du mapping et boost dans une query ? Et pourquoi _search ?
Je suis d'accord avec le conseil de Shay pour le boost à la query en ce qui concerne les champs. Par contre pour le boost au niveau de l'enregistrement, je pense que je vais quand meme le faire au niveau mapping car il dépend de la valeur d'un champ. Je ne vois pas comment faire ça, et meme si c'est faisable j'ai peur que ça complique la requête pour pas grand chose.
Merci encore pour ta réponse :) a+ Emmanuel
Le 18 février 2012 04:18, Elasticsearch FR <elasticsearc...@gmail.com> a écrit :
> Oui, le champ boost sert à cela. > Tu peux définir un mapping pour le type et dans le mapping, indiquer le boost que tu veux sur un champ.
> Si la valeur de boost est inférieure à 1, le champ aura *moins* d'importance.
> Shay a néanmoins donné un excellent conseil à propos du boost.
> Il vaut mieux laisser un mapping *neutre* en terme de boost et indiquer au moment de la recherche des poids pour les champs. > Je viens d'appliquer ce conseil dans mon projet, et c'est en effet, beaucoup plus intéressant car tu peux jouer avec le boost, sans avoir à reindexer tes données.
> Le 18 févr. 2012 à 00:28, Emmanuel Bouton <got...@gmail.com> a écrit :
>> Bonjour,
>> J'aimerais savoir comment jouer sur la pondération de certains champs, >> voire même de certains enregistrements. >> Partons sur l'exemple d'un index de livres : >> { "titre":"L'écume des jours", "auteur":"Boris Vian", "statut":"validé" }
>> J'aimerais que le titre du livre ait un poid plus fort dans la >> recherche que l'auteur. >> De plus j'aimerais que les enregistrements qui ont le statut "validé" >> aient un poids plus fort que les autres.
>> Est-ce que c'est avec le champ _boost que je dois jouer ? Si oui comment ?
>> Si vous avez également posté votre question sur la mailing list elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette discussion pour faciliter le suivi.
> Si vous avez également posté votre question sur la mailing list elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette discussion pour faciliter le suivi.
Bonjour, Le souligné permet de distinguer les champs ou actions d'ES des champs ou valeurs de l'utilisateur. Ainsi, tu peux créer un champ "boost" dans ton mapping.
Ah c'est bizarre parce que j'ai intégré un champ boost (sans le _boost) dans mon mapping et il semble qu'elasticsearch s'en serve pour la pondération de l'enregistrement, car ce sont ceux qui ont un champ boost fort qui remontent en premier ...
Le 18 février 2012 10:06, Jérôme Mainaud <jer...@mainaud.com> a écrit :
> Bonjour, > Le souligné permet de distinguer les champs ou actions d'ES des champs ou > valeurs de l'utilisateur. Ainsi, tu peux créer un champ "boost" dans ton > mapping.
> Si vous avez également posté votre question sur la mailing list > elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette > discussion pour faciliter le suivi.
> Ah c'est bizarre parce que j'ai intégré un champ boost (sans le > _boost) dans mon mapping et il semble qu'elasticsearch s'en serve pour > la pondération de l'enregistrement, car ce sont ceux qui ont un champ > boost fort qui remontent en premier ...
> Le 18 février 2012 10:06, Jérôme Mainaud <jer...@mainaud.com> a écrit : >> Bonjour, >> Le souligné permet de distinguer les champs ou actions d'ES des champs ou >> valeurs de l'utilisateur. Ainsi, tu peux créer un champ "boost" dans ton >> mapping.
>> Si vous avez également posté votre question sur la mailing list >> elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette >> discussion pour faciliter le suivi.
> Je dis des conneries ... j'ai bien mis _boost dans mon mapping :D
> De plus je viens de voir ça : > http://www.elasticsearch.org/guide/reference/query-dsl/boosting-query... > Donc apparemment je peux aussi appliquer une pondération plus forte à > l'enregistrement en fonction de la valeur d'un de ses champs, je vais > donc suivre les conseils des experts ;).
> Merci à tous les deux :) > a+ > Emmanuel
> Le 18 février 2012 11:38, Emmanuel Bouton <got...@gmail.com> a écrit : >> Ah c'est bizarre parce que j'ai intégré un champ boost (sans le >> _boost) dans mon mapping et il semble qu'elasticsearch s'en serve pour >> la pondération de l'enregistrement, car ce sont ceux qui ont un champ >> boost fort qui remontent en premier ...
>> Le 18 février 2012 10:06, Jérôme Mainaud <jer...@mainaud.com> a écrit : >>> Bonjour, >>> Le souligné permet de distinguer les champs ou actions d'ES des champs ou >>> valeurs de l'utilisateur. Ainsi, tu peux créer un champ "boost" dans ton >>> mapping.
>>> Si vous avez également posté votre question sur la mailing list >>> elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette >>> discussion pour faciliter le suivi.
> Si vous avez également posté votre question sur la mailing list elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette discussion pour faciliter le suivi.
pour ma part, j'ai quelques zones d'ombres au niveau de l'utilisation du boost.
Peut-on appliquer le boost à un component (ie un type inclu dans un type root) ?
Si oui, faut-il l'appliquer au niveau de l'inclusion du component, ou directement sur les attributs du component ou les 2 ?
Si les deux, est-ce que les facteurs se multiplient ?
J’avoue que comme Shay, je n’ai pas compris la notion de composant. Il s’agit peut-être d’une notion de grails ?
Ce que je sais du boost :
Tu peux l’appliquer à un champ particulier de ton mapping ou mieux le choisir au moment de la recherche sur un champ particulier.
Peux-tu envoyer un exemple de mapping dont tu parles pour te faire une réponse peut-être plus précise ?
David.
De : elasticsearch-fr@googlegroups.com [mailto:elasticsearch-fr@googlegroups.com] De la part de Stéphane Tessier Envoyé : vendredi 2 mars 2012 10:42 À : elasticsearch-fr@googlegroups.com Objet : Re: [elasticsearch-fr] Pondération de champs
Bonjour,
pour ma part, j'ai quelques zones d'ombres au niveau de l'utilisation du boost.
Peut-on appliquer le boost à un component (ie un type inclu dans un type root) ?
Si oui, faut-il l'appliquer au niveau de l'inclusion du component, ou directement sur les attributs du component ou les 2 ?
Si les deux, est-ce que les facteurs se multiplient ?
Si vous avez également posté votre question sur la mailing list elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette discussion pour faciliter le suivi.
Ce que j'appelle un composant est un type dans un type, comme tu peux le voir sur mon screenshot.
De ce que j'ai compris de la réponse de Shay, on peut appliquer un boost sur un composant qui vaut pour chacun de ses champs, ensuite on peut surcharger chacun de ses champs.
Le dimanche 4 mars 2012 23:35:06 UTC+1, David a écrit :
> Si vous avez également posté votre question sur la mailing list > elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette > discussion pour faciliter le suivi.
> Si vous avez également posté votre question sur la mailing list > elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette > discussion pour faciliter le suivi.
> Si vous avez également posté votre question sur la mailing list > elasticsearch@googlegroups.com, merci d'indiquer ici le lien vers cette > discussion pour faciliter le suivi.