Billets avec le tag “base de données”

Recherche en texte plein pour ActiveRecord, mise en oeuvre de acts_as_ferret

Une fonctionnalité de recherche rapide et efficace est une brique importante de toute application Internet. Lorsque l’on développe sans framework on utilise très souvent les fonctions de recherche en texte plein (full text) du moteur de base de données ou des librairies spécifiques. Ferret implémente en Ruby le moteur de recherche Apache Lucene (qui est également implémenté en PHP dans Zend_Search_Lucene). acts_as_ferret utilise Ferret pour intégrer une recherche en texte plein directement dans le modèle (ActiveRecord) d’un projet Rails.

Pour utiliser acts_as_ferret dans votre projet Rails vous devez commencer par vous assurer que vous disposez bien du gem ferret sinon vous devez l’installer en exécutant la commande :

gem install ferret

Vous devez ensuite soit installer le gem acts_as_ferret :

gem install acts_as_ferret

ou le plugin acts_as_ferret pour votre projet :

script/plugin install svn://projects.jkraemer.net/acts_as_ferret/tags/stable/acts_as_ferret

Dans les deux cas il faut ajouter la ligne suivante :

require 'acts_as_ferret'

A la fin de votre fichier environment.rb. Pour indiquer à Rails qu’un modèle doit être indexé par acts_as_ferret il suffit d’ajouter :

acts_as_ferret

dans votre modèle :

class Adresse < ActiveRecord::Base
	acts_as_ferret
end

Effectuer une requête

Vous pouvez désormais effectuer des requêtes d’interrogation pour retrouver une adresse :

Adresse.find_with_ferret("test")

Le premier paramètre est une requête au format FQL (Ferret Query Language), les paramètres suivants sont identiques à ceux utilisés dans des requêtes ActiveRecord :

Adresse.find_with_ferret(query,{ :limit => :all }, :conditions => ["status LIKE ?", :published])

Choisir les champs à indexer

Par défaut acts_as_ferret index tous les champs du modèle Active Record. Il est possible de modifier ce comportement en spécifiant les champs à indexer en paramètres de l’appel à acts_as_ferret dans la déclaration du modèle :

class Adresse < ActiveRecord::Base
	acts_as_ferret :fields => [:rue, :ville]
end

Gérer les accès concurrents

Acts_as_server utilise un index unique et ceci peut poser problème lors de tentatives d’accès concurrent à cet index (dans un environnement de production par exemple). Pour palier à ce problème, il est conseillé d’utiliser un serveur Drb comme expliqué ici.

Nous venons d’effectuer un rapide survol du plugin acts_as_ferret afin de débuter l’intégration d’une recherche en texte plein dans votre application Rails. Ce plugin permet beaucoup d’autres choses que je n’ai volontairement pas évoqué ici. Vous trouverez sûrement une réponse sur le wiki officiel du plugin.

Articles relatifs

Exemples/modèles de schémas de base de données

Le schéma de base de données est un point clé de toute application de gestion/traitement de données et même avec beaucoup d’expérience, il arrive parfois que l’on soit confronté à une situation “simple” mais pour laquelle le schéma de base de données est loin d’être évident.

Database Answers vous propose plusieurs centaines de schéma de base de données adaptés à des situations diverses et issus de cas concrets. Vous trouverez certainement un exemple proche de ce que vous cherchez à faire et même si celui-ci ne résout pas complètement votre problème, les pistes sont nombreuses pour réussir à construire LE schéma de base de données parfait pour votre application.

Articles relatifs

Environnements de développements PHP5/MySQL pré-packagés pour Windows

Pour développer avec Ruby On Rails sous Windows il y a l’incontournable InstantRails qui inclus Ruby on Rails et MySQL dans un package sans installation. Pour développer avec PHP5 le choix est plus vaste mais toutes les solutions ne se valent pas :

  • EasyPHP : le plus ancien et le plus connu (dans la communauté francophone) des package de développement PHP5/MySQL sous Windows. Les mises à jours sont peu nombreuses et EasyPHP a donc toujours “un train de retard” sur ses concurrents.
  • Mov’AMP : proposé comme une alternative sérieuse à EasyPHP lorsque celui-ci avait un retard trop conséquent (passage de PHP4 à PHP5), Mov’AMP s’appuie avant tout sur sa capacité à fonctionner depuis une clé USB. C’est un avantage indéniable mais le produit n’est plus maintenu et les serveurs ne sont donc plus à jour.
  • VertrigoServ : disponible en anglais uniquement, un produit mis à jour très régulièrement et qui inclus Zend Optimizer en plus de PHP5, MySQL et SQLite.
  • WampServer : produit bien mis à jour, maintenu par l’équipe “frenchie” de phpteam. Utilise un système d’add-on pour ajouter des fonctionnalités ou des composants (Zend Optimizer, Webalizer, PHP 4.4.7 …).
  • XAMPP : présente la particularité d’être disponible sur beaucoup de plateformes (Linux, Windows, Mac Os X et Solaris) et dans différentes langues. Très bien suivi (mis à jour à toutes les nouvelles versions d’un des packages). Dispose également de nombreux add-ons (PostGreSQL, ProFTPd, Python, Samba et d’autres…).

Ce comparatif n’a rien d’exhaustif mais permet de faire un rapide tour d’horizon des produits proposés tout en évitant les moins maitenus afin de débuter avec un système pérenne.

Pour ma part j’ai choisi de travailler avec VertrigoServ lors de mon passage à PHP 5.2 alors que j’utilisais MovAmp jusqu’à présent. Ce choix s’est fait avant tout parce que VertrigoServ n’inclus que ce dont j’ai besoin et qu’il est régulièrement mis à jour.

Par ordre de préférence je travaillerai donc en priorité avec WampServer, XAMPP ou VertrigoServ, puis avec EasyPHP et enfin avec MovAmp.

Articles relatifs

Modélisation de base de données en ligne

Afin de modéliser la base de données du projet OsiLink avant son implémentation sous MySQL, nous avons recherché le produit le plus efficace et intuitif pour modéliser une “petite” base de données relativement simple. Après avoir essayé sans succès Altova DatabaseSpy et MySQL Workbench (le successeur de Fabforce DB Designer mais qui est actuellement retiré temporairement des MySQL GUI tools en attendant une refonte majeure), nous avons finalement trouvé notre bonheur dans un petit outil simple et efficace, en ligne !

Rendez-vous ici pour tester WWW SQL Designer, un outil qui suffira pour la plupart des petits développements sérieux (sous-entendu documentés !) et qui semble être maintenu par une équipe active qui prévoit notamment de pouvoir faire du reverse engineering depuis un fichier SQL. Affaire à suivre donc et merci ajax ;-)

Articles relatifs


Creative Commons License