Quelle est la meilleure application de recherche Django? [fermé]


110

Je construis un projet Django qui nécessite une fonctionnalité de recherche, et jusqu'à ce qu'il y en ait un django.contrib.search, je dois choisir une application de recherche. Alors, quel est le meilleur? Par «meilleur», je veux dire ...

  • facile à installer / configurer
  • a une API Django- ou au moins compatible avec Python
  • peut effectuer des recherches raisonnablement complexes

Voici quelques applications dont j'ai entendu parler, veuillez en suggérer d'autres si vous en connaissez:

Je voudrais également éviter d'utiliser un moteur de recherche tiers (comme Google SiteSearch), car certaines des données que je souhaite indexer sont réservées aux membres du site et ne doivent pas être publiques.



Normalement, les choses comme «meilleur» sont assez subjectives, mais django a vraiment une «meilleure» application de recherche comme le montre la réponse acceptée.

À moins que je ne comprenne totalement django, il s'agit toujours d'une demande de bibliothèque et donc hors sujet.
Jeffrey Bosboom

Réponses:


104

Découvrez Haystack Search - une nouvelle couche d'abstraction de recherche basée sur un modèle qui prend actuellement en charge Xapian , Solr et Whoosh . On dirait qu'il est bien pris en charge et documenté.


3
Haystack est en cours de développement actif et l'auteur est toujours disponible via la liste de diffusion.
Tom

2
De djangosearch project: "Ce projet n'est plus en développement actif. Si vous recherchez une application de recherche en texte intégral django qui fonctionne avec plusieurs moteurs de recherche, consultez haystack. Si vous recherchez quelque chose de spécifique à Solr, vous pourriez veux essayer le solango. "
Esteban Feldman

Haystack a été mal, voire pas du tout, soutenu pendant un certain temps. Je vous recommande de l'éviter à ce stade. Peut-être qu'ils le répareront à l'avenir, mais c'est dans un mauvais endroit maintenant.
Aaron Schif

Je suis d'accord, la dernière version de haystack (2.1) ne fonctionne pas du tout avec ma version python 2.7 de django 1.4.
Chris Hawkes

19

Justin, j'essaierais d' abord djangosearch : Jacob Kaplan-Moss (développeur principal de Django) y travaille.

Dangers potentiels:

  • La page d'accueil avertit que l'API pourrait ne pas être entièrement stable

Des bénéfices potentiels:

  • "L'objectif à long terme est que cela devienne django.contrib.search."

45
La page indique maintenant "Ce projet n'est plus en cours de développement actif. Si vous recherchez une application de recherche en texte intégral django qui fonctionne avec plusieurs moteurs de recherche, consultez Haystack."
Tomas Andrle

18

Je recherche la même chose, comme beaucoup d'autres personnes. Espérons que django.contrib.search sera bientôt ajouté.

En attendant, voici ce que j'ai trouvé:

Pour moi, la plupart semblent assez compliqués et, franchement, un peu intimidants à mettre en œuvre. J'aimerais savoir ce que vous en pensez.



8

Je recommanderais Sphinx pour la recherche et l'agrégation de texte intégral, et django-sphinx est assez bon pour une utilisation en production. Nous avons constaté que Sphinx était le moyen le moins gourmand en ressources et le plus rapide pour indexer et rechercher nos documents et que django-sphinx était un bon wrapper au-dessus du client sphinx.

Le regroupement par agrégation est particulièrement agréable, si par exemple vous souhaitez afficher le nombre de documents avec une certaine balise ou par un certain auteur (ou les deux) correspondant à une recherche. En mémoire, les mises à jour des attributs étaient également pratiques, en particulier pour supprimer immédiatement les articles supprimés.


6

Merci Garth. J'avais vu que djangosearch voulait devenir la recherche officielle de Django, mais j'hésitais à l'utiliser car je ne trouvais aucune documentation! Heureusement, il y a un README en subversion que je n'avais jamais vu auparavant, et cela donne à l'API un aspect très cool:

# set up the model
class Event(models.Model):
    title = models.CharField(max_length=255)
    date = models.DateField()
    is_outdoors = models.BooleanField()

    index = djangosearch.ModelIndex(text=['title'], 
                                    additional=['date', 'is_outdoors'])

# run a search
results = Event.index.search("django conference")

6

J'avais juste besoin d'une solution très rapide et simple pour une application interne.

J'ai trouvé l'article Ajouter une recherche à Django en un clin d'œil , et cela a fonctionné à merveille pour moi!

De toute évidence, il manque la vitesse, l'évolutivité et les fonctionnalités des vrais projets comme Haystack, mais celui-ci est plus facile à mettre en place, et je n'ai vraiment besoin de rien d'autre que de la recherche par mot-clé ET.



2

Il semble que tout le monde ici ait manqué django-xappy

Après une évaluation rapide de tous les addons de recherche existants pour Django, j'ai trouvé celui-ci comme le plus flexible et le plus facile à utiliser. C'est difficile à certains endroits, mais c'est toujours le meilleur moyen d'utiliser la puissance du moteur de recherche Xapian dans les projets Django.


2

Vous voudrez peut-être regarder la recherche Django Solr (alias "Solango") qui est accompagnée d'une belle documentation pour vous aider à démarrer ...


1

Si vous avez une grande quantité de données à indexer ou si vous prévoyez un trafic élevé, je vous suggère d'utiliser un moteur de recherche externe, comme Solr . De cette façon, vous conserverez une approche sans partage et serez en mesure de faire évoluer les composants de votre site de manière indépendante.


1

Je pense que je vais devoir crier à Djapian.

Il est solide comme le roc ... il suffit de supprimer une distribution source et de jeter un coup d'œil à l'intérieur. Code de premier ordre, peu de commentaires tho ..

C'est encore un jeune projet logiciel, mais je pense que la communauté django devrait jeter son poids derrière celui-ci.


0

Merci Joe,

Nous avons décidé d'aller avec Tsearch2 et un adaptateur postgres personnalisé. Tsearch2 n'a pas besoin d'un processus supplémentaire pour s'exécuter, ce qui était pratique puisque nous sommes sur un hébergement WebFaction avec une mémoire limitée ... Ce n'est pas encore complètement terminé, mais semble être une bonne solution ...


0

J'ai trouvé Djoosh qui s'appuie sur le moteur de recherche externe Whoosh pur-python pour bien fonctionner avec mon cerveau 'Python'.


0

Si vous souhaitez utiliser un moteur de recherche tiers, je peux vous recommander Yahoo BOSS et django-bosssearch .

Yahoo BOSS est un service payant, mais il vous évite de configurer et de maintenir d'autres logiciels de recherche sur votre serveur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.