First version of Solr search.

This commit is contained in:
Matthew K. Fu JuYuan authored and Christophe Vilayphiou committed 2012-08-08 10:59:55 +08:00
1 parent ef96ec841a
commit 1cdc0e24bd
19 files changed
+1738 -62

No files matched your search

@@ -13,8 +13,12 @@ class Panel::Announcement::FrontEnd::BulletinsController < OrbitWidgetController
if !params[:search_query].blank?
search_cond = {:is_checked=>true,:is_hidden=>false,:is_pending => false}
search_cond.merge!({:bulletin_category_id => "#{params[:category_id]}" }) if !params[:category_id].blank?
search = Redis::Search.query("Bulletin", params[:search_query], :conditions =>search_cond,:limit=>Bulletin.all.count)
search_result = search.collect{|t| t["id"]}
@search = Bulletin.solr_search do
fulltext params[:search_query]
#with(:frontend_search,true)
end
search_result = @search.results.collect{|result| result.id}
@bulletins = Bulletin.all.available_for_lang(I18n.locale).can_display.any_in(_id:search_result).page( params[:page_main]).per(15)
else
+36 -18
View File
@@ -4,7 +4,7 @@ class Bulletin
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::MultiParameterAttributes
include Redis::Search
include Sunspot::Mongo
include Impressionist::Impressionable
BelongsToCategory = :bulletin_category
@@ -65,11 +65,29 @@ class Bulletin
after_save :save_bulletin_links
after_save :save_bulletin_files
redis_search_index(:title_field => :s_title,
:alias_field =>:s_title_en ,
:score_field => :view_count,
:condition_fields => [:is_checked,:is_hidden,:bulletin_category_id,:is_pending],
:ext_fields => [])
searchable do
text :titles do
title_translations.to_a.collect{|t| t[1]}
end
text :texts do
text_translations.to_a.collect{|t| t[1]}
end
# text :text do
# a = (title_translations["zh_tw"] + title_translations["en"])
# a
# end
boolean :frontend_search do
!is_hidden && !is_pending && is_checked
end
integer :view_count
string :bulletin_category_id
end
# redis_search_index(:title_field => :s_title,
# :alias_field =>:s_title_en ,
# :score_field => :view_count,
# :condition_fields => [:is_checked,:is_hidden,:bulletin_category_id,:is_pending],
# :ext_fields => [])
# def gen_title_for_search
@@ -78,21 +96,21 @@ class Bulletin
#alias_method
def s_title
self.title_translations["zh_tw"]
end
# def s_title
# self.title_translations["zh_tw"]
# end
def s_title_was
self.title_was["zh_tw"]
end
# def s_title_was
# self.title_was["zh_tw"]
# end
def s_title_en
self.title_translations["en"]
end
# def s_title_en
# self.title_translations["en"]
# end
def s_title_en_was
self.title_was["en"]
end
# def s_title_en_was
# self.title_was["en"]
# end
# def s_text_en
# Nokogiri::HTML(self.text.en).text
@@ -13,8 +13,12 @@ class Panel::News::FrontEnd::NewsBulletinsController < OrbitWidgetController
if !params[:search_query].blank?
search_cond = {:is_checked=>true,:is_hidden=>false,:is_pending=>false,:is_pending=>false}
search_cond.merge!({:news_bulletin_category_id => "#{params[:category_id]}" }) if !params[:category_id].blank?
search = Redis::Search.query("NewsBulletin", params[:search_query], :conditions =>search_cond,:limit=>NewsBulletin.all.count)
search_result = search.collect{|t| t["id"]}
@search = NewsBulletin.solr_search do
fulltext params[:search_query]
with(:frontend_search,true)
end
search_result = @search.results.collect{|result| result.id}
@news_bulletins = NewsBulletin.all.available_for_lang(I18n.locale).can_display.any_in(_id:search_result).page( params[:page_main]).per(10)
else
date_now = Time.now
+34 -18
View File
@@ -4,7 +4,7 @@ class NewsBulletin
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::MultiParameterAttributes
include Redis::Search
include Sunspot::Mongo
include Impressionist::Impressionable
BelongsToCategory = :news_bulletin_category
@@ -91,31 +91,47 @@ class NewsBulletin
"news_bulletin"
end
redis_search_index(:title_field => :s_title,
:alias_field => :s_title_en,
:score_field => :view_count,
:condition_fields => [:is_checked,:is_hidden,:news_bulletin_category_id,:is_pending],
:ext_fields =>[])
searchable do
text :titles do
title_translations.to_a.collect{|t| t[1]}
end
text :texts do
text_translations.to_a.collect{|t| t[1]}
end
integer :view_count
boolean :frontend_search do
!is_hidden && !is_pending && is_checked
end
string :news_bulletin_category_id
end
# redis_search_index(:title_field => :s_title,
# :alias_field => :s_title_en,
# :score_field => :view_count,
# :condition_fields => [:is_checked,:is_hidden,:news_bulletin_category_id,:is_pending],
# :ext_fields =>[])
# def gen_title_for_search
# # [s_title,s_title_en,s_text_en,s_text_zh_tw].join(' ')
# end
def s_title
self.title_translations["zh_tw"]
end
# def s_title
# self.
# end
def s_title_was
self.title_was["zh_tw"]
end
# def s_title_was
# self.title_was["zh_tw"]
# end
def s_title_en
self.title_translations["en"]
end
# def s_title_en
# self.title_translations["en"]
# end
def s_title_en_was
self.title_was["en"]
end
# def s_title_en_was
# self.title_was["en"]
# end
# def s_text_en
# Nokogiri::HTML(self.text.en).text