0

Si j'entre la requête "apple" je souhaite obtenir les résultats comme "xyzapplexyz", "apple", "applexyz" et pas comme comme "app" ou "appl". Mais ce que je reçois est "applexyz", "app", etc.Utilisation de django-haystack + Elasticsearch comment puis-je rechercher des sous-ensembles d'un mot?

Je l'ai utilisé sur le terrain de EdgeNgram et j'ai essayé d'interroger en utilisant les éléments suivants: -

1 - >>SearchQuerySet().all().autocomplete(authors=query)

2- - >>SearchQuerySet().all().filter(authors=query)

3 - >>SearchQuerySet().all().filter(content=query)

4 - >>SearchQuerySet().all().autocomplete(content=query)

Mais aucun d'eux ne donne les résultats requis. Comment puis-je résoudre ce problème?

Répondre

0

Si vous voulez des résultats comme "xyzapplexyz", alors vous devrez utiliser ngram analyzer au lieu de EdgeNGram ou vous pouvez utiliser les deux en fonction de vos besoins. EdgeNGram génère des jetons uniquement depuis le début.

avec NGrampomme sera l'un des jetons générés pour terme xyzapplexyz en supposant max_gram >=5 et vous obtiendrez des résultats attendus, aussi search_analyzer doit être différent ou vous obtiendrez des résultats étranges.

également index size pourrait être assez grand avec ngram si vous avez gros morceau de texte