2010-01-21 5 views
4

J'utilise django-haystack en ce moment avec apache-solr comme backend.Une bonne application de recherche django? - Comment effectuer une recherche floue avec Haystack?

Le problème est que je ne peux pas obtenir l'application pour exécuter la fonctionnalité de recherche Je cherche

  1. Recherche de sous-parties en un mot

    par exemple. Recherche de "buntu" ne me donne pas "ubuntu"

  2. Recherche de mots similaires

    par exemple. Recherche de "Ubantu" donnerait "ubuntu"


Toute aide serait très apprécié.

Répondre

9

Il s'agit vraiment de la façon dont vous retransmettez la requête à Haystack (et donc à Solr). Vous pouvez faire une recherche « floue » dans Solr/Lucene en utilisant un ~ après le mot:

ubuntu~ 

reviendriez à la fois buntu et ubantu. Voir le Lucene documentation à ce sujet.

La manière dont vous passez ce test via Haystack dépend de la façon dont vous l'utilisez pour le moment. En supposant que vous utilisez le SearchForm par défaut, la meilleure chose serait de surcharger la méthode clean_q du formulaire pour ajouter le tilde à la fin de chaque mot dans les résultats de recherche, ou de surcharger la méthode search pour faire la même chose avant de la passer à la SearchQuerySet.

+0

cette solution ne fonctionne qu'avec solr n'est ce pas? – dzen

+0

Cela fonctionne maintenant pour Lucene et Solr. Les deux projets ont été fusionnés et ont maintenant une base de code commune. – mt3

Questions connexes