30 votes

Solution de moteur de recherche pour Django qui fonctionne réellement?

L'histoire jusqu'ici:

Décidé d'aller avec Xapian de recherche backend, car il a tous les moteurs de recherche fonctionnalités que je recherchais, le sait Unicode, radical, a peu de dépendances et ne nécessite pas de ballonnement app-installation du serveur sur le dessus de cela.

Essayé de Django et la botte de Foin (plus xapian-botte de foin, le backend colle le code de la cravate botte de Foin à Xapian) parce qu'il a été publié sur certains blogs comme "travail". N'a pas fonctionné. Ni django botte de foin, ni le xapian-botte de foin projet de fournir une version de la combinaison qui fonctionne réellement ensemble. MAÎTRE des deux projets génère une erreur de Xapian, il n'est donc pas stable du tout. Botte de foin 1.0.1 et xapian-botte de foin 1.0.x/1.1.0 ne sont pas API-compatible. De Plus, dans une mini-installation de la botte de Foin 1.0.1 et xapian-botte de foin MAÎTRE, toute requête complexe rendements des résultats nuls en raison d'erreurs dans django botte de foin ou de xapian-botte de foin (je double-cela vérifié), peut-être parce que l'unité des essais de tester réellement les cas très simples, et sans bord-cas à tous.

Essayé Djapian. Le code source est criblé de fautes d'orthographe (vous l'esprit, dans les noms de variables, pas de commentaires), la documentation est également truffé d'ambiguïtés et des informations obsolètes qui ne mènera jamais à une installation de travail. Il n'est pas surprenant, les utilisateurs demandent rarement de fonctionnalités, mais comment le faire fonctionner dans la première place.

Le prochain sur la plaque: l'exploration de la Solr (installation d'un environnement Java plus Tomcat me donne des maux de tête, la machine est en RAM et CPU-contraint), ou Lucene (un peu moins de maux de tête, mais quand même).

Avant d'aller passer plus de temps avec une solution qui pourrait ou ne pourrait pas fonctionner comme annoncé, j'aimerais savoir: personne N'a jamais obtenir une véritable et réelle solution de recherche de travail dans Django? Je suis sérieuse. Je trouve ça vraiment frustrant de lecture sur "les grands problèmes de la plupart résolu", et réaliser que vous ne serez jamais obtenir une installation de travail à partir du code source, car, en fait, tous les blogueurs face à ceux qui sont "pour la plupart résolus les problèmes" ne suis jamais passé de base de l'installation et de copier-coller les tutoriels officiels.

