Je cherche à utiliser Lucene et/ou Solr pour fournir la recherche dans une application Web basée sur SGBDR. Malheureusement pour moi, toute la documentation que j'ai parcourue traite de la façon d'extraire les données de l'index; Je suis plus préoccupé par la façon de construire un index utile. Existe-t-il des «meilleures pratiques» pour ce faire?Existe-t-il un ensemble de bonnes pratiques pour la construction d'un index Lucene à partir d'une base de données relationnelle?
Répondre
Nous déployons notre première application qui utilise Solr ce soir. Avec Solr 1.3, ils ont inclus DataImportHandler qui vous permet de spécifier vos tables de base de données (ils les appellent entités) ainsi que leurs relations. Une fois définie, une simple requête HTTP entraînera une importation de vos données.
Jetez un oeil à the Solr wiki page for DataImportHandler pour plus de détails.
En guise d'introduction:
Brian McCallister a écrit un billet de blog Nice: Using Lucene with OJB.
Est-ce que plusieurs applications vont écrire dans la base de données? Si c'est le cas, c'est un peu compliqué; vous devez avoir un mécanisme pour identifier les nouveaux enregistrements à fournir à l'indexeur Lucene.
Un autre point à considérer est que vous voulez un index qui couvre toutes vos tables, ou un index par table. En général, je recommande un index, avec un champ dans cet index pour indiquer de quelle table provient l'enregistrement.
Hibernate prend en charge la recherche de texte intégral si vous souhaitez rechercher des objets persistants plutôt que des documents non structurés.
Il existe un projet OpenSymphony appelé Compass dont vous devez être conscient. Je suis resté loin de lui-même, principalement parce qu'il semble être plus compliqué que la recherche doit être. De plus, comme je peux le constater dans la documentation (j'avoue que je n'ai pas trouvé le temps nécessaire pour tout lire), il stocke les segments de Lucene comme des blobs dans la base de données. Si vous connaissez l'architecture Lucene, Compass implémente un répertoire Lucene au-dessus de la base de données. Je pense que c'est la mauvaise approche. Je tirerais parti de la prise en charge intégrée de la base de données pour l'indexation et implémenter un IndexReader Lucene à la place. La même critique s'applique aux implémentations de cache distribué, etc.
- 1. Utilisation de Lucene comme une base de données relationnelle
- 2. Bonnes pratiques pour la construction et l'emballage sur AIX
- 3. Base de données relationnelle
- 4. XSD neutre de base de données standard pour décrire un schéma de base de données relationnelle
- 5. Quelles sont les meilleures pratiques pour interroger des données binaires à partir d'une base de données?
- 6. Zend Lucene Index Merge
- 7. Structures de données persistantes efficaces pour la base de données relationnelle
- 8. base de données relationnelle et la structure de réseau
- 9. Index de base de données
- 10. Question de modèle de conception de base de données relationnelle - base de données Massive Read Only
- 11. Bonnes ressources pour la conception de bases de données relationnelles
- 12. Firefox Extensions - bonnes pratiques
- 13. Bonnes pratiques IoC & Interfaces
- 14. Délais de session en PHP: bonnes pratiques
- 15. Articles de plusieurs catégories de bonnes pratiques
- 16. Seam Bonnes pratiques
- 17. ORM et index de base de données
- 18. Comment puis-je obtenir les meilleurs termes pour un sous-ensemble de documents dans un index Lucene?
- 19. Stratégies pour maintenir un index Lucene à jour avec les modifications du modèle de domaine
- 20. Conseils rapides sur la conception de base de données relationnelle pour MySQL
- 21. Stockage d'objets R dans une base de données relationnelle
- 22. Comment définir un index de base de données dans HoboFields?
- 23. Base de données orientée objet Objet Vs Base de données relationnelle
- 24. Notifier objet conteneur: bonnes pratiques
- 25. Optimisation/Bonnes pratiques Outil de création de rapports Inetsoft Style?
- 26. Bonnes pratiques pour résister à l'éclatement de la circulation le jour du lancement
- 27. Bonnes pratiques pour créer des scripts de service ou de démon Java
- 28. Zend Framework: Utilisation de modèles et de vues, bonnes pratiques
- 29. Meilleures pratiques de gestion des exceptions de base de données
- 30. Connexion de la base de données à partir de l'applet