Pondération de champs

395 views
Skip to first unread message

Emmanuel Bouton

unread,
Feb 17, 2012, 6:28:00 PM2/17/12
to elasticsearch-fr
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 ?

Merci,
a+
Emmanuel

Elasticsearch FR

unread,
Feb 17, 2012, 10:18:48 PM2/17/12
to elastics...@googlegroups.com
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.

Un exemple ici : http://www.elasticsearch.org/guide/reference/query-dsl/field-query.html


David ;-)
@dadoonet

> --
> ---
> Vous pouvez également poster et consulter les réponses en anglais sur le groupe Elasticsearch https://groups.google.com/group/elasticsearch
>
> Si vous avez également posté votre question sur la mailing list elasti...@googlegroups.com, merci d'indiquer ici le lien vers cette discussion pour faciliter le suivi.
>
> Twitter : @ElasticsearchFR https://twitter.com/#!/ElasticsearchFR
> Site web (English) : http://www.elasticsearch.org/

Emmanuel Bouton

unread,
Feb 18, 2012, 3:25:42 AM2/18/12
to elastics...@googlegroups.com
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

Jérôme Mainaud

unread,
Feb 18, 2012, 4:06:46 AM2/18/12
to elastics...@googlegroups.com

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.

Par exemple:
...
{
    ...
    "boost" : {
            "type" : "float",
            "null_value" : 1.0
     } ,
    "_boost" : {
            "name" : "boost"
     }
}

Après, l'exemple recursif de la doc où _boost est en même temps un champ spécial et normal est un peu foireux.

Jérôme

Le 18 févr. 2012 09:26, "Emmanuel Bouton" <got...@gmail.com> a écrit :

Emmanuel Bouton

unread,
Feb 18, 2012, 5:38:51 AM2/18/12
to elastics...@googlegroups.com
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 ...

Emmanuel Bouton

unread,
Feb 18, 2012, 8:13:18 AM2/18/12
to elastics...@googlegroups.com
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.html
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

David Pilato

unread,
Feb 18, 2012, 8:17:02 AM2/18/12
to elastics...@googlegroups.com
Regarde aussi la partie explain
http://www.elasticsearch.org/guide/reference/api/search/explain.html


David ;-)
@dadoonet

Stéphane Tessier

unread,
Mar 2, 2012, 4:42:19 AM3/2/12
to elastics...@googlegroups.com
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 ?

Merci d'avance,

Stéphane.

ps : pour info, j'utilise le plugin grails

David Pilato

unread,
Mar 4, 2012, 5:35:06 PM3/4/12
to elastics...@googlegroups.com

Salut Stéphane,

 

J’ai vu ta question aussi ici : http://groups.google.com/group/elasticsearch/browse_thread/thread/10e0db71240b7bdc/5859ac6f0b4fa31d?hl=fr%E1%9B%A3ac6f0b4fa31d

 

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 : elastics...@googlegroups.com [mailto:elastics...@googlegroups.com] De la part de Stéphane Tessier
Envoyé : vendredi 2 mars 2012 10:42
À : elastics...@googlegroups.com
Objet : Re: [elasticsearch-fr] Pondération de champs

--

Stéphane Tessier

unread,
Mar 6, 2012, 4:09:50 AM3/6/12
to elastics...@googlegroups.com
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 :

Salut Stéphane,

 

J’ai vu ta question aussi ici : http://groups.google.com/group/elasticsearch/browse_thread/thread/10e0db71240b7bdc/5859ac6f0b4fa31d?hl=fr%E1%9B%A3ac6f0b4fa31d

 

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


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 ?

 

Merci d'avance,

 

Stéphane.

 

ps : pour info, j'utilise le plugin grails

--
---
Vous pouvez également poster et consulter les réponses en anglais sur le groupe Elasticsearch https://groups.google.com/group/elasticsearch
 
Si vous avez également posté votre question sur la mailing list elasti...@googlegroups.com, merci d'indiquer ici le lien vers cette discussion pour faciliter le suivi.
 
Twitter : @ElasticsearchFR https://twitter.com/#!/ElasticsearchFR
Site web (English) : http://www.elasticsearch.org/


Le dimanche 4 mars 2012 23:35:06 UTC+1, David a écrit :

Salut Stéphane,

 

J’ai vu ta question aussi ici : http://groups.google.com/group/elasticsearch/browse_thread/thread/10e0db71240b7bdc/5859ac6f0b4fa31d?hl=fr%E1%9B%A3ac6f0b4fa31d

 

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


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 ?

 

Merci d'avance,

 

Stéphane.

 

ps : pour info, j'utilise le plugin grails

--
---
Vous pouvez également poster et consulter les réponses en anglais sur le groupe Elasticsearch https://groups.google.com/group/elasticsearch
 
Si vous avez également posté votre question sur la mailing list elasti...@googlegroups.com, merci d'indiquer ici le lien vers cette discussion pour faciliter le suivi.
 
Twitter : @ElasticsearchFR https://twitter.com/#!/ElasticsearchFR
Site web (English) : http://www.elasticsearch.org/


Le dimanche 4 mars 2012 23:35:06 UTC+1, David a écrit :

Salut Stéphane,

 

J’ai vu ta question aussi ici : http://groups.google.com/group/elasticsearch/browse_thread/thread/10e0db71240b7bdc/5859ac6f0b4fa31d?hl=fr%E1%9B%A3ac6f0b4fa31d

 

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


Objet : Re: [elasticsearch-fr] Pondération de champs

elmapping.png
Reply all
Reply to author
Forward
0 new messages