Boost lors d'une requete

80 views
Skip to first unread message

vgross

unread,
May 28, 2012, 5:20:41 AM5/28/12
to elastics...@googlegroups.com
Bonjour,

J'aimerais pouvoir choisir le boost lors d'une requete afin de pas renseigner ce champ lors du mapping (pour plus de flexibilité).

Mais je n'arrive pas à mes fins... je ne trouve pas d'exemple simple... si qqn pouvait m'éclairer... 

sur un mapping du style : 

$mapping->setProperties(array(
    'libelle'       => array('type' => 'string', 'include_in_all' => TRUE),
    'description'   => array('type' => 'string', 'include_in_all' => TRUE)
));

J'aimerais que lors d'une requête simple, le libelle soit plus fort que la description.
Voici ce que j'ai testé (et qui ne marche pas :-( ) :

   'query' => array(
        'text' => array(
            'libelle' => array(
                'query' => $_POST['searchQuery'],
                'boost' => 9
            )           
        ),
        'text' => array(
            'description' => array(
                'query' => $_POST['searchQuery'],
                'boost' => 0.2
            )           
        ) 
    )

Je ne sais pas si je fais ce qu'il faut mais en tout cas, ça ne marche pas :-(

David Pilato

unread,
May 28, 2012, 5:38:59 AM5/28/12
to elastics...@googlegroups.com

J'indique pour chaque champ le boost que je souhaite au moment de la query.

David

--
---
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/

vgross

unread,
May 28, 2012, 5:58:41 AM5/28/12
to elastics...@googlegroups.com
Malheureusement, je n'ai pas réussi non plus à utiliser cette requete...

Si je fais un truc du style :

$params = array(
   'field' => array(
        'libelle' => array(
            'query' => $_POST['searchQuery'],
            'boost' => 9
        ),
        'description' => array(
            'query' => $_POST['searchQuery'],
            'boost' => 9
        ) 
    )
); 

(J'utilise Elastica)

Ca me renvoie une belle erreur... je ne suis vraiment pas à l'aise avec ElasticSearch mais je sens le potentiel alors ça me frustre un poil :-)

vgross

unread,
May 28, 2012, 8:18:50 AM5/28/12
to elastics...@googlegroups.com
Aurais-tu un exemple avec plusieurs champs ? dans la doc officielle il y a un ".first", je ne sais pas à quoi cela correspond... et il y a uniquement un seul champ

Quand je fais un test avec :

$params = array(
    'query' => array(
        'field' => array(
            'libelle' => array(
                'query' => $_POST['searchQuery'],
                'boost' => 2.0
            )           
        )
    )
);

Tout va bien et j'ai le résultat attendu. Par contre, lorsque je teste avec 2 champs comme ceci :

$params = array(
    'query' => array(
        'field' => array(
            'libelle' => array(
                'query' => $_POST['searchQuery'],
                'boost' => 2.0
            ),
            'description' => array(
                'query' => $_POST['searchQuery'],
                'boost' => 1.0
            )            
        )
    )
);

La j'ai une erreur :

Fatal error: Uncaught exception 'Elastica_Exception_Response' with message 'SearchPhaseExecutionException[Failed to execute phase [query], total failure; shardFailures {[6u3iR-aESey9KK_5andmsA][myindex][1]: SearchParseException[[myindex][1]: query[libelle:noir^2.0],from[-1],size[-1]: Parse Failure [Failed to parse source [{"query":{"field":{"libelle":{"query":"noir","boost":2},"description":{"query":"noir","boost":1}}},"size":"10000"}]]]; nested: QueryParsingException[[myindex] [_na] query malformed, must start with start_object]; }{[6u3iR-aESey9KK_5andmsA][myindex][4]: SearchParseException[[myindex][4]: query[libelle:noir^2.0],from[-1],size[-1]: Parse Failure [Failed to parse source [{"query":{"field":{"libelle":{"query":"noir","boost":2},"description":{"query":"noir","boost":1}}},"size":"10000"}]]]; nested: QueryParsingException[[myindex] [_na] query malformed, must start with start_object]; }]' in C:\Users\Vincent\Documents\NetBeansProjects\trunk\msr\lib\Elastica\Transport\Http.php:113 Stack trace: #0 C:\Users\Vincent\ in C:\Users\Vincent\Documents\NetBeansProjects\trunk\msr\lib\Elastica\Transport\Http.php on line 113

Je bloque depuis ce matin sur cette erreur, il me reste pas beaucoup de cheveux :-/

Le lundi 28 mai 2012 11:38:59 UTC+2, David a écrit :

David Pilato

unread,
May 28, 2012, 1:16:20 PM5/28/12
to elastics...@googlegroups.com
Pas sous la main, mais je devrais pouvoir t'envoyer ça demain.

David

vgross

unread,
May 28, 2012, 2:24:54 PM5/28/12
to elastics...@googlegroups.com
Merci c'est gentil :-) je suis vraiment coincé et j'arrive pas a me debloquer seul ! Ca manque terriblement de documentation... Et celle d'elasticsearch manque aussi d'exemple concret...

Merci de ton aide !

da...@pilato.fr

unread,
May 29, 2012, 3:36:24 AM5/29/12
to elastics...@googlegroups.com

Donc, en Java, j'écris ça comme ça :

 

qb = new QueryStringQueryBuilder(mySearchString)

  .defaultField("_all")

  .field("myfield1", 1.5f)

  .field("myfield2", 3.0f);

 

Ce qui donne en CURL quelque chose de ce genre.

{
  "query" : {
    "query_string" : {
      "query" : "montexte",
      "default_field" : "_all",
      "fields" : [ "_all^1.0", "myfield1^1.5", "myfield2^3.0" ]
    }
  }
}

 

David. 

 


Le 28 mai 2012 à 20:24, vgross <vince...@gmail.com> a écrit :

> Merci c'est gentil :-) je suis vraiment coincé et j'arrive pas a me debloquer seul ! Ca manque terriblement de documentation... Et celle d'elasticsearch manque aussi d'exemple concret...
>
> Merci de ton aide !
>
> --
> ---
> 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/


--
David Pilato
http://dev.david.pilato.fr/
Twitter : @dadoonet

vgross

unread,
May 29, 2012, 4:02:43 AM5/29/12
to elastics...@googlegroups.com, da...@pilato.fr
Hourra ! Merci ! 

Ça fonctionne ! 

Je n'avais trouvé aucun exemple similaire dans mes recherches... 

Encore merci à toi ! :-) 

Bonne journée !
Reply all
Reply to author
Forward
0 new messages