Commit 12687061 by Tran Hoang Viet

Merge remote-tracking branch 'origin/hotfix-1.0.1'

parents 467027ad 58360014
...@@ -5,7 +5,7 @@ module Solr extend ActiveSupport::Concern ...@@ -5,7 +5,7 @@ module Solr extend ActiveSupport::Concern
# callbacks # callbacks
def push_data_to_solr def push_data_to_solr
self.class.rsolr.add(self.slice(*self.class.solr_fields)) self.class.rsolr.add(self.slice(*self.class.solr_options_data[:fields]))
self.class.rsolr.commit self.class.rsolr.commit
end end
...@@ -16,26 +16,41 @@ module Solr extend ActiveSupport::Concern ...@@ -16,26 +16,41 @@ module Solr extend ActiveSupport::Concern
end end
module ClassMethods module ClassMethods
attr_accessor :solr_per_page, :solr_page, :solr_total_count, :solr_fields attr_reader :solr_options_data
def solr_options(fields = {}) def solr_options(fields = {})
@solr_per_page = fields[:per_page] || 5 @solr_options_data = {
@solr_fields = fields[:fields] || [] escape: true,
page: 1,
per_page: 5
}.merge(fields)
end end
def search(query, options = {}) def search(query, options = {})
return unless query.is_a?(Hash) return unless query.is_a?(Hash)
@solr_page = options[:page] || 1
query = query.inject('') { |str, item| str << "#{item.first}:(#{item.last})" << ' ' } @solr_options_data = solr_options_data.merge(options)
query = query.inject('') do |str, item|
if item.last.is_a?(Hash)
value = item.last[:value]
escape = item.last[:escape].nil? || item.last[:escape].present?
else
value = item.last
escape = solr_options_data[:escape].present?
end
value = Regexp.escape(value) if escape.present?
str << "#{item.first}:(#{value})" << ' '
end
results = rsolr.paginate( results = rsolr.paginate(
solr_page, solr_options_data[:page],
solr_per_page, solr_options_data[:per_page],
'select', 'select',
params: {q: query, fl: self.primary_key} params: {q: query, fl: self.primary_key}
) )
@solr_total_count = results['response']['numFound'].to_i @solr_options_data[:total_count] = results['response']['numFound'].to_i
parse(results['response']) parse(results['response'])
end end
...@@ -49,7 +64,9 @@ module Solr extend ActiveSupport::Concern ...@@ -49,7 +64,9 @@ module Solr extend ActiveSupport::Concern
end end
def kaminari_paginate def kaminari_paginate
Kaminari.paginate_array([], total_count: solr_total_count).page(solr_page).per(solr_per_page) Kaminari.paginate_array([], total_count: @solr_options_data[:total_count])
.page(solr_options_data[:page])
.per(solr_options_data[:per_page])
end end
def clear_solr_index def clear_solr_index
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment