Nicolas Martin
unread,Apr 25, 2012, 6:27:45 AM4/25/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to elastics...@googlegroups.com
Bonjour,
Je voudrais à partir d'un formulaire de recherche contenant qu'un seul input pouvoir effectuer des recherches sur plusieurs champs.
Voici la liste des champs et qq exemples d'enregistrements dont je dispose :
id | nom | prenom | numeroCommande
1 | dupont | Michel | AA01
2 | dupond | Marcel | AA02
3 | Michel | Lou | AA02
J'ai réussi à utiliser le highlight afin de déterminer lorsque je fais une recherche globale si mon enregistrement a été trouvé dans tel ou tel champ.
Maintenant je voudrais pouvoir retrouver des enregistrements en recherchant un nom complet (nom + prénom) sachant que l'utilisateur devra pourvoir saisir le prénom avant le nom ou le contraire.
ex :
"michel dupont" doit retrouver les enregistrements 1 - 3 - 2 (par ordre de scoring)
idem si l'utilisateur tape "dupont michel"
J'avais déjà réalisé cela sous SOLR en créant 3 champs supplémentaires concaténant nom + prénom et de types différents (recherche stricte, phonétique et EdgeNGramFilterFactory). Ainsi je pouvais retrouver des enregistrements sans me soucier de l'ordre "nom prénom" ou "prenom nom", des erreurs syntaxiques "dupont ou dupond".
J'avais donc le schéma suivant
id | nom | prenom | nomCompletClient | nomCompletClientStrict | nomCompletClientEdgeNGram| numeroCommande
Je voudrais maintenant réaliser la même chose sous ES. Existe t'il une méthode plus simple pour effectuer ce type de recherche ? ou il est préférable que j'utilise d'autres champs liés à des analyseurs bien particuliers?
J'espere avoir été clair, Merci pour vos conseils :-)