Bonjour,
J'ai créé un index comme suit :
$elasticaIndex->create(
array(
'number_of_shards' => 4,
'number_of_replicas' => 0,
'analysis' => array(
'analyzer' => array(
'autocomplete' => array(
'tokenizer' => 'whitespace',
'filter' => array('asciifolding', 'lowercase', 'autocomplete')
)
),
'filter' => array(
'autocomplete' => array(
'type' => 'edgeNGram',
'min_gram' => '3',
'max_gram' => '15',
'side' => 'front',
)
)
)
),
true
);
Mon mapping est le suivant :
$mapping->setProperties(array(
'id' => array('type' => 'integer', 'include_in_all' => FALSE),
"mot_FR" => array('type' => 'string', 'include_in_all' => TRUE, "analyzer" => "autocomplete"),
));
Pour faire de l'autocomplétion, cela fonctionne plutôt pas mal.
Par contre, j'effectue aussi de la recherche sur mon champ "mot_FR", et là les résultats ne sont pas toujours pertinent.
Par exemple, j'ai des documents indexés par les mots "1 personne", "2 personnes", "groupe de personnes"
Si j'effectue une recherche avec le terme "2 personnes", ce ne sont pas mes documents indexés par "2 personnes" qui arrivent en premier mais ceux indexés par ""groupe de personnes" ... du coup ce n'est pas pertinent ...
Une idée ?
Merci,