Comment configurer Django pour la recherche en texte intégral avec MySQL-InnoDB. Le moteur MySQL Myisam supporte la recherche en texte intégral mais j'utiliserai InnoDB. Est-ce la meilleure façon d'utiliser Sphinx? Si vous expliquez votre configuration, j'apprécierai. (Au fait, je me demande comment ça fonctionne avec postgresql aussi.)Recherche textuelle Django avec MySQL InnoDB
Répondre
Bien qu'il puisse être configuré pour communiquer automatiquement avec MySQL, Sphinx est vraiment un outil distinct pour MyISAM ou InnoDB. Il offre un bien meilleur traitement et de meilleures performances que la recherche fulltext simpliste dans MyISAM, mais bien sûr le prix est que l'interrogation avec des conditions basées sur la recherche et la base de données devient en même temps difficile. Vous pouvez le faire en utilisant SphinxSE (moteur de stockage) pour interroger et rejoindre via MySQL, mais ce n'est pas aussi flexible que de le garder dans le moteur de base de données et les jointures ne fonctionneront pas bien.
Sinon, vous pouvez adopter une approche hybride avec MyISAM et InnoDB. Mettez toutes vos données canoniques dans les tables InnoDB appropriées, et utilisez simplement MyISAM pour stocker fulltext searchbait. Pour les opérations normales, vous n'avez qu'à toucher le contenu InnoDB; Ce n'est que lorsque vous effectuez une recherche de texte intégral que vous devez rejoindre les tables MyISAM. Vous devez ensuite vous assurer de mettre à jour les tables MyISAM à partir de tout nouveau texte inséré dans les tables InnoDB après une transaction réussie. Alors que le manque de support des transactions dans MyISAM risque parfois de rendre les données incompatibles dans des conditions concurrentes ou erronées (un danger qui s'applique évidemment à la solution de stockage de texte intégral séparée comme Sphinx, Lucene et al), ce n'est pas un gros problème. réalité car c'est seulement le searchbait qui devient incohérent et non vos données réelles. Vous pouvez également saisir l'opportunité de traiter différemment le contenu de votre texte intégral, par exemple en appliquant un processus de traduction trivial, puisque MySQL ne l'implémente pas lui-même.
PostgreSQL possède son propre contenu en texte intégral basé sur l'opérateur @@
. Ce n'est pas tout à fait à la vitesse de Sphinx, mais bien au-delà de MyISAM FULLTEXT (par exemple, stemming, dictionnaires, meilleure gestion des valeurs de pertinence), et vous pouvez toujours le combiner librement avec d'autres conditions de requête.
La dernière fois que j'étais sur le point de faire une telle chose, je voulais essayer django-sphinx, ce qui pourrait être aussi le choix pour vous.
mai vous voulez jeter un oeil à Haystack
Recherche ne doit pas être difficile. Haystack vous permet d'écrire votre code de recherche une fois et de choisir le moteur de recherche sur lequel vous voulez qu'il s'exécute. Avec une API familière qui devrait faire en sorte que tout Djangonaut se sente à la maison et une architecture qui vous permette d'échanger des choses selon vos besoins, c'est comme ça que la recherche devrait être.
- 1. Django Sphinx Recherche textuelle
- 2. Penser sphinx/mysql pour la recherche non textuelle
- 3. MySQL InnoDB CASCADE?
- 4. Recherche plein texte sur la table MySql (Innodb vs ISAM)
- 5. Recherche textuelle et paramétrique évolutive (C#)
- 6. Django MySQL recherche plein texte
- 7. MySQL PBXT vs InnoDB
- 8. MySQL InnoDB: innodb_flush_method
- 9. MySql, InnoDB & Null Values
- 10. MySQL InnoDB ID doublés
- 11. Configuration de MySQL pour InnoDB
- 12. Fourchette MySQL INSERT INTO (InnoDB)
- 13. MySQL InnoDB question de blocage
- 14. Cakephp Recherche pour MySQL
- 15. Deadlock trouvé dans MySQL (InnoDB)
- 16. Comment faire une recherche textuelle textuelle dans Postgres qui tire parti de l'index de recherche en texte intégral?
- 17. Recherche plein texte like in InnoDB
- 18. recherche avancée avec mysql
- 19. Les transactions ne sont pas annulées avec MySQL/InnoDB
- 20. Que faire avec l'erreur MySQL InnoDB dans MacOSX?
- 21. Utiliser mysql innodb comme une file d'attente?
- 22. L'insertion de MySQL InnoDB est très lente
- 23. Référence clé étrangère dans mysql innodb
- 24. Mysql InnoDB fusionner/copier des données
- 25. mysql: Comment libérer de l'espace (innodb)
- 26. Mysql InnoDB "erreur 32" sur Windows
- 27. Mysql InnoDB optimisation des performances et indexation
- 28. mysql recherche plein texte
- 29. Recherche textuelle et remplacement dans une colonne XML
- 30. mysql btree index sur les tables InnoDB?