2010-07-01 2 views
1

Je suis nouveau à Haystack et au monde de la recherche, donc je ne savais pas comment poser cette question.Django + Haystack comment faire cette recherche

Ce que je veux réaliser est le suivant.

Ayant une requête de recherche comme: un deux

Je voudrais obtenir renvoyé tout contenu comme:

  • Celui
  • un
  • deux
  • deux un
  • quelque chose ici

Est-ce possible avec Haystack + solr/xapian? Est-il également possible d'avoir une pertinence sur le résultat? Dans le cas où les deux mots sont frappés, cela me donnerait plus de pertinence. J'utilise actuellement SearchQuerySet à mon avis, mais je ne peux pas y parvenir.

Vive

Répondre

1

Vous cherchez donc essentiellement un droit de requête de type OR? Par défaut, haystack utilise une opération AND pour joindre des requêtes.

Vous pouvez le faire de deux façons:

  • changement HAYSTACK_DEFAULT_OPERATOR au sein de votre settings.py être OR. Ce sera évidemment un changement à l'échelle du site.
  • Modifiez votre formulaire SearchQuerySet pour utiliser filter_or, ce qui forcera la recherche de style OR. Donc, passer un nouveau dans votre formulaire/vue: SearchQuerySet.filter_or(**kwargs)

En dehors de cela, vous pouvez toujours joindre des objets Django Q ensemble, mais étant donné que vous avez ces options, ce sont probablement votre meilleur pari. Par souci de pertinence, vous devriez lire la page Best Practices qui permet d'utiliser des modèles de recherche et de les rendre votre moyen d'afficher un contenu pertinent.

Espérons que ça aide!

Questions connexes