J'ai un index de recherche avec ElasticSearch comme back-end:Django-Haystack (ElasticSearch) Autocomplete donnant des résultats pour substring à la recherche terme
class MySearchIndex(indexes.SearchIndex, indexes.Indexable):
...
name = indexes.CharField(model_attr='name')
name_auto = indexes.NgramField(model_attr='name')
...
Supposons que je les valeurs suivantes dans ElasticSearch:
Cable
Magnet
Network
Internet
Switch
Quand je recherche execute 'netw' il est revenu Aimant & Internet également avec Réseau. En utilisant d'autres cas de test, je pense que haystack recherche aussi la sous-chaîne, comme net dans netw comme vous le voyez dans l'exemple ci-dessus.
Voici le code:
sqs = sqs.filter(category='cat_name').using(using)
querried = sqs.autocomplete(name_auto=q)
aussi essayé avec:
querried = sqs.autocomplete(name_auto__contains=q)
Comment puis-je résoudre ce problème et le faire fonctionner pour retourner uniquement les résultats qui contient terme de recherche exacte?
L'utilisation django-botte de foin == == 2.4.1 Django 1.9.1 ElasticSearch == 1.9.0