| Module | FerretMethods |
| In: |
app/models/ferret_methods.rb
|
Parámetros y métodos comunes para todos los recursos que deben ser indexados por Ferret para las búsquedas. Algunos métodos son sobreescritos en los correspondientes modelos, si no se ajustan a estas definiciones por defecto
| FERRET_DEFAULT_FIELDS | = | [:title_es_for_ferret, :title_eu_for_ferret, :title_en_for_ferret, :body_es_for_ferret, :body_eu_for_ferret, :body_en_for_ferret, :tags_for_ferret, :speaker_for_ferret, :place_for_ferret, :pretty_published_at_for_ferret] | Campos en los que se buscará al hacer una búsqueda | |
| FERRET_PARAMS | = | {:single_index => true, :ferret => {:default_field => FERRET_DEFAULT_FIELDS}, :fields => {:title_es_for_ferret => {:boost => 10, :store => :yes}, :title_eu_for_ferret => {:boost => 10, :store => :yes}, :title_en_for_ferret => {:boost => 10, :store => :yes}, :body_es_for_ferret => {}, :body_eu_for_ferret => {}, :body_en_for_ferret => {}, :speaker_for_ferret => {:boost => 8}, :place_for_ferret => {:boost => 8}, :pretty_published_at_for_ferret => {:boost => 500}, :tags_for_ferret => {:boost => 6}, :show_in_agencia => {:index => :untokenized_omit_norms, :term_vector => :no}, :show_in_irekia => {:index => :untokenized_omit_norms, :term_vector => :no}, # Para mostrar solo las cosas publicadas (published_at > now) :published_at_for_ferret => {:index => :untokenized_omit_norms, :term_vector => :no}, # Para ordenar (mas preferencia los mas nuevos) :published_month_year_for_ferret => {:index => :untokenized_omit_norms, :term_vector => :no}, # En la agencia se pueden ver los eventos 3 dias antes de que empiecen :starts_at_in_agencia_for_ferret => {:index => :untokenized_omit_norms, :term_vector => :no}, :days_from_epoch_for_ferret => {:index => :untokenized_omit_norms, :term_vector => :no}}} | Parámetros para Ferret: campos indexados con sus pesos | |
| LANGUAGES | = | ['es', 'eu', 'en'] | Idiomas disponibles |
Días desde el 1 de marzo de 2009 hasta la fecha de publicacion. Se usa para dar prioridad en los resultados de busqueda a las noticias más recientes
# File app/models/ferret_methods.rb, line 123
123: def days_from_epoch_for_ferret
124: if self.respond_to?("published_at") && self.published_at
125: date = self.published_at.to_date
126: else
127: date = self.created_at.to_date
128: end
129: (date - Date.parse('2009-03-01')).to_s.to_i
130: end
Lugar de un evento
# File app/models/ferret_methods.rb, line 99
99: def place_for_ferret
100: place = ""
101: unless (self.respond_to?("draft?") && self.draft?)
102: place << place.tildes if self.respond_to?("place") && !self.place.nil?
103: place << city.tildes if self.respond_to?("city") && !self.city.nil?
104: end
105: return place
106: end
Fecha en formato de texto
# File app/models/ferret_methods.rb, line 86
86: def pretty_published_at_for_ferret
87: if (self.respond_to?("draft?") && self.draft?)
88: ""
89: else
90: if self.respond_to?("published_at") && self.published_at
91: LANGUAGES.inject("") {|str, l| str << "#{I18n.localize(self.published_at, :format => :long, :locale => l)} " }
92: else
93: LANGUAGES.inject("") {|str, l| str << "#{I18n.localize(self.created_at, :format => :long, :locale => l)} " }
94: end
95: end
96: end
Fecha de publicación en formato YYYYMMDD
# File app/models/ferret_methods.rb, line 57
57: def published_at_for_ferret
58: if self.respond_to?("published_at") && self.published_at
59: self.published_at.to_s(:number)
60: else
61: self.created_at.to_s(:number)
62: end
63: end
Fecha en formato YYYYMM. Se usa como campo para ordenar los resultados de la busqueda por fecha: Primero saldran las noticias del ultimo mes.
# File app/models/ferret_methods.rb, line 77
77: def published_month_year_for_ferret
78: if self.respond_to?("published_at") && self.published_at
79: self.published_at.strftime("%Y%m").to_i
80: else
81: self.created_at.strftime("%Y%m").to_i
82: end
83: end
Quien presenta
# File app/models/ferret_methods.rb, line 109
109: def speaker_for_ferret
110: sff = []
111: unless (self.respond_to?("draft?") && self.draft?)
112: LANGUAGES.each do |l|
113: if self.respond_to?("speaker_#{l}") && !self.send("speaker_#{l}").nil?
114: sff << self.send("speaker_#{l}").tildes
115: end
116: end
117: end
118: sff.uniq.join(" ")
119: end
Fecha de inicio en formato YYYYMMDD. Definido para los eventos, porque no deben mostrarse
los eventos programados para dentro de más de 3 días en la agencia
# File app/models/ferret_methods.rb, line 67
67: def starts_at_in_agencia_for_ferret
68: if self.respond_to?("published_at") && self.published_at
69: self.published_at.to_s(:number)
70: else
71: self.created_at.to_s(:number)
72: end
73: end