Donc, voici les conditions:

  • doit être en mesure de rechercher pour 10-100 termes dans une requête
  • doit poignée + (terme doit être présent) et - (le terme ne doit pas être présent), ET/OU
  • doivent gérer groupement arbitraire (c'est à dire entre parenthèses ET/OU)
  • doit permettre Django-ORM filtrage avant ou après le texte intégral de recherche (c'est à dire pré-/post-traitement des résultats avec l'ensemble complet de filtres que Django connaît)
  • sinon, il doit y avoir une installation de bloc-extraction de l'ensemble de résultats et de la transformer en un QuerySet
  • devrait être de lumière sur la machine, donc pas de préférence gigantesque JVM et Java app-installation du serveur

Est-il quelque chose qui fait cela? Je ne suis pas intéressé par des preuves anecdotiques, ou des références à certains articles de blog qui affirment qu'elle doit être au travail. J'aimerais entendre parler de quelqu'un qui a fait un entièrement fonctionnel de l'installation de travail dans le monde réel, dans des conditions réelles, avec de vraies requêtes.

EDIT:

Permettez-moi de répéter que je ne suis pas tellement intéressé par des preuves anecdotiques que quelqu'un, quelque part, a un peu de lancer l'installation de travailler avec de quelconques propriétés. Je suis déjà allé là-bas, j'ai lu tous les blogs, listes de diffusion, j'ai contacté les auteurs, mais quand il est venu à la mise en œuvre effective de la des scénarios du monde réel, rien n'a jamais fonctionné comme annoncé.

Aussi, et un utilisateur ci-dessous fait le point ainsi, en considérant le coût total de possession de tout projet, je ne suis certainement pas intéressé à entendre que quelqu'un, quelque part a été en mesure de le retirer une fois un fournisseur parachuté dans un nombre inconnu de spécialistes de singe-patch de l'ensemble de l'installation avec le domaine spécifique de la connaissance de qui est documenté nulle part.

Donc, s'il vous plaît, si vous prétendez que vous avez une installation de travail qui fait satisfont aux exigences minimales pour l'une à part entière de la recherche (voir les conditions ci-dessus), veuillez fournir les renseignements suivants afin que nous puissions tous bénéficier d'une solution de recherche pour Django qui résout le problème:

  • exact distribution Linux, version,
  • de sortie exacte de la version de la botte de Foin (ou l'équivalent) et de la version de recherche en arrière-plan,
  • de sortie exacte de la version du moteur de recherche
  • public (!) de la documentation disponible, comment mettre en place tous les composants exactement de la manière que votre installation a été mis en place tels que les exigences minimales ci-dessus sont remplies.

Je vous remercie.

11voto

tux21b Points 17336

J'ai développé quelques applications Django avec xapian aussi de soutien. Le plus grand d'entre eux a un xapian base de données avec un indice de 8G de stocker 2,4 M de documents (y compris les messages du forum, wiki entrées, la planète des entrées et des entrées de blog) - toujours en croissance.

Dans l'ensemble je suis assez content de xapian. Il fonctionne très bien et est facile à utiliser. La seule chose que je n'aime pas, c'est que xapian ne fonctionne pas avec mod_wsgi (à l'exception du mode global) en raison d'un blocage. Si vous êtes obligé d'utiliser fastcgi (ou connectez-vous à xapian-tcpsrv ou écrire votre propre service).

Je vous recommande, pour utiliser le xapian-fixations directement. Xapian aujourd'hui propose tout un tas d'aides (TermGenerator, QueryParser etc), ce qui rend à la fois l'indexation et l'interrogation simple. En fait, il n'y a rien que je puisse l'imagerie qui justifierait une bibliothèque supplémentaire. À mon avis, ils sont tous plus complexes et ne permettent pas d'indice efficacement.

La seule chose dont vous avez besoin, c'est une certaine compréhension de la façon dont xapian est de travail. (Ce sont les termes? Quelles sont les valeurs? Ce qui est issu et où dois-je l'utiliser? et ainsi de suite). Vous pouvez trouver tous les sujets sur la xapian site, et dès que vous comprenez ces concepts, relations avec xapian deviendra facile.

Aussi, le xapian API est extrêmement stable. J'ai commencé à l'utiliser longtemps avant la version 1.0, et jamais eu de problèmes avec les changements de l'API ou les conflits de version. La seule chose qui a changé, c'est que toutes ces aides (analyseur de requête, générateur de jetons, etc.) J'ai une fois écrit pour mon projet Django sont désormais inutile, parce que ces cours ont fait leur chemin dans le xapian de base.

Donc, pour résumer, il suffit de donner de l'utilisation directe de xapian-reliures de l'essayer.

9voto

notanumber Points 345

Je peux témoigner de Django-botte de Foin avec le Xapian backend (Dans l'intérêt de la divulgation complète, je suis l'auteur de la xapian-botte de foin backend) dans la vraie vie, l'environnement de production. Nous utilisons actuellement la botte de Foin/Xapian sur plusieurs sites, le plus grand de ce qui a plus de 20 000 utilisateurs enregistrés et un Xapian base de données avec plus de 20 000 documents contenant plus de 143 000 de conditions uniques pour une taille totale de ~141mb.

