4. Le modèle
class Item < ActiveRecord::Base
acts_as_taggable
validates_presence_of :title, :url, :source, :summary, :thumbnail_img_tag, :pricing
validates_uniqueness_of :url # our key
define_index do
indexes title
indexes summary
indexes source, :facet => true
indexes tags.name, :as => :tag, :facet => true
indexes pricing, :facet => true
indexes language, :facet => true
has update_date
where "update_date <= curdate()"
set_property :delta => true
end
end
4
5. Processus d’import
• DSL (TinyTL)
• Tourne chaque heure
• Pour chaque source, récupère un feed ou une page html
• Normalise et conforme chaque item
• Ajoute et conforme les tags
• Upsert (update or insert) - clé = url cible
5
11. Consommation
• via le web => facettes + full-text
• RSS => sort by fraîcheur desc (feedburner MyBrand)
• Twitter => semi-automatique via bit.ly
11
12. Conclusions
• Contacter les partenaires = bien
• ThinkingSphinx = bien
• Code = une petite portion du travail
• Toute data doit généralement être nettoyée avant
consommation
12