Clustered Models

Posté par fantomas, le 22 décembre 2008 sous Développement

Je vous parlais récemment de l'application Django Clustered Sitemap, servant à établir la correspondance entre 2 objets sur des projets Django.

Après une review globale du code et l'ajout de certaines fonctionnalités, j'ai changé le nom du projet en Clustered models car il ne correspondait plus vraiment à la philosophie du projet.

La première modification à été d'ajouter une nouvelle version du sitemap, mais cette fois ci en nuage 2D.

Le code et les vues ont été rendu génériques pour en faciliter l'intégration et l'extensibilité.
Une feature intéressante est qu'il est possible de réutiliser la configuration des vues générique pour effectuer des groupements.

Ensuite un templatetags à été ajouté pour pouvoir voir les models associés à un autre model. Le résultat est qu'il est désormais possible de voir les articles associés sur le blog. :)

Le tout étant très facile a installer, voici un exemple du code pour réaliser mes sitemaps mélant les flatpages et les articles, dans le fichier urls.py du projet.

from clustered_models import VectorBuilder                                                                                                                                                                                                   
from clustered_models.clusterers import DimensionalClusterer                                                                                                                                                                                 
from clustered_models.clusterers import HierarchicalClusterer                                                                                                                                                                                

from django.contrib.flatpages.models import FlatPage

entry_conf = {'queryset': Entry.published.all(),
'fields': ['content', 'title', 'excerpt']}

flatpage_conf = {'queryset': FlatPage.objects.all(),
'fields': ['title', 'content']}

vector = VectorBuilder(entry_conf, flatpage_conf)

urlpatterns += patterns('',
(r'^sitemap/$', 'clustered_models.views.clustered_view',
{'vector': vector, 'clusterer': HierarchicalClusterer}),
(r'^cloud-sitemap/$', 'clustered_models.views.clustered_view',
{'vector': vector, 'clusterer': DimensionalClusterer}),
)

Je ne releaserais le module que si il y a un minimum d'intérêt pour ce projet, donc à vos commentaires :).

Partager : django intelligence python
Flux RSS des commentaires 2 Commentaires
  1. Shao197
    http://shao197.willbreak.it/

    C'est gourmand en ressources le calcul de correspondance ? Est-ce que tu refais ce calcul à chaque fois pour afficher les articles associés ?

  2. Fantomas
    http://fantomas.willbreak.it/

    Effectivement, cela peut être très gourmand en ressources.

    Cela dépends surtout de la quantité de données à analyser, mais il y a 2 points gourmands en ressources.

    Le premier est la construction du jeu de données qui va devoir fouiller sur toutes les entrées en base, pour ensuite effectuer un premier tri sur le contenu.

    Une méthode de cache est déjà implémentée pour résoudre ce problème, en prenant en compte les mises à jours sur la base de données.

    Le second point gourmand est le calcul de proximité entre les objets. Idem un système de cache a été mis en place pour ne calculer qu'une seule fois les données.

    Evidemment pour la taille de mon blog, ce calcul ne prend que peu de temps. Mais il faudra voir à changer de méthode sur une plus grosse volumétrie.

Poster un commentaire

Micro Blogging

Suivez mon actu sur Twitter.com...

Référencement

Quelques liens recommandés chaudement...

Last.fm

Ce que j'écoute actuellement...