Comme pour ne pas être en mesure d'obtenir n'importe quelle combinaison de botte de Foin et le Xapian backend de course, je vais vous avouer que je n'étais pas aussi assidue que je devrais avoir été avec mon marquage et donc il y a une certaine confusion avec les versions. Cependant, vous devez être en mesure d'utiliser l'actuel maître des deux bases de code sans problème. Si ce n'est pas le cas, je serais plus qu'heureux de vous aider avec des problèmes. Vous aurez besoin d'être un peu plus précis sur la question si. Tout simplement en disant: "il n'a pas de travail" n'est pas suffisamment d'informations.

Daniel et moi faisons de notre mieux pour répondre à toutes les questions ouvertes sur Github dans un temps opportun. Aussi, nous sommes généralement disponibles sur la #botte de foin canal IRC au cours de la journée et le django botte de foin du Groupe Google.

Les Versions utilisées:

  • Botte de foin 1.0 BETA avec Xapian-botte de Foin 1.1.0 BETA
  • Botte de foin 1.0.1 FINAL avec Xapian-botte de Foin 1.1.3 BETA

La plupart des sites que nous avons déployé avec la botte de Foin ont été en cours d'exécution Ubuntu 8.04 LTS avec Xapian 1.0.5

7voto

Peter Rowell Points 12444

Réponse courte: Non.

Nous avons renfloué et sommes partis avec une recherche personnalisée Google. Bien que le site ait plus de 10 000 pages consultables, nous conservons le flux du plan du site vers les 4 000 pages principales environ et cela coûte 250 $ / an, ce qui représente environ 2 heures de mon temps. Le client est satisfait et se sent à l'aise avec les résultats.

J'adorerais voir quelqu'un trouver une bonne solution FOSS, mais dans une situation commerciale, le TCO doit avoir un sens économique.

7voto

toastdriven Points 79

Les détails que vous avez demandé.

  • exact distribution Linux, la version de version d'Ubuntu 9.04 & 9.10
  • de sortie exacte de la version de la botte de Foin (ou équivalent) - botte de Foin 1.0 ainsi que maître
  • version de recherche backend - Le Solr & Whoosh backends inclus avec la botte de Foin
  • de sortie exacte de la version du moteur de recherche - Solr 1.3, Solr 1.4 & Whoosh 0.3.15
  • public (!) de la documentation disponible, comment mettre en place tous les composants exactement de la manière que votre installation a été mis en place tels que les exigences minimales ci-dessus sont remplies.

Au-delà de cela, c'est la configuration standard de bits à partir du tutoriel, en plus de toute supplémentaire, les remplacements d' (que je ne peux pas le lien, merci de Débordement de Pile) en tant que de besoin.

En tant que responsable de la botte de Foin, je suis activement à l'exécution de toutes les précédentes installations. La plus petite botte de Foin installation (botte de Foin 1.0 + Whoosh) est de ~600 documents. Un peu plus grand, un (botte de Foin maître + Solr 1.4) est ~4000 documents. Le plus grand déploiement, je suis conscient de (botte de Foin maître + Solr 1.4) est d'environ 3 millions de documents.

De manière générale, j'essaie d'éviter le Débordement de Pile, donc ne soyez pas surpris si vous voyez plus rien de moi. La liste de diffusion est le meilleur endroit pour le soutien, mais compte tenu de vos réponses jusqu'à présent, je suis sûr que vous préférez simplement la corbeille de moi ici.

1voto

Lakshman Prasad Points 24002

Je (et mes collègues) ont utilisé avec succès botte de Foin pour atteindre une assez bonne fonctionnalité de recherche.

Il est facile de commencer avec la botte de foin et whoosh backend; et le changement de l'Apache-Solr backend lorsque la performance de whoosh n'est pas acceptable.

Nous avons vraiment eu à se déplacer à écrire un poste détaillée à ce sujet avec des liens vers les projets pour lesquels il travaille.

Pour l'instant, je peux vous suggérer de jeter un oeil à cette recherche: http://www.webdevjobshq.com/search/?q=rails mis en œuvre à l'aide de la botte de Foin avec Apache-Solr backend. Ou ceci: http://www.govbuddy.com/search/?q=Roy

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X